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

1. kodblack 14 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 14 21.04.23 09:16 Сейчас в теме
(2)
(За использование необязательных параметров перед обязательными - надо отдельно отрезать пальцы)
И вот у тебя есть вызов

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

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

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

в функцию не передаю параметры, т.к много данных (тн,ттн,реестр и т.д) на печать уходит, но проблема только с упд.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)