В модуле менеджера для документа "ЗаказКлиента" добавляем в расширение функцию "ПолучитьДанныеДляПечатнойФормыСчетаНаОплату"
Для редактирования РезультатЗапроса выгружается в ТаблицуЗначений, которая сворачивается по нужным полям, а потом преобразуется снова в РезультатЗапроса.
Можно было, конечно, отредактировать процедуру, в которой данные уже в виде ТаблицыЗначений, но мне захотелось вот так. Возможно, есть более удобные и эффективные способы, буду рад почитать комментарии)
&Вместо("ПолучитьДанныеДляПечатнойФормыСчетаНаОплату")
Функция ФЛ_ПолучитьДанныеДляПечатнойФормыСчетаНаОплату(ПараметрыПечати, МассивОбъектов, КодЯзыка)
// Получаем данные из стандартного механизма
Результат = ПродолжитьВызов(ПараметрыПечати, МассивОбъектов, КодЯзыка);
// Результат.РезультатПоТабличнойЧасти - содержит результата запроса, выгружаем его в ТЗ для редактирования
Товары = Результат.РезультатПоТабличнойЧасти.Выгрузить();
// Редактируем ТЗ ------------------------------------------------------------------------------------------
КолонкиСуммирования = "НомерСтроки, Цена, Количество, Сумма, СуммаНДС, СуммаСкидки, СуммаБезСкидки";
КолонкиГруппировок = "";
Для Каждого Колонка Из Товары.Колонки Цикл
// Пропускаем колонки суммирования
Если Колонка.Имя = "НомерСтроки" или Колонка.Имя = "Цена" или Колонка.Имя = "Количество" или ВРег(Лев(Колонка.Имя, 5)) = "СУММА" Тогда продолжить; КонецЕсли;
Если ЗначениеЗаполнено(КолонкиГруппировок) Тогда КолонкиГруппировок = КолонкиГруппировок + ","; КонецЕсли;
КолонкиГруппировок = КолонкиГруппировок + Колонка.Имя;
КонецЦикла;
Товары.Свернуть(КолонкиГруппировок, КолонкиСуммирования);
// Пересчитываем колонка "Цена" и "НомерСтроки"
Для Индекс = 0 По Товары.Количество()-1 Цикл
Строка = Товары[Индекс];
Строка.НомерСтроки = Формат(Индекс+1, "ЧГ=");
Если Строка.Количество = 0 Тогда
Строка.Цена = 0;
Иначе
Строка.Цена = Строка.Сумма / Строка.Количество;
КонецЕсли;
КонецЦикла;
// Пробразуем назад в результат запроса -------------------------------------------------------------------
Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Товары);
Построитель.Выполнить();
Результат.РезультатПоТабличнойЧасти = Построитель.Результат;
Возврат Результат;
КонецФункции
Вступайте в нашу телеграмм-группу Инфостарт