групповая печать УПД, , где данные формируются из 5-20 распред, в которых по 3-20 СФ

1. kodblack 13 20.04.23 17:02 Сейчас в теме
Добрый день!
Подскажите, где ошибка… 2 дня уже мучаюсь.
Есть документ «распред» в нем формируются ТЧ:
Заказ, клиент, накл, и СФ.
Создана форма по групповой печати: ТТН, ТН, и тд и УПД.
Если печатать из распр: УПД – то из в документа.распред – все данные по СФ – выходят.
НО, если печатать из формы групп печать, где данные формируются из 5-20 распред, в которых по 3-20 СФ, выдает ошибку.

В модуле распр:

&НаСервере
Функция ПечатьНаСервере () Экспорт 		
	МассивНаправлений = Направление.НаправленияСборки.ВыгрузитьКолонку("Направление");
	тзРаспределения = тРаспределения.Выгрузить(Новый Структура("Выбор", Истина),"Распределение");
	МассивРаспределений = тзРаспределения.ВыгрузитьКолонку("Распределение");
	МассивРеализаций = Новый Массив;   
	МассивСФ = Новый Массив; 
	МассивОбъектов = Новый Массив;
	
	Для Каждого СтрТЧ ИЗ МассивРаспределений Цикл
		Для  Каждого СтрЗаказы ИЗ СтрТЧ.Заказы Цикл 
			 МассивРеализаций.Добавить(СтрЗаказы.Накладная); 
			 МассивСФ.Добавить(СтрЗаказы.СчетФактура);
		КонецЦикла;
	КонецЦикла; 
	ТабДокумент = Новый ТабличныйДокумент;
	ТабДокумент.АвтоМасштаб = Истина;
	ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
	ТабДокумент.ОтображатьЗаголовки = Ложь;
	ТабДокумент.ОтображатьСетку = Ложь;
	ТабДокумент.Защита = Истина;     

Если ПечатьУПД Тогда   
	    ТабДокУПД = Документы.Распределение.СформироватьНесколькоУПД(МассивСФ, МассивНаправлений);
	    ТабДокумент.Вывести(ТабДокУПД);
	 КонецЕсли;
Возврат  ТабДокумент;
КонецФункции

&НаКлиенте
Процедура Печать (Команда)
	Если Дата = '00010101' Тогда
		Сообщить("Не указана дата");
		Возврат;
	КонецЕсли;
	Если Не ВсеНаправления И Направление.Пустая() Тогда
		Сообщить ("Не выбрано направление");
		Возврат;
	КонецЕсли;
	Если тРаспределения.Количество() = 0 Тогда
		 Сообщить("Не заполнен список документов для печати");
		 Возврат;
	КонецЕсли;	 
	ЕстьДокументы = Ложь;
	Для Каждого стр Из тРаспределения Цикл
		Если стр.Выбор Тогда
			ЕстьДокументы = Истина;
			Прервать;
		КонецЕсли;	
	КонецЦикла;
	
	Если Не ЕстьДокументы Тогда	
	     Сообщить("Не выбраны документы для печати");
		Возврат;
	КонецЕсли;
	
	//ПечатьНаСервере();
	ТабДок = ПечатьНаСервере();
	
	//Вывод формы печать из БСП	
	ЭлементКоллекцииДляПечати = Новый Структура;
	Для Каждого ИмяКолонки Из УправлениеПечатьюКлиентСервер.ИменаПолейКоллекцииПечатныхФорм() Цикл
		ЭлементКоллекцииДляПечати.Вставить(ИмяКолонки);
	КонецЦикла;
	ЭлементКоллекцииДляПечати.ТабличныйДокумент = ТабДок;
	ЭлементКоллекцииДляПечати.Экземпляров = 1;
	
	КоллекцияПечатныхФорм = Новый Массив;
	КоллекцияПечатныхФорм.Добавить(ЭлементКоллекцииДляПечати);
	
	ПараметрыОткрытия = Новый Структура("КоллекцияПечатныхФорм, ИсточникДанных, ПараметрыПечати, СтруктураТипов, ДанныеДляПечати, ОбъектыПечати");
	ПараметрыОткрытия.КоллекцияПечатныхФорм = КоллекцияПечатныхФорм;
	ПараметрыОткрытия.ИсточникДанных = КоллекцияПечатныхФорм;
	ПараметрыОткрытия.ПараметрыПечати	 = Новый Структура;
	ПараметрыОткрытия.ПараметрыПечати.Вставить("ЗаголовокФормы", "Печать комплекта документов");
	ПараметрыОткрытия.ПараметрыПечати.Вставить("ПереопределитьПользовательскиеНастройкиКоличества", Истина);
	ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, ЭтаФорма, Строка(Новый УникальныйИдентификатор));
КонецПроцедуры
Показать



В модуле менеджера - распр:

Функция   СформироватьНесколькоУПД(МассивОбъектов, МассивНаправлений = "ВСЕ", ДанныеДляПечати, ОбъектыПечати) Экспорт

    ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.АвтоМасштаб = Истина;
	ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
	ТабличныйДокумент.ОтображатьЗаголовки = Ложь;
	ТабличныйДокумент.ОтображатьСетку = Ложь;
	ТабличныйДокумент.Защита = Ложь;
	ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УПД";
	Для каждого Ссылка из МассивОбъектов Цикл
		ТабДокументОбъекта = Обработки.ПечатьОбщихФорм.ЗаполнитьТабличныйДокументУПД(ТабличныйДокумент,ДанныеДляПечати,ОбъектыПечати);
		Если ТабличныйДокумент.ВысотаТаблицы > 0 И ТабДокументОбъекта.ВысотаТаблицы > 0 Тогда 
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		ТабличныйДокумент.Вывести(ТабДокументОбъекта);
	КонецЦикла;   
	
    Возврат ТабличныйДокумент;
