Присоединение печатной формы в виде файла к объекту-основанию

andrey5565 283 5 7 10

Решение задачи по подключении печатной формы через подсистему БСП и активации функционала по прикреплению ПФ к документу-основанию!


Выделенный красной линей функционал недоступен по умолчанию при подключению ПФ, ВПФ (через БСП), для того чтобы активировать данный функционал нужно добавить две строчки кода в Функции, формирующей табличный документ. Данные строки выделены ниже: // +++ ДополнительныйФункционалСохранения. (Ниже расположена сама Функция формирования табличного документа)

Функция СформироватьПечатнуюФормуЗаказМатериаловВПроизводство(МассивОбъектов, ОбъектыПечати)

УстановитьПривилегированныйРежим(Истина);

ТабДок = Новый ТабличныйДокумент;
Макет  = УправлениеПечатью.МакетПечатнойФормы("Документ.ЗаказМатериаловВПроизводство.ПФ_MXL_ЗаказМатериаловВПроизводство"); 

ЗаголовокДокумента = Макет.ПолучитьОбласть("Заголовок"); 
ШапкаТаблицы       = Макет.ПолучитьОбласть("Шапка");   
СтрокаТаблицы	   = Макет.ПолучитьОбласть("Строка");   
ПодвалТаблицы	   = Макет.ПолучитьОбласть("Подвал");   
ПодвалМЗК		   = Макет.ПолучитьОбласть("ПодвалМЗК");   
ПодвалПроминком    = Макет.ПолучитьОбласть("ПодвалПроминкомНе60"); 

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

ПодразделениеЗакупки   = Справочники.СтруктураПредприятия.НайтиПоКоду("60");

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

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

0

Еще в "Все"

ИР Открыть список

Дополнительный доход для разработчика 1С не отходя от кассы (компьютера)

При запуске конфигурации, с подключенным расширением, возникает ошибка "Недопустимое состояние объекта"

Ищем разработчиков 1С. Платим 5000 рублей за 3 обработки + 80% с каждой оплаты

Модератору