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

1. 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 189 21.06.22 14:02 Сейчас в теме
(1)нужно сделать 3 кнопки, которые будут вызывать одну и ту же процедуру с разными параметрами
3. user1416843 21.06.22 14:12 Сейчас в теме
(2)Знаете, спасибо вам, получилось даже с первого раза) Но хотелось бы по красивее для пользователя, чтобы с одной кнопки вываливался список макетов, или это уже труднее будет?)
5. user823999 16 21.06.22 14:23 Сейчас в теме
(1) Как вариант - сделать несколько команд.
7. user1416843 21.06.22 15:10 Сейчас в теме
(5) Да изначально была поставлена другая задача. а потом к ней добавились другие, пришлось делать уже готовую работу на другой лад, но я все же разобралась, как лучше сделать, спасибо за ответ
8. user823999 16 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 16 21.06.22 14:27 Сейчас в теме
Сделайте не ВПФ, а подключаемую команду печати с клиентским вызовом, которая будет открывать форму выбора печатной формы. Ну а там уже программными методами БСП разруливать макеты.
Ну или как предыдущий оратор.

Вам ВПФ точно не пойдет.
Оставьте свое сообщение
Вакансии
Консультант-аналитик 1С
Москва
зарплата от 120 000 руб. до 190 000 руб.
Полный день

Ведущий аналитик-разработчик 1С
Москва
зарплата от 230 000 руб. до 270 000 руб.
Полный день

1С:Эксперт по производительности
Москва
зарплата от 400 000 руб. до 950 000 руб.
Полный день

Ведущий аналитик 1С (ERP, ЗУП)
Краснодар
зарплата от 150 000 руб.
Полный день

Разработчик 1С
Тверь
зарплата от 150 000 руб. до 250 000 руб.
Полный день