КонецФункции 




Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт 	
	
	ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;

СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОбъектов);
	
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "УПД") Тогда
		МассивСчетовФактур = Новый Массив;
		
		Для Каждого ДокСсылка из МассивОбъектов Цикл
			
			ДокРаспределение = ДокСсылка.ПолучитьОбъект();
			Для Каждого стр из ДокРаспределение.Заказы Цикл
				Если стр.СчетФактура.ДокументОснование <> Неопределено Тогда
					нуженУПД = стр.СчетФактура.Контрагент.ДокументыПечатьУПД=стр.СчетФактура.Контрагент.ДокументыПечатьТОРГ12;
					Если стр.СчетФактура.Контрагент.ДОС_ДокументыПечатьУПД  или нуженУПД Тогда
						МассивСчетовФактур.Добавить(стр.СчетФактура);
					КонецЕсли;
				КонецЕсли;
			КонецЦикла;
		КонецЦикла;
		
		Если МассивСчетовФактур.Количество() > 0 Тогда
			СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивСчетовФактур);
		
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"УПД",НСтр("ru='Универсальный передаточный документ (УПД)'"),
		Обработки.ПечатьОбщихФорм.СформироватьПечатнуюФормуУПД(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
		Иначе 
			ПустойТабДок = Новый ТабличныйДокумент;
			
			УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
			КоллекцияПечатныхФорм,
			"УПД",
			НСтр("ru='Универсальный передаточный документ (УПД)'"),
			ПустойТабДок);
		КонецЕсли;
		
	КонецЕсли;
		
		Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТОРГ12") Тогда
		
		МассивНакладных = Новый Массив;
		
		Для Каждого ДокСсылка из МассивОбъектов Цикл
			ДокРаспределение = ДокСсылка.ПолучитьОбъект();
			Для Каждого стр из ДокРаспределение.Заказы Цикл
				Если стр.Накладная.Контрагент.ДОС_ДокументыПечатьТОРГ12 Тогда
					МассивНакладных.Добавить(стр.Накладная);
				КонецЕсли;
			КонецЦикла;
		КонецЦикла;
		
		Если МассивНакладных.Количество() > 0 Тогда
			СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивНакладных);

			СинонимМакета = НСтр("ru='Товарная накладная без услуг (ТОРГ-12)'");
			ПараметрыПечати.Вставить("ВыводитьУслуги",Ложь);
			УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
			КоллекцияПечатныхФорм,
			"ТОРГ12",
			СинонимМакета,
			Обработки.ПечатьОбщихФорм.СформироватьПечатнуюФормуТОРГ12(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
		Иначе Сообщить ("В документе нет созданных накладных, печать невозможна. У контрагента, на вкладке: дополнительные данные, не проставлено печатать ТОРГ-12");	
		КонецЕсли;
		
	КонецЕсли;

Показать




ОШИБКА:

Недостаточно фактических параметров
{Документ._Распределение.Форма.ФормаПакетнойПечати.Форма(43)}:ТабДокУПД = Документы._Распределение.СформироватьНесколькоУПД(МассивСФ, МассивНаправлений);
{Документ._Распределение.Форма.ФормаПакетнойПечати.Форма(98)}:ТабДок = ПечатьНаСервере();
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1826630 20.04.23 18:12 Сейчас в теме
А что непонятного?
Вот у тебя есть:
Функция   СформироватьНесколькоУПД(МассивОбъектов, МассивНаправлений = "ВСЕ", ДанныеДляПечати, ОбъектыПечати) Экспорт
(За использование необязательных параметров перед обязательными - надо отдельно отрезать пальцы)
И вот у тебя есть вызов
ТабДокУПД = Документы.Распределение.СформироватьНесколькоУПД(МассивСФ, МассивНаправлений);
Считать умеешь? Ну, хотя бы до трёх...
3. kodblack 13 21.04.23 09:16 Сейчас в теме
(2)
(За использование необязательных параметров перед обязательными - надо отдельно отрезать пальцы)
И вот у тебя есть вызов

Синтаксис предлагает: МассивОбъектов, МассивНаправлений, ДанныеДляПечати, ОбъектыПечати
но ни как не данныеДляПечати, ОбъекыПечати и т.д.

Если в функцию &НаСервере
Функция ПечатьНаСервере () Экспорт

ТабДокУПД = Документы.ДОС_Распределение.СформироватьНесколькоУПД(МассивСФ, МассивНаправлений, ДанныеДляПечати, ОбъектыПечати);
то ошибка, : Переменная не определена (ДанныеДляПечати), Переменная не определена (ОбъектыПечати)
4. kodblack 13 23.04.23 21:59 Сейчас в теме
&НаСервере
Функция ПечатьНаСервере () Экспорт

в функцию не передаю параметры, т.к много данных (тн,ттн,реестр и т.д) на печать уходит, но проблема только с упд.
Оставьте свое сообщение

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