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