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