Внешняя печатная форма бгу 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 Сейчас в теме
Смотреть по тексту нужно. Так не подскажу.
Оставьте свое сообщение
Вакансии
Программист/тестировщик
Москва
зарплата от 130 000 руб. до 150 000 руб.
Полный день

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

Программист 1С
Москва
зарплата от 130 000 руб. до 150 000 руб.
Полный день

Бизнес-аналитик
Москва
зарплата от 130 000 руб. до 150 000 руб.
Полный день

Ведущий консультант 1С:ERP
Москва
зарплата от 200 000 руб.
Полный день