8.х как сделать запрос к регистру сведений

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем TODD22, 14 июн 2010.

  1. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    у меня есть 2 регистра сведений. График монтажей и График доставок. они переодические(период 1секунда) и подчинены регистратору.

    я же делаю на их основе графики. по сути простые мне надо выводить в табличное часть текущие записи. но вот мне их желательно выводить за 3 дня. как это организовать? то есть за текущий день и за 2 следующих.
  2. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.400
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    Код:
    ГДЕ
    РегистрСведений.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
    
  3. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    а ещё подскажите по отборам в регистре. у меня он подчинён регистратору.
    пишу вот такой код:
    Код:
    НабЗап = РегистрыСведений.ГрафикМонтажей.СоздатьНаборЗаписей();
    НабЗап.Прочитать();
    НоваяЗапись = НабЗап.Добавить();
    НоваяЗапись.Период = ТекущаяДата();
    НоваяЗапись.Контрагент = Объект.Заказчик;
    НоваяЗапись.Монтажник1 = Объект.Сотрудник1;
    НоваяЗапись.Монтажник2 = Объект.Сотрудник2;
    НоваяЗапись.ДатаМонтажа = Объект.ДатаМонтажа;
    НабЗап.Записать();
    
    
    выдаёт ошибку:
    {Документ.Монтаж.Форма.ФормаДокумента.Форма(33)}: Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр сведений: График монтажей)
    НабЗап.Записать();
    по причине:
    Ошибка записи! Не установлен отбор по регистратору (Регистр сведений: График монтажей)
    подскажите как мне этот отбор сделать?
  4. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.400
    Симпатии:
    40
    Баллы:
    54
    В синтаксис-помощнике было подробно описано.
    Вы работаете с набором записей, есть определённые требования накладываемые на этот объект.

    На сколько я понимаю Вы пытаетесь создать новую запись. Изучите
    К тому же, в Вашем случае, это целый набор записей, а не одна выделенная.

    В Вашем слчае целесообразно использовать менеджер записей (СоздатьМенеджерЗаписи)
    Пример использования из синтаксис - помощника

    Код:
    Курс = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();
    Курс.Валюта = ВыбВалюта;
    Курс.Период = ТекущаяДата();
    Курс.Прочитать();
    Если Не Курс.Выбран() Тогда
    Курс.Период = ТекущаяДата();
    Курс.Валюта = ВыбВалюта;
    Курс.Курс = 41.35;
    Курс.Кратность = 1;
    КонецЕсли;
    Если ВвестиЧисло(Курс.Курс, "Введите курс на сегодня",15,5) Тогда
    Курс.Записать();
    КонецЕсли;
    
    
  5. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    а у меня регистр то подчинённый регистратору. вопрос ещё в том что а когда следует применять подчинённый регистратору, а когда нет?
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Вот пример записи в регистр сведений, подчиненый регистратору.
    Код:
    НаборЗаписей = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьНаборЗаписей();
    
    НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор);
    
    НоваяЗапись = НаборЗаписей.Добавить();
    
    НоваяЗапись.Период 			   = ВыбранныйРегистратор.Дата;
    НоваяЗапись.Номенклатура 	   = ВыбраннаяНоменклатура;
    НоваяЗапись.ДоговорКонтрагента = ВыбранныйДоговор;
    НоваяЗапись.ЛимитПоставщика    = 50;
    
    НаборЗаписей.Записать();
    
    
    Здесь запись выполняется с замещением, т.е. существующие записи этого регистратора в регистре сведений будут удалены.

    Чтобы добавить записи к существующим записям регистратора, надо использовать:
    Код:
    НаборЗаписей.Записать(Ложь);
    
    при этом естественно позаботится о том чтобы значения измерений были уникальны.
    (взято из книги "Простые примеры разработки")
  7. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    вот написал так:
    Код:
    ДатаНачала = НачалоДня(ТекущаяДата());
    ДатаОкончания = НачалоДня(ТекущаяДата()+259200);
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
    | ГрафикМонтажей.Контрагент,
    | ГрафикМонтажей.ДатаМонтажа,
    | ГрафикМонтажей.Монтажник1,
    | ГрафикМонтажей.Монтажник2,
    | ГрафикМонтажей.НомерДоговора
    |ИЗ 
    | РегистрСведений.ГрафикМонтажей КАК ГрафикМонтажей
    |ГДЕ ГрафикМонтажей.Период МЕЖДУ &ДатаНачала И &ДатаОкончания";
    Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
    Выборка = Запрос.Выполнить().Выбрать();
    
    
    подскажите где ошибка? то есть у меня выводит за все дни.
  8. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Подчинен регистратору, когда движение по регистру делает документ. Например прием на работу, или увольнение изменяет состояние регистра состояние работников. А вот регисрт сведений графики работы, он не подчинен регистратору. т.к нет необходимости.

    п поводу запроса, то вы в выборку добавте поле Период и увидетите что все записи лежат в периоде который вам надо. Если надо что бы дата монтажа была в периоде то на нее условия накладывайте

Поделиться этой страницей