Внешняя печатная форма бгу 2 (Акт об оказании услуг, подпись и печать, факсимиле )

1. Ingvar1315 23.03.22 08:41 Сейчас в теме
Подскажите как добавить подпись и печать, факсимиле во внешнюю печатную форму "Акт об оказании услуг" ?

Функция ПечатьАктаОбОказанииУслуг(МассивОбъектов, ОбъектыПечати)
	
	
	Макет = ПолучитьМакет("ПФ_MXL_АктВыполненныхУслугВн");
	ОбластьШапка 	= Макет.ПолучитьОбласть("Шапка");
	ОбластьЗаголовок 	= Макет.ПолучитьОбласть("Заголовок");
	ОбластьСтрока 	= Макет.ПолучитьОбласть("Строка");
	ОбластьИтоги 	= Макет.ПолучитьОбласть("Итоги");
	ОбластьПодвал 	= Макет.ПолучитьОбласть("Подвал");
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
	ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫПЕЧАТИ_АКТВЫПОЛНЕННЫХУСЛУГ";
	
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	АктОбОказанииУслуг.Ссылка КАК Ссылка,
	|	АктОбОказанииУслуг.Номер КАК пНомер,
	|	АктОбОказанииУслуг.Дата КАК пДата,
	|	АктОбОказанииУслуг.Организация КАК Организация,
	|	ВЫБОР
	|		КОГДА ИспользоватьУчетПоПодразделениям.Значение
	|				И ЕСТЬNULL(АктОбОказанииУслуг.Подразделение.ОбособленноеПодразделение, ЛОЖЬ)
	|				И ЕСТЬNULL(АктОбОказанииУслуг.Подразделение.НаименованиеПолное, """") <> """"
	|			ТОГДА АктОбОказанииУслуг.Подразделение.НаименованиеПолное
	|		КОГДА АктОбОказанииУслуг.Организация.НаименованиеПолное = """"
	|			ТОГДА АктОбОказанииУслуг.Организация.Наименование
	|		ИНАЧЕ АктОбОказанииУслуг.Организация.НаименованиеПолное
	|	КОНЕЦ КАК НаименованиеОрганизации,
	|	АктОбОказанииУслуг.Организация.ИНН КАК ИННОрганизации,
	|	ВЫБОР
	|		КОГДА ИспользоватьУчетПоПодразделениям.Значение
	|				И ЕСТЬNULL(АктОбОказанииУслуг.Подразделение.ОбособленноеПодразделение, ЛОЖЬ)
	|				И ЕСТЬNULL(АктОбОказанииУслуг.Подразделение.РегистрацияВНалоговомОргане, ЗНАЧЕНИЕ(Справочник.РегистрацииВНалоговомОргане.ПустаяСсылка)) <> ЗНАЧЕНИЕ(Справочник.РегистрацииВНалоговомОргане.ПустаяСсылка)
	|			ТОГДА АктОбОказанииУслуг.Подразделение.РегистрацияВНалоговомОргане.КПП
	|		ИНАЧЕ АктОбОказанииУслуг.Организация.КПП
	|	КОНЕЦ КАК КППОрганизации,
	|	АктОбОказанииУслуг.Организация.КодОКПО КАК ОрганизацияКодОКПО,
	|	АктОбОказанииУслуг.Контрагент КАК Контрагент,
	|	ВЫБОР
	|		КОГДА АктОбОказанииУслуг.Контрагент.НаименованиеСокращенное = """"
	|			ТОГДА ВЫБОР
	|					КОГДА АктОбОказанииУслуг.Контрагент.ВидКонтрагента = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ЮрЛицо)
	|							И НЕ АктОбОказанииУслуг.Контрагент.ЮридическоеФизическоеЛицо.НаименованиеПолное = """"
	|						ТОГДА АктОбОказанииУслуг.Контрагент.ЮридическоеФизическоеЛицо.НаименованиеПолное
	|					ИНАЧЕ АктОбОказанииУслуг.Контрагент.Наименование
	|				КОНЕЦ
	|		ИНАЧЕ АктОбОказанииУслуг.Контрагент.НаименованиеСокращенное
	|	КОНЕЦ КАК КонтрагентНаименование,
	|	АктОбОказанииУслуг.Контрагент.ИНН КАК КонтрагентИНН,
	|	АктОбОказанииУслуг.Контрагент.КПП КАК КонтрагентКПП,
	|	ВЫБОР
	|		КОГДА КонтрагентыКППИстория.Ссылка ЕСТЬ NULL
	|			ТОГДА ЛОЖЬ
	|		ИНАЧЕ ИСТИНА
	|	КОНЕЦ КАК БылоИзменениеКППКонтрагента,
	|	ПРЕДСТАВЛЕНИЕ(АктОбОказанииУслуг.Договор) КАК пДоговор,
	|	ВЫБОР
	|		КОГДА АктОбОказанииУслуг.ВалютаДокумента = &ПустаяВалюта
	|			ТОГДА &РегламентированнаяВалюта
	|		ИНАЧЕ АктОбОказанииУслуг.ВалютаДокумента
	|	КОНЕЦ КАК ВалютаДокумента,
	|	ВЫБОР
	|		КОГДА АктОбОказанииУслуг.ВалютаДокумента = &ПустаяВалюта
	|				ИЛИ АктОбОказанииУслуг.ВалютаДокумента = &РегламентированнаяВалюта
	|			ТОГДА ""Руб.""
	|		ИНАЧЕ ПРЕДСТАВЛЕНИЕ(АктОбОказанииУслуг.ВалютаДокумента)
	|	КОНЕЦ КАК пВалюта,
	|	АктОбОказанииУслуг.СуммаВключаетНДС КАК СуммаВключаетНДС,
	|	АктОбОказанииУслуг.Руководитель КАК Руководитель,
	|	ВЫРАЗИТЬ(АктОбОказанииУслуг.Контрагент КАК Справочник.Контрагенты).ОбособленноеПодразделение КАК КонтрагентОбособленноеПодразделение,
	|	ВЫРАЗИТЬ(АктОбОказанииУслуг.Контрагент КАК Справочник.Контрагенты).ГоловнаяОрганизация КАК КонтрагентГоловнаяОрганизация,
	|	ВЫБОР
	|		КОГДА АктОбОказанииУслуг.Контрагент.ОбособленноеПодразделение = ИСТИНА
	|			ТОГДА ВЫБОР
	|					КОГДА АктОбОказанииУслуг.Контрагент.ГоловнаяОрганизация = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
	|						ТОГДА """"
	|					КОГДА НЕ АктОбОказанииУслуг.Контрагент.ГоловнаяОрганизация.НаименованиеСокращенное = """"
	|						ТОГДА АктОбОказанииУслуг.Контрагент.ГоловнаяОрганизация.НаименованиеСокращенное
	|					КОГДА АктОбОказанииУслуг.Контрагент.ГоловнаяОрганизация.ВидКонтрагента = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ЮрЛицо)
	|							И НЕ АктОбОказанииУслуг.Контрагент.ГоловнаяОрганизация.ЮридическоеФизическоеЛицо.НаименованиеПолное = """"
	|						ТОГДА ВЫРАЗИТЬ(АктОбОказанииУслуг.Контрагент.ГоловнаяОрганизация.ЮридическоеФизическоеЛицо.НаименованиеПолное КАК СТРОКА(1000))
	|					ИНАЧЕ АктОбОказанииУслуг.Контрагент.ГоловнаяОрганизация.Наименование
	|				КОНЕЦ
	|		ИНАЧЕ """"
	|	КОНЕЦ КАК КонтрагентГоловнаяОрганизацияПредставление,
	|	ВЫБОР
	|		КОГДА АктОбОказанииУслуг.Контрагент.ОбособленноеПодразделение = ИСТИНА
	|			ТОГДА ВЫБОР
	|					КОГДА АктОбОказанииУслуг.Контрагент.ГоловнаяОрганизация = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
	|						ТОГДА """"
	|					ИНАЧЕ АктОбОказанииУслуг.Контрагент.ГоловнаяОрганизация.ЮридическоеФизическоеЛицо.ИНН
	|				КОНЕЦ
	|		ИНАЧЕ """"
	|	КОНЕЦ КАК КонтрагентГоловнаяОрганизацияИНН,
	|	АктОбОказанииУслуг.Руководитель.Подпись КАК РуководительПодпись
	|ИЗ
	|	Документ.АктОбОказанииУслуг КАК АктОбОказанииУслуг
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КППИстория КАК КонтрагентыКППИстория
	|		ПО АктОбОказанииУслуг.Контрагент = КонтрагентыКППИстория.Ссылка
	|			И (КонтрагентыКППИстория.НомерСтроки = 1)
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Константа.ИспользоватьУчетПоПодразделениям КАК ИспользоватьУчетПоПодразделениям
	|		ПО (ИСТИНА)
	|ГДЕ
	|	АктОбОказанииУслуг.Ссылка В(&МассивОбъектов)
	|
	|УПОРЯДОЧИТЬ ПО
	|	пДата,
	|	пНомер
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	АктОбОказанииУслугУслугиОказанные.Ссылка КАК Ссылка,
	|	АктОбОказанииУслугУслугиОказанные.НомерСтроки КАК пНом,
	|	ВЫБОР
	|		КОГДА ЕСТЬNULL(АктОбОказанииУслугУслугиОказанные.Номенклатура, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
	|			ТОГДА АктОбОказанииУслугУслугиОказанные.СодержаниеУслуги
	|		КОГДА ПОДСТРОКА(АктОбОказанииУслугУслугиОказанные.СодержаниеУслуги, 1, 1000) <> """"
	|			ТОГДА АктОбОказанииУслугУслугиОказанные.СодержаниеУслуги
	|		КОГДА АктОбОказанииУслугУслугиОказанные.Номенклатура.НаименованиеПолное = """"
	|			ТОГДА АктОбОказанииУслугУслугиОказанные.Номенклатура.Наименование
	|		ИНАЧЕ АктОбОказанииУслугУслугиОказанные.Номенклатура.НаименованиеПолное
	|	КОНЕЦ КАК пНаименование,
	|	ЕСТЬNULL(АктОбОказанииУслугУслугиОказанные.Количество, 0) КАК пКоличество,
	|	ЕСТЬNULL(АктОбОказанииУслугУслугиОказанные.Цена, 0) КАК пЦена,
	|	ЕСТЬNULL(АктОбОказанииУслугУслугиОказанные.Сумма, 0) КАК пСумма,
	|	АктОбОказанииУслугУслугиОказанные.СтавкаНДС КАК СтавкаНДС,
	|	ЕСТЬNULL(АктОбОказанииУслугУслугиОказанные.СуммаНДС, 0) КАК пСуммаНДС,
	|	ЕСТЬNULL(АктОбОказанииУслугУслугиОказанные.Всего, 0) КАК Всего,
	|	ПРЕДСТАВЛЕНИЕ(АктОбОказанииУслугУслугиОказанные.Номенклатура.ЕдиницаИзмерения) КАК пЕдИзм
	|ИЗ
	|	Документ.АктОбОказанииУслуг.УслугиОказанные КАК АктОбОказанииУслугУслугиОказанные
	|ГДЕ
	|	АктОбОказанииУслугУслугиОказанные.Ссылка В(&МассивОбъектов)
	|
	|УПОРЯДОЧИТЬ ПО
	|	Ссылка,
	|	пНом
	|ИТОГИ ПО
	|	Ссылка";
	Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
	Запрос.УстановитьПараметр("ПустаяВалюта",Справочники.Валюты.ПустаяСсылка());
	Запрос.УстановитьПараметр("РегламентированнаяВалюта", Константы.ВалютаРегламентированногоУчета.Получить());
	
	РезультатЗапроса = Запрос.ВыполнитьПакет();
	
	ВыборкаШапка = РезультатЗапроса[0].Выбрать();
	ВыборкаВсеСтроки = РезультатЗапроса[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	ПервыйДокумент = Истина;
	
	Пока ВыборкаШапка.Следующий() Цикл
		
		Если Не ПервыйДокумент Тогда
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		
		ПервыйДокумент = Ложь;
		НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
		
		МассивДляПроверки = Новый Массив;
		МассивДляПроверки.Добавить(ОбластьИтоги);
		МассивДляПроверки.Добавить(ОбластьПодвал);
		
		ОбластьШапка.Параметры.Заполнить(ВыборкаШапка);
		НаименованиеОрганизации = СтрШаблон(НСтр("ru = '%1 ИНН %2 КПП %3'"),
			ВыборкаШапка.НаименованиеОрганизации, ВыборкаШапка.ИННОрганизации, ВыборкаШапка.КППОрганизации);
		ПараметрОрганизация = Новый Структура;
		ПараметрОрганизация.Вставить("пНаименованиеОрганизации", НаименованиеОрганизации);
		ОбластьШапка.Параметры.Заполнить(ПараметрОрганизация);
		РегистрыСведений.НастройкиПечатиПрефиксаНомера.УстановитьНомерДляПечатиВОбластьПечати(ОбластьШапка,
			"пНомер",ВыборкаШапка.пНомер, ВыборкаШапка.Ссылка, Неопределено, Истина);
		
		АдресОрганизации = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ВыборкаШапка.Организация,
			Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации);
		ТелефонОрганизации = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ВыборкаШапка.Организация,
			Справочники.ВидыКонтактнойИнформации.ТелефонОрганизации);
			
		ДопДанныеПечати = Новый Структура;
		
		ДопДанныеПечати.Вставить("пАдресТелефон", АдресОрганизации + ?(ПустаяСтрока(ТелефонОрганизации), "", ", тел.:"+ТелефонОрганизации));
		
		Если ВыборкаШапка.БылоИзменениеКППКонтрагента Тогда
			КПП = Справочники.Контрагенты.ПолучитьКПП(ВыборкаШапка.Контрагент, ВыборкаШапка.пДата);
		Иначе
			КПП = ВыборкаШапка.КонтрагентКПП;
		КонецЕсли;
		ИНН = ВыборкаШапка.КонтрагентИНН;
		КонтрагентНаименование = ВыборкаШапка.КонтрагентНаименование;
		
		ДопДанныеПечати.Вставить("пЗаказчик", "" + КонтрагентНаименование
			+ ?(ПустаяСтрока(ИНН), "", " ИНН " + ИНН)
			+ ?(ПустаяСтрока(КПП), "", " КПП " + КПП));
			
		ДопДанныеПечати.Вставить("пДата", Формат(ВыборкаШапка.пДата, "ДЛФ=DD"));
		
		ОбластьШапка.Параметры.Заполнить(ДопДанныеПечати);
		
		ТабличныйДокумент.Вывести(ОбластьШапка);
		
		ВыборкаВсеСтроки.Сбросить();
		ОтборСтрок = Новый Структура("Ссылка", ВыборкаШапка.Ссылка);
		Если ВыборкаВсеСтроки.НайтиСледующий(ОтборСтрок) Тогда
			ВыборкаСтрок = ВыборкаВсеСтроки.Выбрать();
			КоличествоСтрок = ВыборкаСтрок.Количество();
		Иначе
			КоличествоСтрок = 0;
		КонецЕсли;
		ИтогСумма = 0;
		ИтогНДС = 0;
		
		Пока КоличествоСтрок > 0 И ВыборкаСтрок.Следующий() Цикл
			
			Попытка 
				
				Если ВыборкаСтрок.пНом = КоличествоСтрок Тогда
					
					МассивДляПроверки.Добавить(ОбластьСтрока);
					
					Если НЕ ТабличныйДокумент.ПроверитьВывод(МассивДляПроверки) Тогда
						ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
						ТабличныйДокумент.Вывести(ОбластьЗаголовок);
					КонецЕсли;
					
				ИначеЕсли НЕ ТабличныйДокумент.ПроверитьВывод(ОбластьСтрока) Тогда
					ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
					ТабличныйДокумент.Вывести(ОбластьЗаголовок);
				КонецЕсли;	
				
			Исключение
				Сообщить("В системе не установлено ни одного принтера.");
			КонецПопытки;
			
			ОбластьСтрока.Параметры.Заполнить(ВыборкаСтрок);
			
			ТабличныйДокумент.Вывести(ОбластьСтрока);
			
			ИтогСумма 	= ИтогСумма + ВыборкаСтрок.пСумма;
			ИтогНДС 	= ИтогНДС 	+ ВыборкаСтрок.пСуммаНДС;
			
		КонецЦикла;
		
		Если КоличествоСтрок = 0 Тогда
			Область = Макет.ПолучитьОбласть("Строка");
			ТабличныйДокумент.Вывести(Область);
		КонецЕсли;
		
		ДопДанныеПечати = Новый Структура;
		
		ДопДанныеПечати.Вставить("пИтогСумма", ИтогСумма);
		ДопДанныеПечати.Вставить("пИтогНДС", ИтогНДС);
		
		Если ВыборкаШапка.СуммаВключаетНДС Тогда
			ДопДанныеПечати.Вставить("пТекстНДС", "В том числе НДС"); 
			пИтогВсего = ИтогСумма;
		Иначе
			ДопДанныеПечати.Вставить("пТекстНДС", "Итого НДС");
			пИтогВсего = ИтогСумма + ИтогНДС;
		КонецЕсли;
		
		ДопДанныеПечати.Вставить("пИтогВсего", пИтогВсего);
		
		ОбластьИтоги.Параметры.Заполнить(ДопДанныеПечати);
		
		ТабличныйДокумент.Вывести(ОбластьИтоги);
		
		ДопДанныеПечати = Новый Структура;
		
		ДопДанныеПечати.Вставить("пИтогВсегоПрописью", ОбщегоНазначенияБГУ.СформироватьСуммуПрописью(пИтогВсего, ВыборкаШапка.ВалютаДокумента));
		ДопДанныеПечати.Вставить("пИтогНДСПрописью", ОбщегоНазначенияБГУ.СформироватьСуммуПрописью(ИтогНДС, ВыборкаШапка.ВалютаДокумента));
		ДопДанныеПечати.Вставить("РуководительФИО",  Справочники.Сотрудники.ФамилияИО(ВыборкаШапка.Руководитель, Истина, ВыборкаШапка.пДата));
		
		ДанныеПодписанта = Новый Структура("СсылкаНаОбъект, Период, Должность", ВыборкаШапка.Руководитель, ВыборкаШапка.пДата);
		Справочники.Сотрудники.ПолучитьДанныеСотрудника(ДанныеПодписанта);
		
		ДопДанныеПечати.Вставить("РуководительДолжность", ДанныеПодписанта.Должность);
		
		ОбластьПодвал.Параметры.Заполнить(ДопДанныеПечати);
		
		ТабличныйДокумент.Вывести(ОбластьПодвал);
		
		// В табличном документе зададим имя области, в которую был 
		// выведен объект. Нужно для возможности печати покомплектно.
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, 
			НомерСтрокиНачало, ОбъектыПечати, ВыборкаШапка.Ссылка, СведенияОДокументе.Документ);
		КонецЦикла;

	
	Возврат ТабличныйДокумент;
	
КонецФункции
Показать
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Airlord 23.03.22 09:15 Сейчас в теме
Добрый день! Полагаю на макете внешней печатной формы выделить область, загружать рисунок из хранилища и передавать на эту область.
ТабДок = Новый ТабличныйДокумент;
	ОтчетОбъект = РеквизитФормыВЗначение("Объект");
	Макет = ОтчетОбъект.ПолучитьМакет("Макет");
	ОбластьСтрока=Макет.ПолучитьОбласть("Строка|Наименование");
	ОбластьКартинка=Макет.ПолучитьОбласть("Строка|Картинка");
	Рисунок = ОбластьКартинка.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); 
	Рисунок.Верх = 0; 
	Рисунок.Лево = 0; 
	Рисунок.Высота = 5; 
	Рисунок.Ширина = 5; 
	Рисунок.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии);
	Для Каждого стр из Таблица Цикл
		ОбластьСтрока.Параметры.Наименование=стр.Наименование;
		Рисунок.Картинка = стр.Картинка;
		ТабДок.Вывести(ОбластьСтрока);
		ТабДок.Присоединить(ОбластьКартинка);
	КонецЦикла;	
	Возврат ТабДок;
Показать

код типа такого (пример присоединения в макете)
3. Ingvar1315 23.03.22 10:43 Сейчас в теме
(2) Благодарю за ответ, а как подтянуть типовую подстановку подписи и печати как в "Счет на оплату", форма то одна и таже?
Прикрепленные файлы:
4. Airlord 23.03.22 11:35 Сейчас в теме
Смотреть по тексту нужно. Так не подскажу.
Оставьте свое сообщение

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