Когда создавались движения документа «ОказаниеУслуги» по регистру накопления «ОстаткиМатериалов», мы сказали, что они не совсем правильные, поскольку в регистр будут попадать не только записи об израсходованных материалах, но и записи об оказанных услугах.
Теперь доработаем документ таким образом, чтобы в регистре появлялись только записи, относящиеся к расходу материалов. Эта доработка будет не совсем эффективна с точки зрения производительности, зато позволит нам получить нужные данные в регистре «ОстаткиМатериалов».
136. Скорректируем движения документа, исключив из обработки те строки табличной части, в которых находятся услуги. Для этого в обработчик события «ОбработкаПроведения», расположенный в модуле документа «ОказаниеУслуги», добавим следующий текст (добавленный текст выделен жирным шрифтом): в окне Конфигуратора выберите на дереве объект Документы, выберите ОказаниеУслуги, МП, выберите Открыть Модуль объекта, добавьте строки кода
Пример 21.3.
Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл Если ТекСтрокаПереченьНоменклатуры.Номенклатура.ВидНоменклатуры<> Перечисления.ВидыНоменклатуры.Материал тогда Продолжить; КонецЕсли; // регистр ОстаткиМатериалов Расход Движение = Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ТекСтрокаПереченъНоменклатуры.Номенклатура; Движение.Склад = Склад: Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество; КонецЦикла;
Добавленный текст исключает из выполнения операторов цикла те строки документа, в которых номенклатура не является материалом. К значению перечисления «Материал» мы обращаемся используя менеджер перечисления «ВидыНоменклатуры» (Перечисления.ВидыНоменклатуры), указывая в качестве его свойства имя нужного нам значения перечисления.
137 . Выберите Отладка | Начать отладку, на появившийся вопрос: редактируемая конфигурация отличается от конфигурации базы данных. Обновить конфигурацию базы данных? выберите Да, в окне Реорганизация информации выберите Принять.
138. Откроем документ Оказание услуги №1 и внесем в него следующие изменения: введите один материал и одну услугу, измените время документа.
139. Перед тем, как провести документ, откроем список регистра ОстаткиМатериалов, содержащий движения этого документа. Для этого выполним команду Перейти | Остатки материалов из командной панели документа.
140. Проведем документ и убедимся, что в движения по регистру ОстаткиМатериалов включаются только строки, содержащие материалы