Движения документа – это записи в регистрах, которые создаются в процессе проведения документа
и отражают изменения, производимые документом. Откроем окно редактирования объекта
конфигурации Документ ПриходнаяНакладная.
Перейдем на закладку Движения и в списке регистров конфигурации отметим регистр накопления ОстаткиМатериалов (рис. 4.3):

Рис.
4.3. Отметим регистр накопления и воспользуемся конструктором
движений…
Обратите внимание, что сразу после отметки выбранного
регистра становится доступной кнопка Конструктор движений. Этим конструктором мы и воспользуемся.
Конструктор устроен просто (рис. 4.4). В списке
Регистры перечислены регистры, в которых документ может создавать движения. В нашем
случае там пока один регистр ОстаткиМатериалов.
В списке Реквизиты документа должны находиться исходные данные для создания движений.
А в таблице Поле – Выражение должны быть заданы формулы, по которым будут вычисляться значения измерений
и ресурсов регистра при записи движений.

Рис.
4.4. Конструктор движений
Обратите внимание, что по умолчанию конструктор предлагает
нам создавать движения прихода (Тип движения регистра – Приход, символ + рядом с названием регистра) по регистру ОстаткиМатериалов. Это нас вполне устраивает, ведь документ ПриходнаяНакладная и должен приходовать материалы.
В поле выбора Табличная часть выберем табличную часть нашего документа – Материалы. Список реквизитов документа автоматически заполнится реквизитами нашей
табличной части. Теперь нажмем кнопку Заполнить выражения.
В нижнем окне сформируется соответствие полей и выражений
(рис. 4.5).

Рис.
4.5. Выберем табличную часть и нажмем «Заполнить выражения»…
Как видите, конструктор движений установил соответствия
подходящим образом: в качестве материала в регистр будет записан материал из табличной
части документа, в качестве склада – склад, указанный в шапке документа, а в качестве
количества – количество из табличной части документа.
Нажмем кнопку OK и посмотрим, какой
текст сформировал конструктор в модуле объекта (листинг 4.1):
Листинг
4.1.
Процедура ОбработкаПроведения()
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
//
Данный фрагмент построен конструктором.
//
При повторном использовании конструктора,
//
внесенные вручную изменения будут утеряны!!!
Для
Каждого ТекСтрокаМатериалы Из Материалы Цикл
//
Регистр ОстаткиМатериалов Приход
Движение
= Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения
= ВидДвиженияНакопления.Приход;
Движение.Период
= Дата;
Движение.Материал
= ТекСтрокаМатериалы.Материал;
Движение.Склад
= Склад;
Движение.Количество
= ТекСтрокаМатериалы.Количество;
КонецЦикла;
//
}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Конструктор создал обработчик события ОбработкаПроведения объекта конфигурации Документ и поместил его
в модуль объекта.
Внутри обработчика расположен цикл, который предназначен
для перебора строк табличной части нашего документа. В цикле обращение к табличной
части документа происходит по имени (Материалы), а строки табличной части документа представляют собой коллекцию значений,
для перебора которой можно использовать конструкцию Для Каждого … Из … Цикл.
Объект встроенного языка ДокументОбъект имеет свойство Движения. Оно возвращает коллекцию наборов записей регистров,
которые принадлежат этому документу. К набору записей документа, принадлежащему
конкретному регистру, можно обратиться, указав через точку имя этого регистра.
Таким образом, в первой строке тела цикла мы добавляем
к набору записей, который создает наш документ в регистре, новую запись и сохраняем
ее в переменной Движение.
Затем мы присваиваем нужные значения всем полям этой
записи и после перебора всех строк документа (после завершения цикла) «одним махом»
записываем в регистр ОстаткиМатериалов весь набор записей
движений документа.
Посмотрим, как это работает. Запустим 1С:Предприятие
в режиме отладки и откроем одновременно два окна: список документов ПриходнаяНакладная и список регистра накопления ОстаткиМатериалов.
Откроем документ Приходная накладная №1 и нажмем OK. Обратите внимание, что при проведении приходной
накладной появляются соответствующие записи в регистрах накопления (рис. 4.6):

Рис.
4.6. Взаимодействие документа и регистра
Аналогичные действия проделаем
и с документом Приходная
накладная №2.