Группировка строк в печатной форме счета при отгрузке с разных складов. УТ 11.5

08.10.25

Разработка - Универсальные функции

Предложенная доработка группирует одинаковые строки в печатной форме счета для документа Заказ клиента (могут быть выписаны с разных складов, по разным ценам).

В модуле менеджера для документа "ЗаказКлиента" добавляем в расширение функцию "ПолучитьДанныеДляПечатнойФормыСчетаНаОплату"

Для редактирования РезультатЗапроса выгружается в ТаблицуЗначений, которая сворачивается по нужным полям, а потом преобразуется снова в РезультатЗапроса.

Можно было, конечно, отредактировать процедуру, в которой данные уже в виде ТаблицыЗначений, но мне захотелось вот так. Возможно, есть более удобные и эффективные способы, буду рад почитать комментарии)
 

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

 

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Универсальные функции Работа с интерфейсом Программист 1С v8.3 Бесплатно (free)

Порой необходимо временно отключить расширение 1С, не удаляя его, чтобы не потерять данные. Но в этом случае при каждом запуске всем будет лезть уведомление о неактивном расширении, хотя очевидно, это техническая информация, которой не стоит лишний раз пугать пользователей.

14.05.2025    3988    DeerCven    9    

48

Универсальные функции Программист 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    42759    dimanich70    83    

158

Универсальные функции Программист 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    6326    6    John_d    12    

58

Универсальные функции Программист Стажер 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    52105    atdonya    31    

67

Универсальные функции Программист 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    8076    ke.92@mail.ru    17    

66

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист 1С v8.3 1C:Бухгалтерия Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    21577    YA_418728146    8    

174
Для отправки сообщения требуется регистрация/авторизация