2025-04-16 23:54:08 +05:00

32 KiB
Raw Blame History

title
title
Подключение к механизмам печати БСП

Общие модули

В общем модуле УправлениеПечатьюЛокализация в методе ПриОпределенииОбъектовСКомандамиПечати добавляем информацию о собственных документах

Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт
               ....
               СписокОбъектов.Добавить(Документы.ФормированиеЗаписейРазделаекларацииНДС);
               ////////////////////Свои документы
               СписокОбъектов.Добавить(Документы.МойДокумент1);
               СписокОбъектов.Добавить(Документы.МойДокумент2);
               ....
КонецПроцедуры 

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

Подключаемся по инструкции см. Подключение к подсистеме "Присоединенные Файлы"

Модуль менеджера

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

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	// Форма 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(МассивОбъектов, ОбъектыПечати)
    
    ТабДок = Новый ТабличныйДокумент;
    ...
    // Получаем макет, заполняем, возвращаем
    ...

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

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

Список возможных параметров команды печати (для справки)

// Создает пустую таблицу с описанием команд печати.
// Таблица команд печати передается в процедуры ДобавитьКомандыПечати,
// размещенные в модулях менеджеров объектов конфигурации, которые перечислены в процедуре
// УправлениеПечатьюПереопределяемый.ПриОпределенииОбъектовСКомандамиПечати.
//
// Возвращаемое значение:
//  ТаблицаЗначений:
//
//   * Идентификатор - Строка - идентификатор команды печати, по которому менеджер печати определяет печатную
//                             форму, которую необходимо сформировать.
//                             Например, "СчетЗаказ".
//
//                              Для печати нескольких печатных форм можно указывать одновременно несколько их
//                              идентификаторов (строкой, через запятую либо массивом строк), например:
//                              "СчетЗаказ,ГарантийноеПисьмо".
//
//                              Если необходимо задать количество копий печати для печатной формы, то ее
//                              идентификатор нужно продублировать столько раз, сколько копий необходимо
//                              сформировать. При этом следует учитывать, что порядок следования печатных
//                              форм в комплекте будет соответствовать порядку идентификаторов печатных форм,
//                              указанных в этом параметре. Например (2 счета на оплату + 1 гарантийное письмо):
//                              "СчетЗаказ,СчетЗаказ,ГарантийноеПисьмо".
//
//                              Идентификатор печатной формы может содержать в себе и альтернативный менеджер
//                              печати, если он отличается от указанного в параметре МенеджерПечати,
//                              например: "СчетЗаказ,Обработка.ПечатнаяФорма.ГарантийноеПисьмо".
//
//                              В этом примере ГарантийноеПисьмо формируется в менеджере печати
//                              Обработка.ПечатнаяФорма, а СчетЗаказ - в менеджере печати, указанном в
//                              параметре МенеджерПечати.
//
//                              Для печатных форм, менеджером печати которых является общий модуль
//                             "УправлениеПечатью", в качестве идентификатора необходимо указать полный путь к макету.
//                             Например, "Документ.СчетНаОплатуПокупателю.ПФ_MXL_СчетНаОплату".
//
//                   - Массив - список идентификаторов команд печати.
//
//   * Представление - Строка            - представление команды в меню Печать.
//                                         Например, "Счет на оплату".
//
//   * МенеджерПечати - Строка           - (необязательный) имя объекта, в модуле менеджера которого располагается
//                                        процедура Печать, формирующая табличные документы для этой команды.
//                                        Если печатная форма формируется автоматически по данным печати и макету, то
//                                        в параметре необходимо указать общий модуль "УправлениеПечатью".
//                                        Значение по умолчанию - имя модуля менеджера объекта.
//                                        Например, "Документ.СчетНаОплатуПокупателю".
//   * ТипыОбъектовПечати - Массив       - (необязательный) список типов объектов, для которых предназначена команда
//                                        печати. Параметр предназначен для команд печати в журналах документов, где
//                                        требуется проверка передаваемого типа объекта перед вызовом менеджера печати.
//                                        Если список не заполнен, то при автоматическом создании списка команд печати
//                                        в журнале документов он заполняется типом объекта, из которого была
//                                        импортирована команда печати.
//
//   * Обработчик    - Строка            - (необязательный) клиентский обработчик команды, в который необходимо передать
//                                        управление вместо стандартного обработчика команды Печать. Используется,
//                                        например, когда печатная форма формируется на клиенте.
//                                        Формат "<ИмяОбщегоМодуля>.<ИмяПроцедуры>" используется, когда процедура размещена
//                                        в общем модуле.
//                                        Формат "<ИмяПроцедуры>" используется, когда процедура размещена
//                                        в модуле основной формы отчета или обработки, указанной в МенеджерПечати.
//                                        Например,
//                                          КомандаПечати.Обработчик = "ЗащитаПерсональныхДанныхКлиент.ОткрытьФормуСогласиеНаОбработкуПерсональныхДанных";
//                                        Пример обработчика в модуле формы:
//                                          // Формирует печатную форму <представление печатной формы>.
//                                          //
//                                          // Параметры:
//                                          //   ПараметрыПечати - Структура - сведения о печатной форме.
//                                          //       * ОбъектыПечати - Массив - массив ссылок выбранных объектов.
//                                          //       * Форма - ФормаКлиентскогоПриложения - форма, из которой вызвана
//                                          //                                              команда печати.
//                                          //       * ДополнительныеПараметры - Структура - дополнительные параметры печати.
//                                          //       Прочие ключи структуры соответствуют колонкам таблицы КомандыПечати,
//                                          //       подробнее см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати.
//                                          //
//                                          &НаКлиенте
//                                          Функция <ИмяФункции>(ПараметрыПечати) Экспорт
//                                            // Обработчик печати.
//                                          КонецФункции
//                                        Следует иметь в виду, что обработчик вызывается при помощи метода Вычислить,
//                                        поэтому в качестве обработчика может выступать только функция.
//                                        При этом возвращаемое значение функции никак в дальнейшем не используется подсистемой.
//
//   * Порядок       - Число             - (необязательный) Значение от 1 до 100, указывающее порядок размещения команды
//                                        по отношению к другим командам. Сортировка команд меню Печать осуществляется
//                                        сначала по полю Порядок, затем по представлению.
//                                        Значение по умолчанию - 50.
//
//   * Картинка      - Картинка          - (необязательный) Картинка, которая отображается возле команды в меню Печать.
//                                         Например, БиблиотекаКартинок.ФорматPDF.
//
//   * СписокФорм    - Строка            - (необязательный) Имена форм через запятую, в которых должна отображаться
//                                        команда. Если параметр не указан, то команда печати будет отображаться во
//                                        всех формах объекта, где встроена подсистема Печать.
//                                         Например, "ФормаДокумента".
//
//   * МестоРазмещения - Строка          - (необязательный) Имя группы формы, в которую необходимо разместить
//                                        команду печати. Параметр необходимо использовать только в случае, когда на
//                                        форме размещается более одного подменю "Печать". В остальных случаях место
//                                        размещения необходимо задавать в модуле формы при вызове
//                                        метода ПодключаемыеКоманды.ПриСозданииНаСервере.
//
//   * ЗаголовокФормы  - Строка          - (необязательный) Произвольная строка, переопределяющая стандартных заголовок
//                                        формы "Печать документов". Например, "Настраиваемый комплект".
//
//   * ФункциональныеОпции - Строка      - (необязательный) Имена функциональных опций через запятую, от которых зависит
//                                        доступность команды печати.
//
//   * УсловияВидимости - Массив         - (необязательный) Коллекция условий видимости команды в зависимости от
//                                        контекста. Условия видимости команды задаются при помощи процедуры
//                                        ДобавитьУсловиеВидимостиКоманды.
//                                        Если параметр не задан, команда видна вне зависимости от контекста.
//
//   * ПроверкаПроведенияПередПечатью    - Булево - (необязательный) Признак необходимости проверки проведенности
//                                        документов перед печатью. Если выбран хотя бы один непроведенный документ, то
//                                        перед выполнением команды печати возникает диалог проведения.
//                                        Для непроведенных документов команда печати не выполняется.
//                                        Если параметр не указан, то проверка проведенности не выполняется.
//
//   * СразуНаПринтер - Булево           - (необязательный) Признак необходимости печати документов без предварительного
//                                        просмотра, сразу на принтер. Если параметр не указан, то при выборе команды
//                                        печати открывается форма предварительного просмотра "Печать документов".
//
//   * ФорматСохранения - ТипФайлаТабличногоДокумента - (необязательный) Применяется для быстрого сохранения печатной
//                                        формы (без дополнительных действий) в различные форматы, отличные от mxl.
//                                        Если параметр не указан, то формируется обычный mxl.
//                                        Например, ТипФайлаТабличногоДокумента.PDF.
//
//                                        При выборе команды печати сразу открывается сформированный в формате PDF
//                                        документ.
//
//   * ПереопределитьПользовательскиеНастройкиКоличества - Булево - (необязательный) Признак необходимости отключения в
//                                        форме ПечатьДокументов механизма сохранения/восстановления выбранного
//                                        пользователем количества экземпляров на печать. Если параметр не указан, то
//                                        механизм сохранения/восстановления настроек будет работать при открытии формы.
//                                        ПечатьДокументов.
//
//   * ДополнитьКомплектВнешнимиПечатнымиФормами - Булево - (необязательный) Признак необходимости дополнить комплект
//                                        документов всеми подключенными к объекту внешними печатными формами
//                                        (подсистема ДополнительныеОтчетыИОбработки). Если параметр не указан, внешние
//                                        печатные формы не добавляются в комплект.
//
//   * ФиксированныйКомплект - Булево    - (необязательный) Признак необходимости блокировки от изменения пользователем
//                                        состава комплекта документов. Если параметр не указан, то пользователь сможет
//                                        исключать отдельные печатные формы из комплекта в форме ПечатьДокументов, а
//                                        также изменять их количество.
//
//   * ДополнительныеПараметры - Структура - (необязательный) произвольные параметры для передачи в менеджер печати.
//
//   * НеВыполнятьЗаписьВФорме - Булево  - (необязательный) Признак необходимости отключения механизма записи объекта
//                                        перед выполнением команды печати. Используется в исключительных случаях. Если
//                                        параметр не указан, производится запись объекта в случае, если в форме
//                                        объекта установлен признак модифицированности.
//
//   * ТребуетсяРасширениеРаботыСФайлами - Булево - (необязательный) Признак необходимости подключения расширения для работы
//                                        с 1С:Предприятием перед выполнением команды. Если параметр не указан, расширение
//                                        подключаться не будет.
//
//   * ОсновнаяПечатнаяФорма             - Булево - (необязательный) Признак определяющий возможность запоминания
//                                        наименований сформированных печатных форм.
//
//   * НаименованиеПечатнойФормы         - Строка - (необязательный) Наименование, которое будет сохранено при установленном
//                                         признаке "ОсновнаяПечатнаяФорма". Если не заполнено, будет запоминаться значение
//                                         из поля "Представление".
//
Функция СоздатьКоллекциюКомандПечати() Экспорт

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

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