Внешняя печатная форма для УТ 10.3

1. user1299321 19.11.20 10:24 Сейчас в теме
Делаю ВПФ Спецификация. Необходимо сделать 3 вида вывода: одну без факсимиле, вторую с одной печатью и третью со второй печать. В ВПФ добавлен 1 макет где указаны все подписи и печати. Нужно чтобы пользователю выводилось на выбор 3 разных варианта макета.
Я создала Функцию ПечатьСпецификации, где формируется табличный документ. Как прописать процедуру печати и включить варианты макета?

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

	ТабДокумент = Новый ТабличныйДокумент;
	ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Спецификация";
	
	Макет = ПолучитьМакет("Спецификация");
	

	// Выводим шапку
	ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
	 ЗаполнитьЗначенияСвойств(ОбластьШапка.Параметры,Выборка);
	ТабДокумент.Вывести(ОбластьШапка);

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

	ОбластьИтого = Макет.ПолучитьОбласть("Итого");
	ОбластьИтого.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Всего);
	ТабДокумент.Вывести(ОбластьИтого);
	
	ОбластьИтогоПрописью = Макет.ПолучитьОбласть("ИтогоПрописью");
	// Вывести Сумму прописью
	ОбластьИтогоПрописью.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Всего);
	ОбластьИтогоПрописью.Параметры.ВсегоПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(Всего, Выборка.ВалютаДокумента);
	ТабДокумент.Вывести(ОбластьИтогоПрописью);

	ОбластьУсловия = Макет.ПолучитьОбласть("Условия");
	ЗаполнитьЗначенияСвойств(ОбластьУсловия.Параметры,Выборка);
	ОбластьУсловия.Параметры.АдресПоставщика = УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Выборка.Грузоотправитель,"Юридический");
	ОбластьУсловия.Параметры.Контрагент 			= Выборка.Контрагент;
	ОбластьУсловия.Параметры.АдресПолучателя = УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Выборка.Грузополучатель,"Юридический");
	ОбластьУсловия.Параметры.ДоговорКонтрагента	= Выборка.ДоговорКонтрагента;
	ТабДокумент.Вывести(ОбластьУсловия);

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

	Возврат ТабДокумент;

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

Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. alxarz 32 20.11.20 07:42 Сейчас в теме
(1)
Я создала Функцию ПечатьСпецификации, где формируется табличный документ. Как прописать процедуру печати и включить варианты макета?
Точно сами создали? Написать такую функцию и не сделать выбор...
2. voloom 41 19.11.20 10:59 Сейчас в теме
Можете добавить несколько вариантов вашей печатной формы через параметры авторегистрации и обрабатывать их при выводе.
Подробнее можно посмотреть здесь https://infostart.ru/public/60272/
3. muskul 20.11.20 03:31 Сейчас в теме
	
        СписокКнопок = Новый СписокЗначений;
	СписокКнопок.Добавить("Без подписи");
	СписокКнопок.Добавить("Подпись1");
	СписокКнопок.Добавить("Подпись2");
	Ответ = Вопрос("Вывод факсимильных подписей и печати",СписокКнопок,);
	
	Если Ответ = "Без подписи" Тогда
		ОбластьМакета       = Макет.ПолучитьОбласть("Подписи");
	ИначеЕсли Ответ = "Подпись1" тогда
		ОбластьМакета       = Макет.ПолучитьОбласть("ПодписиСПечатью1");
	Иначе
		ОбластьМакета       = Макет.ПолучитьОбласть("ПодписиСПечатью2");
	КонецЕсли;
Показать

Можно вот так топорно сделать
Оставьте свое сообщение

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