Первое, что мы сделаем для оптимизации документа "ОказаниеУслуги" – удалим реквизит табличной части "Стоимость", который нам не понадобится в будущем.
Также следует удалить соответствующую колонку из табличного поля, расположенного в форме.
После этого можно полностью удалить содержимое обработчика события "ОбработкаПроведения" в модуле документа и создать в нем заготовку процедуры проведения. Текст запроса, выполняемого в режиме оперативного проведения, будет отличаться от запроса, выполняемого при неоперативном проведении, поэтому формирование текста запроса мы включим в условие Если...Иначе...КонецЕсли:
Процедура ОбработкаПроведения(Отказ, Режим)
Запрос = Новый Запрос;
Если Режим = РежимПроведенияДокумента.Оперативный Тогда
Запрос.Текст =
;
Иначе
Запрос.Текст =
;
КонецЕсли;
КонецПроцедуры
Вызовем конструктор запроса и раскроем таблицу "ПереченьНоменклатуры" табличной части документа "ОказаниеУслуги" и выберем из нее поля:
· | "Номенклатура", |
· | "Количество", |
· | "ВидНоменклатуры", |
· | "Сумма".[238] |
Эти поля будут нужны нам для задания значений измерений регистров и их ресурсов. Кроме того, поле "ВидНоменклатуры" понадобится нам для анализа того, чем является номенклатура, указанная в документе: материалом или услугой:
Теперь задумаемся о том, что для указания значений ресурса "Стоимость" регистров "СтоимостьМатериалов" и "Продажи" нам понадобится рассчитать текущую стоимость номенклатуры как частное стоимости остатка этого материала и его оставшегося количества.
Поэтому добавим к списку выбранных таблиц еще две таблицы:
· | "РегистрНакопления.СтоимостьМатериалов.Остатки", |
· | "РегистрНакопления.ОстаткиМатериалов.Остатки": |