Каталог решений - Реализация команды печати "Библиотека стандартных подсистем", редакция 3.1 (3.1.1.151)

Реализация команды печати "Библиотека стандартных подсистем", редакция 3.1 (3.1.1.151)

Реализация команды печати "Библиотека стандартных подсистем", редакция 3.1 (3.1.1.151)

В наличии

В новом релизе «БСП» произошли изменения в процедурах общих модулей, связанных с механизмом печати, и в процедурах их вызова в формах документов и в формах списков. Рассмотрим их.

Категория:

Описание

Предыстория:

Пишем свою конфигурацию с внедрением "БСП" и вот дошло дело до реализации механизма печати. Была найдена статья на Инфостарте //sale.itcity.ru/public/674880/ но, как оказалось, к "БСП" (3.1.1.151) она не подходит, поиски в интернете тоже не дали нужного результата.

Реализация команды печати "Библиотека стандартных подсистем", редакция 3.1 (3.1.1.151)

Пример: нужно на форме документа "Счет" реализовать печать документа. 

1. На форме документа в командной панели создаем "ГруппуПечать"

В форме документа создаем процедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтаФорма); 
	 
КонецПроцедуры

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

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

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

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

// Определяет объекты конфигурации, в модулях менеджеров которых размещена процедура ДобавитьКомандыПечати,
// формирующая список команд печати, предоставляемых этим объектом.
// Синтаксис процедуры ДобавитьКомандыПечати см. в документации к подсистеме.
//
// Параметры:
//  СписокОбъектов - Массив - менеджеры объектов с процедурой ДобавитьКомандыПечати.
//
Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт
	СписокОбъектов.Добавить(Документы.Счет);	
КонецПроцедуры

3. В документе Модуль менеджера

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "Счёт";
	КомандаПечати.Представление = НСтр("ru = 'Счёт'");
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;       
	
КонецПроцедуры


// Формирует печатные формы.
//
// Параметры:
//  МассивОбъектов  - Массив    - ссылки на объекты, которые нужно распечатать;
//  ПараметрыПечати - Структура - дополнительные настройки печати;
//  КоллекцияПечатныхФорм - ТаблицаЗначений - сформированные табличные документы (выходной параметр).
//  ОбъектыПечати         - СписокЗначений  - значение - ссылка на объект;
//                                            представление - имя области в которой был выведен объект (выходной
//                                                            параметр);
//  ПараметрыВывода       - Структура       - дополнительные параметры сформированных табличных документов (выходной
//                                            параметр).
//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

	// Печать накладной на перемещение.
	НужноПечататьМакет = УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Счёт");
	Если НужноПечататьМакет Тогда
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
			КоллекцияПечатныхФорм,
			"Счёт",
			НСтр("ru = 'Счёт'"),
			СформироватьПечатнуюФормуСчета(МассивОбъектов, ОбъектыПечати),
			,
			"Документ.Счёт.ПФ_MXL_МакетСчет");
	КонецЕсли;
		
КонецПроцедуры

И сама функция в Модуле менеджера где формируется печатная форма

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

	    Результат = Запрос.Выполнить().Выбрать();
КонецФункции

В итоге получится

Может, что-то упустил, может, что-то делаю не правильно)))

has been added to your cart:
Оформление заказа