Основные объекты: Регистры сведений. Часть 4. Регистры сведений, подчиненные регистратору

Уборщицы разносили чай, бегали с бумажками
из регистратуры в личный стол, ничуть
не удивляясь тому, что личный стол
помещается на корме, а регистратура на носу.
(И. Ильф, Е. Петров. Двенадцать стульев)


В предыдущих разделах был рассмотрен независимый регистр сведений (с ручным способом записи). Теперь рассмотрим регистр сведений с записью регистратором.

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

Сформируем регистр сведений “ЦеныПоставщиков”, который содержит приходные цены на номенклатуру. Этот регистр сведений будет периодическим (периодичность – по позиции регистратора, то есть она зависит от периодичности регистратора), режим записи “Подчинение регистратору”:

Для того, чтобы в поле “Периодичность” появилась опция “По позиции регистратора”, нужно сначала выбрать режим записи “Подчинение регистратору”.

На закладке “Данные” определим два измерения:
- “Поставщик” (тип “СправочникСсылка.ПоставщикиИПотребители”) и
- “Номенклатура” (тип “СправочникСсылка.Номенклатура”),
а также один ресурс “Цена” (тип Число, 10, 2):

На закладке “Формы” настроим форму списка и форму набора записей аналогично тому, как это делалось раньше.

Создание формы набора записей производится путем добавления к форме списка:

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

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

Для этого откроем свойства документа “Приходная” на закладке “Движения”:

Обратите внимание, что в нижней части окна закладки “Движения” документа “Приходная” уже появилось название регистра сведений “Цены поставщиков”, так как на предыдущем шаге мы поставили галочку “Приходная” на закладке “Регистраторы” регистра сведений “Цены поставщиков”.

Для настройки порядка проведения документа используем Конструктор движений:

Необходимо задать табличную часть “Товары”:

Заполняем выражения в полях регистратора с помощью кнопки “Заполнить выражения”:

Если какое-либо выражение остается незаполненным, то это можно сделать вручную. Для более быстрого копирования в поле “Выражение” реквизитов документа можно дважды щелкнуть левой кнопкой мыши по соответствующей строке в разделе “Реквизиты документа” в правой верхней части конструктора.

На последнем этапе работы Конструктора движений, в разделе “Модуль объекта” документа “ПоступлениеТоваров” автоматически формируется процедура “ОбработкаПроведения”. Сформированный текст процедуры “ОбработкаПроведения” приводится ниже:

Процедура ОбработкаПроведения(Отказ, Режим)

//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Для Каждого ТекСтрокаТовары Из Товары Цикл
// регистр ЦеныПоставщиков
Движение = Движения.ЦеныПоставщиков.Добавить();
Движение.Период = Дата;
Движение.Поставщик = Поставщик;
Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
Движение.Цена = ТекСтрокаТовары.Цена;
КонецЦикла;
// записываем движения регистров
Движения.ЦеныПоставщиков.Записать();
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры

В общем случае, просмотр и редактирование модуля объекта производится с вкладки “Прочее” (Прочее - Модуль объекта). При необходимости, текст данной процедуры можно скорректировать вручную.

Упражнения: 1. Подробно разберите код, сформированный Конструктором движений регистров.
2. Закомментируйте по одной каждую строку данного кода и проверьте, как это отразится на результате выполнения программы.

Проверим работоспособность созданной нами программы в пользовательском режиме 1С. Для этого необходимо перезаписать в пользовательском режиме несколько документов “Приходная” (нажав кнопку “OK” в форме каждого из указанных документов). После этого в форме списка документа “Приходная” рядом со строками проведенных документов появятся значки :

В результате, регистр сведений “Цены поставщиков” (Операции – Регистр сведений – Цены поставщиков) приобретет следующий вид:

К регистру сведений “Цены поставщиков” можно будет перейти, воспользовавшись кнопкой командной панели “Перейти” на форме списка документа “Приходная”:

Однако в этом случае мы получим цены поставщиков только по выделенной строке (в приведенном примере – по приходной накладной № 2 от 27.11.2009).