В 1C:EDT
страницаВ 1C:EDT
Основные действия по формированию движений вам уже знакомы по документу Приходная накладная, но для документа Оказание услуги будет несколько отличий.
Во-первых, поскольку документ ОказаниеУслуги должен расходовать материалы, поэтому в конструкторе движений в строке ВидДвиженияНакопления вам нужно выбрать Расход.
Во-вторых, после автоматического заполнения (после нажатия
) поле Материал не заполнится.
Так происходит потому, что имя поля табличной части Номенклатура не совпадает с именем измерения регистра – Материал, поэтому 1C:EDT не может автоматически сопоставить эти два поля. Если оставить это как есть, то в регистре накопления в строках с типом Движение регистра – расход номенклатура фиксироваться не будет.
Поэтому нужно вручную указать 1C:EDT, какое значение использовать для измерения Материал. Для этого нужно выделить поле регистра Материал и в окне реквизитов документа дважды щелкнуть по строке ТекСтрокаПереченьНоменклатуры.Номенклатура. Или же можно просто мышью перетащить эту строку слева направо в нужное место (рис. 5.13).

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