При разработке внешних печатных форм или отчетов в конфигурациях на базе Библиотеки стандартных подсистем (БСП), таких как «Управление холдингом», «ERP» или «Бухгалтерия предприятия 3.0», разработчики часто сталкиваются с тем, что в заголовке окна предварительного просмотра или в очереди печати принтера отображается стандартный текст «Печать документа». Это выглядит неинформативно для пользователя, особенно если печатается сразу несколько разных форм.
В этой статье мы подробно разберем, как программно управлять заголовками, именами файлов и параметрами вывода табличных документов, чтобы сделать интерфейс вашей системы более профессиональным и понятным.
Чаще всего внешние обработки используют стандартный механизм печати БСП через процедуру Печать. В этой процедуре происходит формирование табличного документа и его добавление в общую коллекцию. Именно здесь закладывается имя, которое пользователь увидит в списке печатных форм и в заголовке окна.
Проанализируем типовой код вывода документа в коллекцию:
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФ_MXL_ПечатнаяФорма") Тогда
ТабДок = СформироватьПечатнуюФорму(МассивОбъектов); // Ваша функция формирования
// Третий параметр в методе ниже — это и есть заголовок (Синоним)
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ПФ_MXL_ПечатнаяФорма",
"Заголовок, который вы хотите видеть", // Поменяйте "Печать документа" на это
ТабДок
);
КонецЕсли;
КонецПроцедуры
Разберем этот момент: если вы передаете в третий параметр жестко заданную строку "Печать документа", система будет использовать именно ее. Чтобы сделать заголовок динамическим (например, «Счет на оплату №...»), необходимо сформировать эту строку программно, основываясь на данных печатаемого объекта.
Иногда изменение синонима в коллекции недостаточно, особенно если вы используете нестандартные вызовы или хотите гарантировать, что имя документа сохранится при открытии его в отдельном окне. У объекта ТабличныйДокумент есть собственное свойство Заголовок.
Рассмотрим пример установки этого свойства непосредственно в коде формирования макета:
ТабДок = Новый ТабличныйДокумент;
ТабДок.Заголовок = "Реестр платежей от " + Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy");
// Далее идет заполнение макета...
Важный нюанс: это свойство определяет заголовок окна, если табличный документ открывается методом Показать(), а также может влиять на имя задания в очереди печати Windows.
В стандартных процедурах печати БСП передается параметр ПараметрыВывода. Это структура, которая позволяет управлять поведением формы печати. В ней есть поле Заголовок, которое система анализирует перед открытием формы ПечатьДокументов.
Посмотрим, как можно модифицировать этот параметр:
// Внутри процедуры Печать
ПараметрыВывода.Заголовок = "Печать реестра документов";
Если этот параметр заполнен, общая форма печати БСП (ОбщаяФорма.ПечатьДокументов) при создании на сервере установит заголовок окна равным этому значению. Если же параметр пуст, система обратится к метаданным самой формы или к синонимам из коллекции. Для отправки произвольного табличного документа в эту форму можно использовать обработку для печати через типовой механизм БСП.
Выясним, как сделать так, чтобы при сохранении документа (например, в PDF) система предлагала осмысленное имя файла, а не «Таблица.mxl» или «Печать документа». Для этого используются два важных свойства табличного документа: ИспользуемоеИмяФайла и ИмяПараметровПечати.
Пример реализации:
ТабДок.ИспользуемоеИмяФайла = "Счет_на_оплату_№123";
ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_МОЯ_ВНЕШНЯЯ_ОБРАБОТКА_СЧЕТ";
Если вы печатаете из внешней обработки и используете вызов УправлениеПечатьюКлиент.ПечатьДокументов, обратите внимание на то, как вы заполняете коллекцию. Вы можете напрямую обратиться к заголовку формы в момент ее открытия, но это считается «плохим тоном» в программировании 1С. Правильнее всего — корректно подготовить данные на стороне сервера в процедуре формирования печатной формы.
Проанализируем ситуацию, описанную в сообщениях форума. Пользователь выяснил, что заголовок берется из ОбщаяФорма.ПечатьДокументов. Если вы хотите изменить заголовок окна «на лету» из кода формы (что упоминалось в сообщении 9), можно использовать следующий прием в процедуре ПриСозданииНаСервере или при открытии:
ЭтаФорма.Заголовок = "Ваш новый заголовок";
Однако помните, что при использовании БСП лучше придерживаться штатных механизмов: передавать правильные синонимы в КоллекцияПечатныхФорм и заполнять ПараметрыВывода. Это гарантирует стабильную работу при обновлениях платформы и конфигурации. Для изучения корректной структуры кода подойдёт пример реализации внешней печатной формы на БСП.
Чтобы избавиться от назойливого заголовка «Печать документа», рекомендуется выполнить следующие шаги:
Печать при вызове УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию всегда указывайте осмысленный третий параметр.ТабДок.Заголовок для самого объекта табличного документа.ТабДок.ИспользуемоеИмяФайла, чтобы пользователи могли удобно сохранять результаты работы.ПараметрыВывода.Заголовок.Используя эти методы, вы сделаете работу пользователей в «1С:Предприятии» гораздо более комфортной, а ваши печатные формы — профессиональными.