Печатная форма на СКД. Как добавить в подсистему печати.

1. chakaka1 01.08.18 18:18 Сейчас в теме
Здравствуйте, есть УТ 11.3 "передоделанная" (версия БСП - 2.3.6.92), с множеством переделанных документов, для которых часто требуется делать печатные формы.

К примеру, есть Документ подключенный к подсистеме печати :
На форме (Документа, Списка): ПодменюПечать (вид - Подменю)
В модуле формы:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// СтандартныеПодсистемы.Печать
	УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма, Элементы.ПодменюПечать);
        // Конец СтандартныеПодсистемы.Печать
КонецПроцедуры
Показать


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


В модуле менеджера (стандартные процедуры и т.д)
т.е. в этом случае, можно без проблем добавить внешнюю печатную форму, и если будет корректное СведенияОВнешнейОбработке то всё она появляется в меню Печати.

У данного документа есть Макет = СКД, что я делаю на данном этапе:
КнопкаНаФорме - Команда - Команда:
&НаКлиенте
Процедура ПечатьСКД(Команда)  Экспорт
 
	Если ПроверкаВозможностиПечати() Тогда
	  Предупреждение("Документ нужно провести!", 60);
	  Возврат
	КонецЕсли;

	
	ТабДок = ПечатьНаФормеСКД();
	
	КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("Макет");
    ПечатнаяФорма = УправлениеПечатьюКлиент.ОписаниеПечатнойФормы(КоллекцияПечатныхФорм, "Макет");
    ПечатнаяФорма.СинонимМакета = "Макет";
    ПечатнаяФорма.ТабличныйДокумент = ТабДок;
    ПечатнаяФорма.ИмяФайлаПечатнойФормы = "Макет";
    
    ОбластиОбъектов = Новый СписокЗначений;
    УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбластиОбъектов);

	
		
КонецПроцедуры
Показать


&НаСервере
Функция ПечатьНаФормеСКД()
	
	Возврат Документы.ядПремированиеМенеджеровПоПродажам.ПечатьДва(Объект.Ссылка);
	
КонецФункции


В модуле менеджера документа:
Функция ПечатьДва(Документ) Экспорт	//Получаем макет СКД и возвращаем Табличный документ
	
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.АвтоМасштаб = Истина;
	ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
	ТабличныйДокумент.ОтображатьСетку = Ложь;
	ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_WB";


	Макет = Документы.ядПремированиеМенеджеровПоПродажам.ПолучитьМакет("Макет");

	//Создаем компановщик настроек
	КомпоновщикНастроекКомпоновкиДанных = Новый КомпоновщикНастроекКомпоновкиДанных;
	КомпоновщикНастроекКомпоновкиДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Макет)); 
	КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(Макет.НастройкиПоУмолчанию);
	
	Настройки = КомпоновщикНастроекКомпоновкиДанных.Настройки;

	//Установим значение параметров. 
	ПарамДокумент = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Документ")); 
	ПарамДокумент.Значение = Документ;
	ПарамДокумент.Использование = Истина;
	 
	ПарамОрганизация = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Организация"));
	ПарамОрганизация.Значение = Документ.Организация;
	ПарамОрганизация.Использование = Истина;
	
	ПарамДатаНачала = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаНачала"));
	ПарамДатаНачала.Значение =  НачалоДня(Документ.РасчетныйПериодДатаНачала);
	ПарамДатаНачала.Использование = Истина;
	 
	ПарамДатаОкончания = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаОкончания"));
	ПарамДатаОкончания.Значение = КонецДня(Документ.РасчетныйПериодДатаОкончания);
	ПарамДатаОкончания.Использование = Истина;

	//Подготовим макет к созданию отчета
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(Макет, Настройки); 
	ПроцессорКомпоновки = Новый  ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);

	//Выводим данные в табличный документ 
	ПроцессорВывода = Новый  ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);

	//Вернем табличный документ для дальнейшего вывода
	Возврат ТабличныйДокумент;
	
	
КонецФункции

Показать


ВОПРОС, как это всё встроить в подсистему печати!??
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Swetlana 26 02.08.18 11:12 Сейчас в теме
Что мешает сделать внешней печатной формой?
Оставьте свое сообщение

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