20.14. Создание движений документа ПриходнаяНакладная

64. Создайте движение: в окне Конфигуратора выберите на дереве объект Документы,  выберите ПриходнаяНакладная, М2, выберите Движения, выберите Регистры накопления, выберите ОстаткиМатериалов, выберите Конструктор движений, выберите Тип движения регистра — Приход, в поле Табличная часть выберите табличную часть нашего документа Материалы, нажмите Заполнить выражение, в качестве материала в регистр будет записан материал из табличной части документа, в качестве склада - склад, указанный в шапке документа, а в качестве количества - количество из табличной части документа, нажмите ОК.

Рисунок 20.35. Конструктор движений

Конструктор движений

Рисунок 20.36. Конструктор движений-2

Конструктор движений-2

Рисунок 20.37. Конструктор движений-3

Конструктор движений-3

Пример 20.6. Обработчик события "ОбработкаПроведения" объекта конфигурации Документ

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


Конструктор создал обработчик события «ОбработкаПроведения» объекта конфигурации Документ и поместил его в модуль объекта.

Внутри обработчика расположен цикл, который предназначен для перебора строк табличной части нашего документа. В цикле обращение к табличной части документа происходит по имени («Материалы»), а строки табличной части документа представляют собой коллекцию значений, для перебора которой можно использовать конструкцию Для каждого ... из ... цикл.

Объект встроенного языка ДокументОбъект имеет свойство «Движения». Оно возвращает коллекцию наборов записей регистров, которые принадлежат этому документу. К набору записей документа, принадлежащему конкретному регистру, можно обратиться, указав через точку имя этого регистра.

Таким образом, в первой строке тела цикла мы добавляем к набору записей, который создает наш документ в регистре, новую запись и сохраняем ее в переменной «Движение».

Затем мы присваиваем нужные значения всем полям этой записи и после перебора всех строк документа (после завершения циклов) «одним махом» записываем в регистр «ОстаткиМатериалов» весь набор записей движений документа.

76 . Выберите Отладка | Начать отладку, на появившийся вопрос: редактируемая конфигурация отличается от конфигурации базы данных. Обновить конфигурацию базы данных? выберите Да, в окне Реорганизация информации выберите Принять.

77. Откройте документ: выберите Операции | Документы, выберите документ ПриходнаяНакладная,

78. Откройте регистр: выберите Операции | Регистр накоплений, выберите ОстаткиМатериалов, разместите оба окна ПриходнаяНакладная и ОстаткиМатериалов рядом.

79. Перепроведите документ: выберите документ ПриходнаяНакладная, М2,нажмите ОК. Обратите внимание, что при проведении приходной накладной появляются соответствующие записи в регистрах накопления.

Рисунок 20.38. Движения документа Приходная накладная

Движения документа Приходная накладная

80. Самостоятельно. Создайте движение документа ОказаниеУслуги. Но учтите, что этот документ должен расходовать материалы.: см. 74 (выберите тип движения регистра — Расход).

81. Проверьте работу движения документа ОказаниеУслуги: см. 76-79.