--- title: Подключение к механизмам печати БСП --- # Общие модули В общем модуле `УправлениеПечатьюЛокализация` в методе `ПриОпределенииОбъектовСКомандамиПечати` добавляем информацию о собственных документах ```bsl Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт .... СписокОбъектов.Добавить(Документы.ФормированиеЗаписейРаздела7ДекларацииНДС); ////////////////////Свои документы СписокОбъектов.Добавить(Документы.МойДокумент1); СписокОбъектов.Добавить(Документы.МойДокумент2); .... КонецПроцедуры ``` # Подключение к подсистеме "Подключаемые команды" Подключаемся по инструкции см. `Подключение к подсистеме "Присоединенные Файлы"` # Модуль менеджера ## Добавление команд печати ```bsl Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт // Форма 1 КомандаПечати = КомандыПечати.Добавить(); КомандаПечати.Идентификатор = "МояПечатнаяФорма1"; // Идентификатор КомандаПечати.Представление = НСтр("ru = 'Моя форма 1'"); КомандаПечати.Порядок = 5; // Форма 2 КомандаПечати = КомандыПечати.Добавить(); КомандаПечати.Идентификатор = "МояПечатнаяФорма2"; // Идентификатор КомандаПечати.Представление = НСтр("ru = 'Моя форма 2'"); КомандаПечати.Порядок = 10; // Комплект документов КомандаПечати = КомандыПечати.Добавить(); КомандаПечати.Идентификатор = "МояПечатнаяФорма1,МояПечатнаяФорма2"; // идентификаторы команд КомандаПечати.Представление = НСтр("ru = 'Комплект документов'"); КомандаПечати.Порядок = 75; КонецПроцедуры ``` ## Добавление интерфейсной процедуры "Печать" ```bsl // Формирует печатные формы. // // Параметры: // МассивОбъектов - Массив из ЛюбаяСсылка - список объектов, для которых была выполняется команда печати // ПараметрыПечати - Структура - произвольные параметры, переданные при вызове команды печати; // КоллекцияПечатныхФорм - ТаблицаЗначений - возвращаемый параметр, коллекция сформированных печатных форм: // * ИмяМакета - Строка - идентификатор печатной формы; // * СинонимМакета - Строка - название печатной формы; // // * ТабличныйДокумент - ТабличныйДокумент - одна или несколько печатных форм, выведенных в один табличный документ // Для разметки печатных форм внутри табличного документа после вывода каждой печатной формы // необходимо вызывать процедуру УправлениеПечатью.ЗадатьОбластьПечатиДокумента; // Параметр не используется, если вывод печатных форм выполняется в формате офисных документов // (см. параметр "ОфисныеДокументы"); // // * ОфисныеДокументы - Соответствие из КлючИЗначение - коллекция печатных форм в формате офисных документов: // ** Ключ - Строка - адрес во временном хранилище двоичных данных печатной формы; // ** Значение - Строка - имя файла печатной формы. // // * ИмяФайлаПечатнойФормы - Строка - имя файла печатной формы при сохранении в файл или отправке в качестве // почтового вложения. Не используется для печатных форм в формате офисных документов. // По умолчанию имя файла устанавливается в формате // "[НазваниеПечатнойФормы] № [Номер] от [Дата]" для документов, // "[НазваниеПечатнойФормы] - [ПредставлениеОбъекта] - [ТекущаяДата]" для объектов. // - Соответствие из КлючИЗначение - имена файлов для каждого объекта: // ** Ключ - ЛюбаяСсылка - ссылка на объект печати из коллекции МассивОбъектов; // ** Значение - Строка - имя файла; // // * Экземпляров - Число - количество копий, которое необходимо вывести на печать; // * ПолныйПутьКМакету - Строка - используется для быстрого перехода к редактированию макета печатной формы // в общей форме ПечатьДокументов; // * ДоступенВыводНаДругихЯзыках - Булево - необходимо установить значение Истина, если печатная форма адаптирована // для вывода на произвольном языке. // // ОбъектыПечати - СписокЗначений - выходной параметр, соответствие между объектами и именами областей в табличных // документах, заполняется автоматически // при вызове УправлениеПечатью.ЗадатьОбластьПечатиДокумента: // * Значение - ЛюбаяСсылка - ссылка из коллекции МассивОбъектов, // * Представление - Строка - имя области с объектом в табличных документах; // // ПараметрыВывода - Структура - настройки вывода печатных форм: // * ПараметрыОтправки - Структура - для автоматического заполнения полей в форме создания письма при отправке // сформированных печатных форм по почте: // ** Получатель - см. РаботаСПочтовымиСообщениямиКлиент.ПараметрыОтправкиПисьма.Получатель // ** Тема - см. РаботаСПочтовымиСообщениямиКлиент.ПараметрыОтправкиПисьма.Тема // ** Текст - см. РаботаСПочтовымиСообщениямиКлиент.ПараметрыОтправкиПисьма.Текст // * КодЯзыка - Строка - язык, на котором требуется сформировать печатную форму. // Состоит из кода языка по 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(МассивОбъектов, ОбъектыПечати) ТабДок = Новый ТабличныйДокумент; ... // Получаем макет, заполняем, возвращаем ... Возврат ТабДок; КонецФункции ``` ## Список возможных параметров команды печати (для справки) ```bsl // Создает пустую таблицу с описанием команд печати. // Таблица команд печати передается в процедуры ДобавитьКомандыПечати, // размещенные в модулях менеджеров объектов конфигурации, которые перечислены в процедуре // УправлениеПечатьюПереопределяемый.ПриОпределенииОбъектовСКомандамиПечати. // // Возвращаемое значение: // ТаблицаЗначений: // // * Идентификатор - Строка - идентификатор команды печати, по которому менеджер печати определяет печатную // форму, которую необходимо сформировать. // Например, "СчетЗаказ". // // Для печати нескольких печатных форм можно указывать одновременно несколько их // идентификаторов (строкой, через запятую либо массивом строк), например: // "СчетЗаказ,ГарантийноеПисьмо". // // Если необходимо задать количество копий печати для печатной формы, то ее // идентификатор нужно продублировать столько раз, сколько копий необходимо // сформировать. При этом следует учитывать, что порядок следования печатных // форм в комплекте будет соответствовать порядку идентификаторов печатных форм, // указанных в этом параметре. Например (2 счета на оплату + 1 гарантийное письмо): // "СчетЗаказ,СчетЗаказ,ГарантийноеПисьмо". // // Идентификатор печатной формы может содержать в себе и альтернативный менеджер // печати, если он отличается от указанного в параметре МенеджерПечати, // например: "СчетЗаказ,Обработка.ПечатнаяФорма.ГарантийноеПисьмо". // // В этом примере ГарантийноеПисьмо формируется в менеджере печати // Обработка.ПечатнаяФорма, а СчетЗаказ - в менеджере печати, указанном в // параметре МенеджерПечати. // // Для печатных форм, менеджером печати которых является общий модуль // "УправлениеПечатью", в качестве идентификатора необходимо указать полный путь к макету. // Например, "Документ.СчетНаОплатуПокупателю.ПФ_MXL_СчетНаОплату". // // - Массив - список идентификаторов команд печати. // // * Представление - Строка - представление команды в меню Печать. // Например, "Счет на оплату". // // * МенеджерПечати - Строка - (необязательный) имя объекта, в модуле менеджера которого располагается // процедура Печать, формирующая табличные документы для этой команды. // Если печатная форма формируется автоматически по данным печати и макету, то // в параметре необходимо указать общий модуль "УправлениеПечатью". // Значение по умолчанию - имя модуля менеджера объекта. // Например, "Документ.СчетНаОплатуПокупателю". // * ТипыОбъектовПечати - Массив - (необязательный) список типов объектов, для которых предназначена команда // печати. Параметр предназначен для команд печати в журналах документов, где // требуется проверка передаваемого типа объекта перед вызовом менеджера печати. // Если список не заполнен, то при автоматическом создании списка команд печати // в журнале документов он заполняется типом объекта, из которого была // импортирована команда печати. // // * Обработчик - Строка - (необязательный) клиентский обработчик команды, в который необходимо передать // управление вместо стандартного обработчика команды Печать. Используется, // например, когда печатная форма формируется на клиенте. // Формат "<ИмяОбщегоМодуля>.<ИмяПроцедуры>" используется, когда процедура размещена // в общем модуле. // Формат "<ИмяПроцедуры>" используется, когда процедура размещена // в модуле основной формы отчета или обработки, указанной в МенеджерПечати. // Например, // КомандаПечати.Обработчик = "ЗащитаПерсональныхДанныхКлиент.ОткрытьФормуСогласиеНаОбработкуПерсональныхДанных"; // Пример обработчика в модуле формы: // // Формирует печатную форму <представление печатной формы>. // // // // Параметры: // // ПараметрыПечати - Структура - сведения о печатной форме. // // * ОбъектыПечати - Массив - массив ссылок выбранных объектов. // // * Форма - ФормаКлиентскогоПриложения - форма, из которой вызвана // // команда печати. // // * ДополнительныеПараметры - Структура - дополнительные параметры печати. // // Прочие ключи структуры соответствуют колонкам таблицы КомандыПечати, // // подробнее см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати. // // // &НаКлиенте // Функция <ИмяФункции>(ПараметрыПечати) Экспорт // // Обработчик печати. // КонецФункции // Следует иметь в виду, что обработчик вызывается при помощи метода Вычислить, // поэтому в качестве обработчика может выступать только функция. // При этом возвращаемое значение функции никак в дальнейшем не используется подсистемой. // // * Порядок - Число - (необязательный) Значение от 1 до 100, указывающее порядок размещения команды // по отношению к другим командам. Сортировка команд меню Печать осуществляется // сначала по полю Порядок, затем по представлению. // Значение по умолчанию - 50. // // * Картинка - Картинка - (необязательный) Картинка, которая отображается возле команды в меню Печать. // Например, БиблиотекаКартинок.ФорматPDF. // // * СписокФорм - Строка - (необязательный) Имена форм через запятую, в которых должна отображаться // команда. Если параметр не указан, то команда печати будет отображаться во // всех формах объекта, где встроена подсистема Печать. // Например, "ФормаДокумента". // // * МестоРазмещения - Строка - (необязательный) Имя группы формы, в которую необходимо разместить // команду печати. Параметр необходимо использовать только в случае, когда на // форме размещается более одного подменю "Печать". В остальных случаях место // размещения необходимо задавать в модуле формы при вызове // метода ПодключаемыеКоманды.ПриСозданииНаСервере. // // * ЗаголовокФормы - Строка - (необязательный) Произвольная строка, переопределяющая стандартных заголовок // формы "Печать документов". Например, "Настраиваемый комплект". // // * ФункциональныеОпции - Строка - (необязательный) Имена функциональных опций через запятую, от которых зависит // доступность команды печати. // // * УсловияВидимости - Массив - (необязательный) Коллекция условий видимости команды в зависимости от // контекста. Условия видимости команды задаются при помощи процедуры // ДобавитьУсловиеВидимостиКоманды. // Если параметр не задан, команда видна вне зависимости от контекста. // // * ПроверкаПроведенияПередПечатью - Булево - (необязательный) Признак необходимости проверки проведенности // документов перед печатью. Если выбран хотя бы один непроведенный документ, то // перед выполнением команды печати возникает диалог проведения. // Для непроведенных документов команда печати не выполняется. // Если параметр не указан, то проверка проведенности не выполняется. // // * СразуНаПринтер - Булево - (необязательный) Признак необходимости печати документов без предварительного // просмотра, сразу на принтер. Если параметр не указан, то при выборе команды // печати открывается форма предварительного просмотра "Печать документов". // // * ФорматСохранения - ТипФайлаТабличногоДокумента - (необязательный) Применяется для быстрого сохранения печатной // формы (без дополнительных действий) в различные форматы, отличные от mxl. // Если параметр не указан, то формируется обычный mxl. // Например, ТипФайлаТабличногоДокумента.PDF. // // При выборе команды печати сразу открывается сформированный в формате PDF // документ. // // * ПереопределитьПользовательскиеНастройкиКоличества - Булево - (необязательный) Признак необходимости отключения в // форме ПечатьДокументов механизма сохранения/восстановления выбранного // пользователем количества экземпляров на печать. Если параметр не указан, то // механизм сохранения/восстановления настроек будет работать при открытии формы. // ПечатьДокументов. // // * ДополнитьКомплектВнешнимиПечатнымиФормами - Булево - (необязательный) Признак необходимости дополнить комплект // документов всеми подключенными к объекту внешними печатными формами // (подсистема ДополнительныеОтчетыИОбработки). Если параметр не указан, внешние // печатные формы не добавляются в комплект. // // * ФиксированныйКомплект - Булево - (необязательный) Признак необходимости блокировки от изменения пользователем // состава комплекта документов. Если параметр не указан, то пользователь сможет // исключать отдельные печатные формы из комплекта в форме ПечатьДокументов, а // также изменять их количество. // // * ДополнительныеПараметры - Структура - (необязательный) произвольные параметры для передачи в менеджер печати. // // * НеВыполнятьЗаписьВФорме - Булево - (необязательный) Признак необходимости отключения механизма записи объекта // перед выполнением команды печати. Используется в исключительных случаях. Если // параметр не указан, производится запись объекта в случае, если в форме // объекта установлен признак модифицированности. // // * ТребуетсяРасширениеРаботыСФайлами - Булево - (необязательный) Признак необходимости подключения расширения для работы // с 1С:Предприятием перед выполнением команды. Если параметр не указан, расширение // подключаться не будет. // // * ОсновнаяПечатнаяФорма - Булево - (необязательный) Признак определяющий возможность запоминания // наименований сформированных печатных форм. // // * НаименованиеПечатнойФормы - Строка - (необязательный) Наименование, которое будет сохранено при установленном // признаке "ОсновнаяПечатнаяФорма". Если не заполнено, будет запоминаться значение // из поля "Представление". // Функция СоздатьКоллекциюКомандПечати() Экспорт ``` # Подключение к подсистеме "Подключаемые команды" См. `Подключение к подсистемам - Подключение к подсистеме "Подключаемые команды"`