Несколько печатных форм при нажатии на кнопку

1. Новичок1с 4 29.10.21 10:00 Сейчас в теме
Доброго дня.

решила ради интереса попробовать сделать такой вариант- печать нескольких печатных форм, в зависимости от условий.
К сожалению, только 1 форма печатается 2 раза.

Есть 4 разных макета( 2 макета для договоров и 2 макета для приложений к ним)
Я хочу, чтобы при значении переключателя.
если 1- печатается форма 1 и приложение 1
если 2- печатается форма 2 и приложение 2.

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

	возврат ОбластьШапка;	
КонецФункции //Шапка(ТабДок) 
//*****


Процедура Сформировать()
	Если Объект.ВидДоговора = 1 Тогда 
		ТекстФайла 		=  "Договор 1 " 	+ СтрЗаменить(Объект.Контрагент,""""," "); 
		ТекстПриложения =  "Приложение услуг  " 			+ СтрЗаменить(Объект.Контрагент,""""," ");
	ИначеЕсли Объект.ВидДоговора = 2 Тогда  
		ТекстФайла 		=  "ДОГОВОР ПРР2  " 					+ СтрЗаменить(Объект.Контрагент,""""," ");
		ТекстПриложения =  "Приложение ПРР  " 				+ СтрЗаменить(Объект.Контрагент,""""," ");
		
	КонецЕсли; // Объект.ВидДоговора = 1 Тогда 	
	
ТабДок			 = СформироватьДоговор(); 
	ТабДок.Показать(ТекстФайла);
	
	ТабДокПРиложение = СформироватьПриложение();
    ТабДокПРиложение.Показать(ТекстПриложения);
	
	
КонецПроцедуры //Сформировать
Показать


1.У меня возникли сложности с ИмяМакета. Как можно изменить ИмяМакета, в зависимости от условий.
2. показывается просто Имя печатного документа таблица, без ТекстФайла.
3. Показывается 2 печатных формы договора 1 .
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Al3x 1 29.10.21 10:28 Сейчас в теме
(1) 1 если я правильно понял, то вот так (Если условие1 тогда Макет = ПолучитьМакет("Макет1"); ИначеЕсли условие2 Тогда Макет = ПолучитьМакет("Макет2"); КонецЕсли;). 2 Что такое текст файла? 3. Печатать Массив

Где то в модуле объекта

Функция Печать1(МассивОбъектов) Экспорт

Возврат ЗаполнитьПечатнуюФорму1();

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

Функция Печать2(МассивОбъектов) Экспорт

Возврат ЗаполнитьПечатнуюФорму2();

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

Где то в модуле формы

Функция ПечатьНаСервере1()

Массив = Новый Массив();
Массив.Добавить(Объект.СсылкаНаОбъект);
Объект = РеквизитФормыВЗначение("Объект");
Возврат Объект.Печать1(МассивОбъектов);

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

Функция ПечатьНаСервере2()

Массив = Новый Массив();
Массив.Добавить(Объект.СсылкаНаОбъект);
Объект = РеквизитФормыВЗначение("Объект");
Возврат Объект.Печать2(МассивОбъектов);

КонецФункции
Показать
2. TokarevV 35 29.10.21 10:22 Сейчас в теме
Может проще будет создать несколько макетов, и получать их в зависимости от условия?
Чтобы печаталось несколько документов надо эти несколько табличных документов загнать в массив объектов для печати.
4. VmvLer 29.10.21 10:30 Сейчас в теме
мои попытки понять код закончились на СтрЗаменить(Объект.Контрагент,""""," ")

в целом код неплохой и задача понятна, кроме СтрЗаменить
5. Новичок1с 4 29.10.21 10:46 Сейчас в теме
(4)
СтрЗаменить(Объект.Контрагент,""""," ")
если в наименовании контрагента содержаться кавычки, тогда заменяем на пробел.

(2) Есть 4 различных макета
6. Новичок1с 4 29.10.21 12:15 Сейчас в теме
Если Объект.ВидДоговора 	= "1" Тогда // Договор услуг
		 ИмяМакета              = СокрЛП("Договор") ;
	
	ИначеЕсли Объект.ВидДоговора= "2" Тогда // Договор ПРР
		ИмяМакета               = СокрЛП("ДоговорПРР") ;



Частично получилось -договора формируются в зависимости от условия.
Сейчас с приложениями разбираюсь

Проблема была в том, что на форме стоял переключатель типа строка, а я обращалась к нему, как к числу. т.е. без кавычек
Если Объект.ВидДоговора 	= 1 Тогда 
7. Новичок1с 4 29.10.21 12:56 Сейчас в теме
Получилось :)
Благодарю всех за помощь.

&НаКлиенте
Процедура Сформировать()
	Если Объект.ВидДоговора = "1" Тогда 
		ТекстФайла 		=  "Договор   " 	+ СтрЗаменить(Объект.Контрагент,""""," "); 
		ТекстПриложения =  "Приложение услуг  " 			+ СтрЗаменить(Объект.Контрагент,""""," ");
	ИначеЕсли Объект.ВидДоговора = "2" Тогда  
		ТекстФайла 		=  "ДОГОВОР ПРР  " 					+ СтрЗаменить(Объект.Контрагент,""""," ");
		ТекстПриложения =  "Приложение ПРР  " 				+ СтрЗаменить(Объект.Контрагент,""""," ");
	КонецЕсли; // Объект.ВидДоговора = 1 Тогда 	
	
	ТабДок			 = СформироватьДоговор(); 
	ТабДок.Показать(ТекстФайла);
	
	ТабДокПРиложение = СформироватьПриложение();
	ТабДокПРиложение.Показать(ТекстПриложения);
	

КонецПроцедуры //Сформировать
//**************************************************************************************************************
&НаСервере
Функция ОбластьШапка(ИмяМакета) 											//Вывод и заполнение Области  шапка     

	Обработка	= РеквизитФормыВЗначение("Объект");
	Макет 		= Обработка.ПолучитьМакет(ИмяМакета);  	
	ОбластьШапка 									= Макет.ПолучитьОбласть("Шапка");	
	ОбластьШапка.Параметры.ДатаДоговора      		= Формат(Объект.ДатаДоговора, "ДЛФ=Д");     
	Если Объект.ВидДоговора 	= 1 Тогда
		КолвоДнейТ 									= ЧислоПрописью(Объект.КолвоДней);
		
	 КонецЕсли ; //Объект.ВидДоговора 	= 1 Тогда
	 Если  (ИмяМакета = "Договор"  или ИмяМакета = "ДоговорПРР") Тогда 
		 ОбластьШапка.Параметры.Контрагент		 		= Объект.Контрагент;
     	 ОбластьШапка.Параметры.Организация		 	= Объект.Организация;
	 КонецЕсли ; //(ИмяМакета = "Договор"  или ИмяМакета = "ДоговорПРР") Тогда 
	 
	 возврат ОбластьШапка;	
КонецФункции //Шапка(ТабДок) 
//**************************************************************************************************************


&НаСервере
Функция СформироватьДоговор() 
	ТабДок							= Новый ТабличныйДокумент;
	Обработка 						= РеквизитФормыВЗначение("Объект");
	Если Объект.ВидДоговора 	= "1" Тогда // Договор услуг
		ИмяМакета               = ("Договор") ;
   ИначеЕсли Объект.ВидДоговора= "2" Тогда // Договор ПРР
		ИмяМакета               = ("ДоговорПРР") ;
   КонецЕсли; //Если Объект.ВидДоговора = 1 Тогда // Договор услуг
	
ОбластьШапка					= ОбластьШапка(ИмяМакета);
ОбластьПодвал					= ОбластьПодвал(ИмяМакета); 

ТабДок.Вывести(ОбластьШапка);  
ТабДок.Вывести(ОбластьПодвал);
	
	Возврат ТабДок;

КонецФункции // СформироватьАкт(Команда) 
//**************************************************************************************************************

&НаСервере
Функция СформироватьПриложение() 
	
	ТабДок1							= Новый ТабличныйДокумент;
	Обработка 						= РеквизитФормыВЗначение("Объект");
	
	//Выбираем Договры в зависимости от Объект.ВидДоговора
	Если Объект.ВидДоговора 	= "1" Тогда // Договор услуг
		ИмяМакета               = ("Приложение1") ;
   ИначеЕсли Объект.ВидДоговора= "2" Тогда // Договор ПРР
		ИмяМакета               = ("Приложение1ПРР") ;
   КонецЕсли; //Если Объект.ВидДоговора = 1 Тогда // Договор услуг
	
	ОбластьШапка						= ОбластьШапка(ИмяМакета); 
	//ОбластьШапкаПриложение 			= ОбластьШапка("ИмяМакетаПриложение); 
		
	//ОбластьШапкаПриложение 			= Макет.ПолучитьОбласть("ШапкаПриложение");
	//ОбластьНоменклатура 			= Макет.ПолучитьОбласть("Номенклатура");

	ОбластьПодвал						= ОбластьПодвал(ИмяМакета); 
	
	ТабДок1.Вывести(ОбластьШапка);  
	ТабДок1.Вывести(ОбластьПодвал);
		
	Возврат ТабДок1;
	
КонецФункции // СформироватьАкт(Команда) 
//**************************************************************************************************************


Показать
Оставьте свое сообщение

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