Разные макеты для ВПФ

1. user1416843 21.06.22 13:52 Сейчас в теме
Здравствуйте. Помогите пожалуйста. Есть впф для медосмотров, печатается из физ.лица( конф зуп 3.1), как сделать, чтобы у пользователя была возможность выбрать макет формы, который должен печататься( их всего 3, данные одни и те же, просто разное оформление. делать 3 разные печатных формы отдельно не вариант, нужно как то все в 1 запихать) Уже подготовила макеты, только теперь не знаю как правильно сделать, чтобы их можно было выбрать.. ну прикреплю часть с печатью, на всякий случай..
&НаКлиенте
Процедура ПечатьОтладка(Команда)
	
	МассивДанных = Новый Массив;
	МассивДанных.Добавить(Объект.СсылкаНаОбъект);
	
	СформироватьПечатнуюФорму(МассивДанных);
	
КонецПроцедуры

&НаКлиенте
Процедура СформироватьПечатнуюФорму(ОбъектыНазначения)
	
	СсылкаНаОбъект = ОбъектыНазначения[0];
	
	п_Организация = ПолучитьОрганизацию();
	
	Если ТипЗнч(п_Организация) = Тип("СписокЗначений") Тогда
		//п_Организация = п_Организация.ВыбратьЭлемент();
		п_Организация = п_Организация[0].Значение;
	КонецЕсли;
	
	СтруктураПараметров = ПолучитьСтруктуруПараметров(СсылкаНаОбъект, п_Организация);
	
	НазваниеФайла = ПолучитьИмяВременногоФайла("doc");
	ДанныеФормы   = Объект; 
	
	МакетОбъект = ПолучитьМакетНаСервере("Макет1");
	МакетОбъект.Записать(НазваниеФайла);
	
	mWordObject = Новый COMObject("Word.Application");
	
	Попытка
		WordDoc = mWordObject.Documents.Add(НазваниеФайла);
	Исключение
		Сообщение = Новый СообщениеПользователю();
		Сообщение.Текст = ОписаниеОшибки();
		Сообщение.Сообщить();
	КонецПопытки;
	
	Если СтруктураПараметров = Неопределено Тогда
		ТекстСообщения = НСтр("ru = 'Нет данных для печати. Обратитесь к Администратору 1С'");
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); 
		Возврат;
	КонецЕсли;
	
	Попытка
		ЗаполнитьПараметрыТрудовогоДоговора(WordDoc, СтруктураПараметров);
		
		mWordObject.Application.Visible     = Истина;
		mWordObject.Application.WindowState = 2;
		mWordObject.Application.WindowState = 1;
		mWordObject.Activate();
	Исключение
		// Если произойдет ошибка, выводятся данные об ошибке и объект закрывается.
		Сообщение = Новый СообщениеПользователю();
		Сообщение.Текст = ОписаниеОшибки();
		Сообщение.Сообщить();
		mWordObject.Application.Quit();
	КонецПопытки;	
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьПараметрыТрудовогоДоговора(Документ, СтруктураПараметров)
	
	wdReplaceNone = 00000000;
	wdReplaceOne  = 00000001;
	wdReplaceAll  = 00000002;
	
	Замена = Документ.Content.Find;
	Замена.Execute("[НаименованиеОрганизацииПолное]", Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(СтруктураПараметров.НаименованиеОрганизацииПолное));
	//
	Замена = Документ.Content.Find;
	Замена.Execute("[НаименованиеОКВЭД]", Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(СтруктураПараметров.НаименованиеОКВЭД));
	

	Замена = Документ.Content.Find;
	Замена.Execute("[АдресОрганизации]", Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(СтруктураПараметров.АдресОрганизации));
	
	//	Замена = Документ.Content.Find;
	//Замена.Execute("[АдресЭП]", Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(СтруктураПараметров.АдресЭП));

	Замена = Документ.Content.Find;
	Замена.Execute("[ФизическоеЛицо]", Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(СокрЛП(СтруктураПараметров.ФизическоеЛицо)));
	
	Замена = Документ.Content.Find;
	Замена.Execute("[ДатаРождения]", Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(СокрЛП(СтруктураПараметров.ДатаРождения)));

КонецПроцедуры

#КонецОбласти

#Область ОсновныеПроцедурыИФункции

&НаКлиенте 
Процедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт
	
	СформироватьПечатнуюФорму(МассивОбъектов);
	
КонецПроцедур
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. tolyan_ekb 104 21.06.22 14:02 Сейчас в теме
(1)нужно сделать 3 кнопки, которые будут вызывать одну и ту же процедуру с разными параметрами
3. user1416843 21.06.22 14:12 Сейчас в теме
(2)Знаете, спасибо вам, получилось даже с первого раза) Но хотелось бы по красивее для пользователя, чтобы с одной кнопки вываливался список макетов, или это уже труднее будет?)
5. user823999 21 21.06.22 14:23 Сейчас в теме
(1) Как вариант - сделать несколько команд.
7. user1416843 21.06.22 15:10 Сейчас в теме
(5) Да изначально была поставлена другая задача. а потом к ней добавились другие, пришлось делать уже готовую работу на другой лад, но я все же разобралась, как лучше сделать, спасибо за ответ
8. user823999 21 21.06.22 15:20 Сейчас в теме
(7) отлично) как решили все-таки? несколько команд или получилось сделать так, чтобы с одной кнопки список макетов пользователю выводился?
9. user1416843 21.06.22 15:26 Сейчас в теме
(8)
(8)Я оставлю как есть, на форме 4 кнопки печати, т.к названия макетов длинные, их просто в столбик сделаю да и все, не хочется сильно заморачиваться, может потом если заказчика не устроит, уже подумаю
4. Dimony4 3 21.06.22 14:18 Сейчас в теме
Почему не хотите использовать внешнюю доп обработку?

Чтобы открыть форму с кнопками:
Использование = "ОткрытиеФормы"
6. FatPanzer 21.06.22 14:27 Сейчас в теме
Сделайте не ВПФ, а подключаемую команду печати с клиентским вызовом, которая будет открывать форму выбора печатной формы. Ну а там уже программными методами БСП разруливать макеты.
Ну или как предыдущий оратор.

Вам ВПФ точно не пойдет.
Оставьте свое сообщение

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