aveego,
в общем понравилось, пару советов по кодингу
Если ВыборкаНоменклатура.Услуга = 0 Тогда
Если НЕ ВыборкаНоменклатура.Услуга Тогда
аналогично Если "ВыборкаНоменклатура.Услуга" Вместо "Если ВыборкаНоменклатура.Услуга=что-то", за это люто бешенно казнят во всех языках,
т.к синтаксис "Если (булево) Тогда" - ВыборкаНоменклатура.Услуга уже булево, не надо сравнивать с 1,0, истина, ложь
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура;
Движение.Количество = ВыборкаНоменклатура.КоличествоВдокументе;
Движение.Себестоимость = Себестоимость;
Движение.Продажа = ВыборкаНоменклатура.СуммаВдокументе;
Иначе
// добавляем услугу
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура;
Движение.Количество = ВыборкаНоменклатура.КоличествоВдокументе;
Движение.Продажа = ВыборкаНоменклатура.СуммаВдокументе;
КонецЕсли;
для экономии места можно вынести запись продаж из условия и получится один блок
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура;
Движение.Количество = ВыборкаНоменклатура.КоличествоВдокументе;
Движение.Продажа = ВыборкаНоменклатура.СуммаВдокументе;
Движение.Себестоимость = ?(Выборка.НоменклатураУслуга, 0, Себестоимость);