Основные документы регистратора. V8: Использование регистратора в запросах


Ключевые слова: Регистратор, запрос, периодичность

Регистратор - это документ, сделавший движение по регистру накопления или регистру сведений с режимом записи "Подчинение регистратору".

Отклонясь от темы, замечу, что есть один нюанс.

Движения могут быть сделаны в любом программном модуле, а не обязательно в обработке проведения документа.
То есть, можно написать, к примеру, обработку, которая будет создавать движения по регистру накопления и в качестве регистратора указывать какой-либо документ, для которого в конфигураторе выбрана возможность быть регистратором движений по этому регистру.
ПриходнаяНакладная = Документы.ПриходнаяНакладная.СоздатьДокумент(); ПриходнаяНакладная.Записать(); Товар = Справочники.Товары.СоздатьЭлемент(); Товар.Записать(); НаборЗаписей = РегистрыНакопления.Товары.СоздатьНаборЗаписей(); НоваяЗапись = НаборЗаписей.ДобавитьПриход(); НоваяЗапись.Период = РабочаяДата; НоваяЗапись.Регистратор = ПриходнаяНакладная.Ссылка; НоваяЗапись.Товар = Товар.Ссылка; НоваяЗапись.Количество = 1 ; НаборЗаписей.Записать();

Теперь вернемся к теме статье.

Регистратор не является ни измерением, ни ресурсом, по сути это служебный реквизит, уточняющий, то есть дополняющий другой служебный реквизит, период.
Это накладывает особенности на использование этого поля в запросах.

Первой особенностью является то, что в виртуальных таблицах регистров накопления "Остатки и обороты" это поле недоступно до тех пор, пока в параметре виртуальной таблицы "Периодичность" не будет выбрано одно из значений: "Запись", "Регистратор" или "Авто".
Последнее значение можно выбрать только в 1С версии 8.1.

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

И, наконец, последней особенностью является то, что регистратор нельзя использовать в запросе в разделе ИТОГИ без предварительно идущего периода.
То есть, если, к примеру, в запросе хочется сделать группировку по регистратору, то требуется сделать группировку по периоду, а только уже после нее группировку по регистратору.
В противном случае не гарантируется правильность расчета итоговых значений.
То есть, вместо
ВЫБРАТЬ ТоварыОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток, ТоварыОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход, ТоварыОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход, ТоварыОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток ИЗ РегистрНакопления.Товары.ОстаткиИОбороты(, Регистратор,) КАК ТоварыОстаткиИОбороты ИТОГИ СУММА(КоличествоНачальныйОстаток), СУММА(КоличествоПриход), СУММА(КоличествоРасход), СУММА(КоличествоКонечныйОстаток) ПО ТоварыОстаткиИОбороты.Товар, ТоварыОстаткиИОбороты.Регистратор
будет корректно написать
ВЫБРАТЬ ТоварыОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток, ТоварыОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход, ТоварыОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход, ТоварыОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток ИЗ РегистрНакопления.Товары.ОстаткиИОбороты(, Регистратор,) КАК ТоварыОстаткиИОбороты ИТОГИ СУММА(КоличествоНачальныйОстаток), СУММА(КоличествоПриход), СУММА(КоличествоРасход), СУММА(КоличествоКонечныйОстаток) ПО ТоварыОстаткиИОбороты.Товар, ТоварыОстаткиИОбороты.Период, ТоварыОстаткиИОбороты.Регистратор

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

Обязательный стандартный реквизит регистра накопления - регистратор:

В наиболее типовом случае, регистратор - это документ, при проведении которого формируются записи регистра. Записи имеют смысл только в том случае, если регистратор существует; при удалении документа-регистратора записи также будут удалены. Перечень документов-регистраторов задается на соответствующей закладке регистра накопления:


Тем не менее, программно можно сделать запись и без документа-регистратора (но при этом все равно подразумевается, что регистратор есть). Также, формирование записей может происходить не только в обработке проведения, но и по каким-то иным событиям, строгих ограничений тут нет.

Вопрос 12.12 экзамена 1С:Профессионал по Платформе. В какой момент времени могут формироваться записи в регистре накопления?

  1. При проведении документа
  2. При записи документа
  3. При заполнении документа
  4. Верны все ответы

Правильный ответ четвертый.

Вопрос 12.13 экзамена 1С:Профессионал по Платформе. Выберите обязательное условие по отношению к Регистратору при записи данных в регистр накопления

  1. Документ-регистратор должен быть проведен
  2. Документ-регистратор должен быть записан
  3. Документ-регистратор не должен быть помечен на удаление
  4. Верны все варианты

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

Вопрос 12.14 экзамена 1С:Профессионал по Платформе. Выберите верное утверждение по отношению к полю Регистратор

  1. Поле Регистратор может содержать пустую ссылку на любой документ
  2. Поле Регистратор может содержать пустую ссылку только на документ регистратор
  3. Поле Регистратор может содержать ссылку на любой документ
  4. Поле Регистратор может содержать не пустую ссылку только на документ регистратор

Правильный ответ четвертый, тип контролируется.

Вопрос 12.15 экзамена 1С:Профессионал по Платформе. Как определить тип данных поля Регистратор?

  1. Тип определяется на закладке "Регистраторы" в окне редактирования объекта конфигурации
  2. Тип определяется на закладке "Данные" по кнопке "Стандартные реквизиты"
  3. Тип определяется с помощью палитры свойств
  4. Верны ответы 1 и 2
  5. Верны все варианты

Правильный ответ первый, скриншот выше.

Вопрос 12.16 экзамена 1С:Профессионал по Платформе. Какой тип можно определить для поля "регистратор"?

  1. СправочникСсылка
  2. ДокументСсылка
  3. ЛюбаяСсылка
  4. ДокументСсылка.<ИмяДокумента>

Правильный ответ четвертый, список типов регистраторов вполне конкретен, см. предыдущий вопрос.

Вопрос 12.17 экзамена 1С:Профессионал по Платформе. Выберите верное утверждение:

  1. Для каждого типа документа обязательно создается отдельный регистр накопления
  2. Один регистр накопления может быть связан с любым количеством типов документов
  3. Один тип документа может быть связан с любым количеством регистров накопления
  4. Верны варианты 2 и 3
  5. Верны все варианты

Правильный вариант четвертый, сочетания документов и регистров возможны как "много ко многим".

Вопрос 12.18 экзамена 1С:Профессионал по Платформе. Выберите верное утверждение существования записей в регистре накопления

  1. Записи могут существовать только при наличии в базе документа-регистратора
  2. При удалении документа регистратора записи автоматически удаляются из базы
  3. Записи могут существовать без наличия документа регистратора, при использовании плана обмена, что может привести к нарушению ссылочной целостности информационной базы
  4. Верны варианты 1 и 3
  5. Верны варианты 2 и 3
  6. Верны все варианты

Правильный ответ пятый - при определенных условиях записи могут существовать и без регистратора, но такая ситуация ошибочна.

Вопрос 12.75 экзамена 1С:Профессионал по Платформе. Каким образом связана информация в наборе записей регистра с регистратором?

  1. Дата документа регистратора должна совпадать с периодом в регистре
  2. Дата документа регистратора должна совпадать с периодом регистра только при оперативном проведении
  3. Дата документа регистратора никак не связана с периодом регистра

Правильный ответ третий - привязки нет. Дата записи регистра определяется программно и может как совпадать с датой документа, так и быть вообще любой иной.