2025-04-17 15:53:09 +05:00

11 KiB
Raw Blame History

title, slug
title slug
Добавление команд печати primery-snippety-bsp-i-tipovye-integratsiya-sobstvennyh-obektov/dobavlenie-komand-pechati

В модуле менеджера объекта

Добавление команд печати

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	// Форма 1
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "МояПечатнаяФорма1"; // Идентификатор
	КомандаПечати.Представление = НСтр("ru = 'Моя форма 1'");
	КомандаПечати.Порядок = 5;
	
	// Форма 2
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "МояПечатнаяФорма2"; // Идентификатор
	КомандаПечати.Представление = НСтр("ru = 'Моя форма 2'");
	КомандаПечати.Порядок = 10;
	
	// Комплект документов
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "МояПечатнаяФорма1,МояПечатнаяФорма2"; // идентификаторы команд
	КомандаПечати.Представление = НСтр("ru = 'Комплект документов'");
	КомандаПечати.Порядок = 75;
	
КонецПроцедуры

Добавление интерфейсной процедуры "Печать"

// Формирует печатные формы.
//
// Параметры:
//  МассивОбъектов - Массив из ЛюбаяСсылка - список объектов, для которых была выполняется команда печати
//  ПараметрыПечати - Структура - произвольные параметры, переданные при вызове команды печати;
//  КоллекцияПечатныхФорм - ТаблицаЗначений - возвращаемый параметр, коллекция сформированных печатных форм:
//   * ИмяМакета - Строка - идентификатор печатной формы;
//   * СинонимМакета - Строка - название печатной формы;
//
//   * ТабличныйДокумент - ТабличныйДокумент - одна или несколько печатных форм, выведенных в один табличный документ
//                         Для разметки печатных форм внутри табличного документа после вывода каждой печатной формы
//                         необходимо вызывать процедуру УправлениеПечатью.ЗадатьОбластьПечатиДокумента;
//                         Параметр не используется, если вывод печатных форм выполняется в формате офисных документов
//                         (см. параметр "ОфисныеДокументы");
//
//   * ОфисныеДокументы - Соответствие из КлючИЗначение - коллекция печатных форм в формате офисных документов:
//                         ** Ключ - Строка - адрес во временном хранилище двоичных данных печатной формы;
//                         ** Значение - Строка - имя файла печатной формы.
//
//   * ИмяФайлаПечатнойФормы - Строка - имя файла печатной формы при сохранении в файл или отправке в качестве
//                                      почтового вложения. Не используется для печатных форм в формате офисных документов.
//                                      По умолчанию имя файла устанавливается в формате
//                                      "[НазваниеПечатнойФормы] № [Номер] от [Дата]" для документов,
//                                      "[НазваниеПечатнойФормы] - [ПредставлениеОбъекта] - [ТекущаяДата]" для объектов.
//                           - Соответствие из КлючИЗначение - имена файлов для каждого объекта:
//                              ** Ключ - ЛюбаяСсылка - ссылка на объект печати из коллекции МассивОбъектов;
//                              ** Значение - Строка - имя файла;
//
//   * Экземпляров - Число - количество копий, которое необходимо вывести на печать;
//   * ПолныйПутьКМакету - Строка - используется для быстрого перехода к редактированию макета печатной формы
//                                  в общей форме ПечатьДокументов;
//   * ДоступенВыводНаДругихЯзыках - Булево - необходимо установить значение Истина, если печатная форма адаптирована
//                                            для вывода на произвольном языке.
//
//  ОбъектыПечати - СписокЗначений - выходной параметр, соответствие между объектами и именами областей в табличных
//                                   документах, заполняется автоматически
//                                   при вызове УправлениеПечатью.ЗадатьОбластьПечатиДокумента:
//   * Значение - ЛюбаяСсылка - ссылка из коллекции МассивОбъектов,
//   * Представление - Строка - имя области с объектом в табличных документах;
//
//  ПараметрыВывода - Структура - настройки вывода печатных форм:
//   * ПараметрыОтправки - Структура - для автоматического заполнения полей в форме создания письма при отправке
//                                     сформированных печатных форм по почте:
//     ** Получатель - см. РаботаСПочтовымиСообщениямиКлиент.ПараметрыОтправкиПисьма.Получатель
//     ** Тема       - см. РаботаСПочтовымиСообщениямиКлиент.ПараметрыОтправкиПисьма.Тема
//     ** Текст      - см. РаботаСПочтовымиСообщениямиКлиент.ПараметрыОтправкиПисьма.Текст
//   * КодЯзыка - Строка - язык, на котором требуется сформировать печатную форму.
//                         Состоит из кода языка по ISO 639-1 и, опционально, кода страны по ISO 3166-1, разделенных
//                         символом подчеркивания. Примеры: "en", "en_US", "en_GB", "ru", "ru_RU".
//
//   * ЗаголовокФормы - Строка - переопределяет заголовок формы печати документов (ПечатьДокументов).
//
//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

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

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

Функция ПечатнаяФорма1(МассивОбъектов, ОбъектыПечати)
    
    ТабДок = Новый ТабличныйДокумент;
    ...
    // Получаем макет, заполняем, возвращаем
    ...

    Возврат ТабДок;

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

Функция ПечатнаяФорма2(МассивОбъектов, ОбъектыПечати)
    
    ТабДок = Новый ТабличныйДокумент;
    ...
    // Получаем макет, заполняем, возвращаем
    ...

    Возврат ТабДок;

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

Подключение к подсистеме "Подключаемые команды"

См. Подключение к подсистемам - Подключение к подсистеме "Подключаемые команды"