Печатная форма БСП формируется пустой документ

1. user1816391 15.08.22 10:59 Сейчас в теме +0.45 $m
В модуль менеджере документа создал

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Обработчик = "СЭ_УправлениеПечатьюКлиент.Г_ПечатьДокументДоговорОПолнойМатОтв";
	КомандаПечати.МенеджерПечати = "";
	КомандаПечати.Идентификатор = "ПФ_DOC_ДоговорОПолнойИндивидуальнойМатериальнойОтветственно­стиMicrosoftWord_ru";
	КомандаПечати.Представление = НСтр("ru = '(Г) Договор о полной индивидуальной материальной ответственности (Microsoft Word)'");
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;	
	
КонецПроцедуры
Показать


В форму документа добавил

&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
 
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
 
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
Показать


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

КонецПроцедуры


В Общий модуль "УправлениеПечатьюПереопределяемый" добавил

Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт

СписокОбъектов.Добавить(Документы.СЭ_ДоговорМОЛ_Индивидуальный);

КонецПроцедуры


В Общие модули "УправлениеПечатьюКлиент" и "УправлениеПечатьюСервер" добавил команды для печати

#Область Документ_ПолнаяИндивидуальнаяМатОтв_

Функция Г_ПечатьДокументДоговорОПолнойМатОтв(ОписаниеКоманды) Экспорт

	Если ОписаниеКоманды.Идентификатор = "ПФ_DOC_ДоговорОПолнойИндивидуальнойМатериальнойОтветственно­стиMicrosoftWord_ru" Тогда
		Г_ПечатьОбИндивидМатОтвMicrosoftWord(ОписаниеКоманды);
	КонецЕсли;
	
КонецФункции

Функция Г_ПечатьОбИндивидМатОтвMicrosoftWord(ОписаниеКоманды)
	
	Для Каждого ДокументСсылка Из ОписаниеКоманды.ОбъектыПечати Цикл
		Попытка
			
			ИмяМакета = "ПФ_DOC_ДоговорОПолнойИндивидуальнойМатериальнойОтветственно­стиMicrosoftWord_ru";
			ТипМакета = "doc";
			
			Прогресс = 1;
			Состояние(НСтр("ru = 'Выполняется формирование печатных форм'"), Прогресс);
		
			МакетИДанныеОбъекта 	= СЭ_УправлениеПечатьюСервер.МакетыИДанныеОбъектовДляПечати("Документ.СЭ_ДоговорМОЛ_Индивидуальный", ИмяМакета, ОписаниеКоманды.ОбъектыПечати);
			ДанныеОбъекта			= МакетИДанныеОбъекта.ДанныеОбъекта;
			ДвоичныеДанныеМакетов 	= МакетИДанныеОбъекта.Макеты.ДвоичныеДанныеМакетов;
			Области 				= МакетИДанныеОбъекта.Макеты.ОписаниеСекций;
			
			ОчиститьСообщения();
					
			Макет		  = УправлениеПечатьюКлиент.ИнициализироватьМакетОфисногоДокумента(ДвоичныеДанныеМакетов[ИмяМакета], ТипМакета, ИмяМакета);
			ПечатнаяФорма = УправлениеПечатьюКлиент.ИнициализироватьПечатнуюФорму(ТипМакета, Макет.НастройкиСтраницыМакета, Макет);
			
			Прогресс = 20;
			Состояние(НСтр("ru = 'Выполняется формирование печатных форм'"), Прогресс);
			
			//Вколонтитул
			Область = УправлениеПечатьюКлиент.ОбластьМакета(Макет, Области[ИмяМакета]["ВерхнийКолонтитул"]);
			УправлениеПечатьюКлиент.ПрисоединитьОбласть(ПечатнаяФорма, Область, Ложь);
		
			//Заголовок
			Область = УправлениеПечатьюКлиент.ОбластьМакета(Макет, Области[ИмяМакета]["Заголовок"]);
			УправлениеПечатьюКлиент.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта.ДанныеЗаголовка, Ложь);
			
			Прогресс = 50;
			Состояние(НСтр("ru = 'Выполняется формирование печатных форм'"), Прогресс);
			
			//ОбщийТекст1
			//Область = УправлениеПечатьюКлиент.ОбластьМакета(Макет, Области[ИмяМакета]["ОбщийТекст1"]);
			//УправлениеПечатьюКлиент.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта.ДанныеОбщийТекст1, Ложь);
			//		
			////СтрокаРуководительПодразделения
			//Область = УправлениеПечатьюКлиент.ОбластьМакета(Макет, Области[ИмяМакета]["СтрокаРуководительПодразделения"]);
			//УправлениеПечатьюКлиент.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта.СтрокаРуководительПодразделения, Ложь);
			//		
			////СтрокаКоммиссии
			//Область = УправлениеПечатьюКлиент.ОбластьМакета(Макет, Области[ИмяМакета]["СтрокаЧленовКоммиссии"]);
			//УправлениеПечатьюКлиент.ПрисоединитьИЗаполнитьКоллекцию(ПечатнаяФорма, Область, ДанныеОбъекта.СтруктураЧК, Ложь);
			
			Прогресс = 100;
			Состояние(НСтр("ru = 'Формирование печатной формы завершено'"), Прогресс);
			
			УправлениеПечатьюКлиент.ПоказатьДокумент(ПечатнаяФорма);
			ОчиститьСообщения();
		
		Исключение
			
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
			
			УправлениеПечатьюКлиент.ОчиститьСсылки(ПечатнаяФорма);
			УправлениеПечатьюКлиент.ОчиститьСсылки(Макет);
			
			Возврат Ложь;
			
		КонецПопытки;
		
		УправлениеПечатьюКлиент.ОчиститьСсылки(ПечатнаяФорма, Ложь);
		УправлениеПечатьюКлиент.ОчиститьСсылки(Макет);

	КонецЦикла;
	
КонецФункции
#КонецОбласти
Показать



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

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

	КонецЕслИ;

КонецФункции	
	
#КонецОбласти
Показать


Но при всём этом формируется пустой документ Word
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1278383 5 15.08.22 11:10 Сейчас в теме
МенеджерПечати пустой
3. user1816391 15.08.22 11:11 Сейчас в теме
(2) А что там должно быть?
5. user1816391 15.08.22 11:16 Сейчас в теме
(4) у меня же написан обработчик
Оставьте свое сообщение

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