Номенклатура по документу

1. Geophysic 03.03.23 13:42 Сейчас в теме
Здравствуйте, мне нужно чтобы каждый товар печатался отдельно по документу, то есть если один документ прикреплен к нескольким товарам номенклатуры значит печатаются все товары в один документ и далее печатается следующий документ. Сейчас же у меня все товары прут в одну печать, подскажите что не так сделал?

//Модуль менеджера
Функция ТекстНоменклатура(Номенклатура)

ТЗ = Новый ТаблицаЗначений;

ТЗ.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура")); 

ТЗНоменклатура = Номенклатура.Выгрузить();

ТекстНоменклатура = "";
Для Каждого Стр Из ТЗНоменклатура Цикл
    ТекстНоменклатура = ТекстНоменклатура +?(ТекстНоменклатура  = "", Стр.Номенклатура.Наименование, ", " + Стр.Номенклатура.Наименование);
КонецЦикла;

Возврат ТекстНоменклатура;

КонецФункции


// Далее заполнил область
ОбластьЛицевая.Параметры.Пункт3_1 = ТекстНоменклатура(Номенклатура);


// В модуле формы
Функция ПечатьНовойТранспортнойНакладнойНаСервере(ТекущийДокумент, Элемент)
	
	Возврат Документы.Рейс.Сформировать_ПФ_MXL_НоваяТранспортнаяНакладная(ТекущийДокумент, Элемент);
	
КонецФункции

&НаКлиенте
Процедура ПечатьНовойТранспортнойНакладной(Команда)
	
	ТекДок = Объект.Ссылка;
	МассивСсылок = ПолучитьМассивРеализаций(ТекДок);
	Если МассивСсылок <> Неопределено Тогда
		Для каждого Реализация из МассивСсылок Цикл
			ТабличныйДокумент = ПечатьНовойТранспортнойНакладнойНаСервере(ТекДок, Реализация);
			Если ТабличныйДокумент <> Неопределено Тогда
				ДлинаЗаголовка = СтрДлина(Строка(Реализация)) - 8;
				ТабличныйДокумент.Показать("Транспортная накладная по: " + Лев(Строка(Реализация), ДлинаЗаголовка));
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
		
КонецПроцедуры


&НаСервере
Функция ПолучитьМассивРеализаций(ТекДок)
	
	МассивРеализаций = Новый Массив;
	// Группируем по реализациям, чтобы на РАЗНЫЕ реализации создавалось по одной транспортной накладной
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	РейсЗаказы.Документ КАК Документ,
		|	РейсЗаказы.Документ.Проведен КАК ДокументПроведен
		|ИЗ
		|	Документ.Рейс.Заказы КАК РейсЗаказы
		|ГДЕ
		|	РейсЗаказы.Ссылка = &Ссылка
		|
		|СГРУППИРОВАТЬ ПО
		|	РейсЗаказы.Документ,
		|	РейсЗаказы.Документ.Проведен
		|АВТОУПОРЯДОЧИВАНИЕ";
	Запрос.УстановитьПараметр("Ссылка", ТекДок);
	Результат = Запрос.Выполнить();
	Если НЕ Результат.Пустой() Тогда
		Выборка = Результат.Выбрать();
		Пока Выборка.Следующий() Цикл
			Если ТипЗнч(Выборка.Документ) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
				Если НЕ Выборка.ДокументПроведен Тогда     
					Сообщение = Новый СообщениеПользователю;
					Сообщение.Текст = СтрШаблон("%1 не проведена. Транспортная накладная не сформирована.", Выборка.Документ);
					Сообщение.Сообщить();
				Иначе
					МассивРеализаций.Добавить(Выборка.Документ);
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
		Возврат МассивРеализаций;
	КонецЕсли;
	
КонецФункции
Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. YozZzhik 03.03.23 14:24 Сейчас в теме
Если я правильно понял, то вам нужно использовать итоги по полю документ в запросе или следующий по значению поля документ в коде, и горизонтальный разделитель в цикле снизу вставить. Тогда все будет падать не в "одну печать", а в "разную печать")) В разные листы
3. пользователь 03.03.23 14:42
Сообщение было скрыто модератором.
...
4. Geophysic 03.03.23 14:44 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот