При работе с системой 1С:Предприятие 8.3, особенно в режиме управляемых форм, мы часто сталкиваемся с необходимостью вывода печатных форм на экран. По умолчанию, когда табличный документ открывается в новой вкладке или окне, его заголовок может быть стандартным, например, "Таблица". Однако для улучшения юзабилити и информативности важно, чтобы заголовок отображал осмысленное имя, такое как "Счет на оплату №123" или "Акт выполненных работ от 01.01.2023". Давайте разберем, как мы можем настроить это поведение и задать собственное имя для печатной формы.
Когда мы формируем печатную форму как объект ТабличныйДокумент и затем хотим вывести ее на экран в отдельной вкладке или окне, мы используем метод Показать() этого объекта. Именно этот метод предоставляет нам возможность указать желаемый заголовок.
Давайте посмотрим на синтаксис метода ТабличныйДокумент.Показать(). Он имеет несколько параметров, первый из которых как раз и отвечает за заголовок окна табличного документа:
Заголовок (необязательный, Тип: Строка): Это тот самый параметр, куда мы должны передать строку с желаемым заголовком. Если мы его не укажем, будет использован заголовок по умолчанию, который часто является "Таблица".ИмяФайла (необязательный, Тип: Строка): Этот параметр позволяет указать имя файла для сохранения табличного документа. Если значение не пустое, то при закрытии окна, если документ был изменен, пользователю будет предложено сохранить табличный документ в указанный файл.АктивизироватьОкно (необязательный, Тип: Булево): Определяет, следует ли активизировать открываемое окно табличного документа. Истина – активизировать окно; Ложь – открывать окно без активизации.Таким образом, для решения нашей основной задачи нам достаточно передать нужное строковое значение в первый параметр метода Показать(). Рассмотрим пример:
// Предположим, у нас есть объект ТабличныйДокумент, сформированный ранее
Перем ТабДок;
ТабДок = Новый ТабличныйДокумент;
// ... здесь код по формированию ТабДок ...
// Получаем имя документа или другие данные для заголовка
ИмяДокумента = "Счет на оплату № " + МойДокументОбъект.Номер + " от " + МойДокументОбъект.Дата;
// Выводим табличный документ на экран с заданным заголовком
ТабДок.Показать(ИмяДокумента);
В этом примере ИмяДокумента будет отображаться в заголовке вкладки или окна, где откроется печатная форма. Мы можем формировать эту строку динамически, используя данные из текущего документа, например, его номер, дату или наименование контрагента.
Нам важно убедиться, что платформа, с которой мы работаем, поддерживает этот механизм. В 1С:Предприятии 8.3 с управляемыми формами (режим "Такси" или обычный режим управляемых форм) это решение работает корректно и является стандартным способом установки заголовка.
Во многих современных конфигурациях 1С для формирования и вывода печатных форм используется Библиотека стандартных подсистем (БСП). БСП предоставляет унифицированный и гибкий механизм для работы с печатными формами, и установка заголовка здесь также предусмотрена.
При использовании БСП, заголовок печатной формы обычно устанавливается через специальную структуру ПараметрыВывода. Эту структуру мы передаем в экспортные процедуры или функции модуля объекта, отвечающие за формирование печатной формы. Рассмотрим шаги, которые мы должны выполнить:
ПараметрыВывода."ЗаголовокФормы" и присваиваем ему строковое значение, которое хотим видеть в заголовке.Давайте посмотрим на пример кода, который мы можем использовать в модуле объекта документа (например, в экспортной процедуре, отвечающей за команду печати):
// В экспортной процедуре печати модуля объекта документа
// Например, в процедуре, которая обрабатывает команду "Печать"
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
// ... здесь код по формированию табличного документа ...
// Создаем или получаем структуру ПараметрыВывода
Если ПараметрыВывода = Неопределено Тогда
ПараметрыВывода = Новый Структура();
КонецЕсли;
// Устанавливаем желаемый заголовок формы
// Например, используя данные текущего объекта
ЗаголовокПечатнойФормы = "Счет на оплату № " + ЭтотОбъект.Номер + " от " + Формат(ЭтотОбъект.Дата, "ДФ=dd.MM.yyyy");
ПараметрыВывода.Вставить("ЗаголовокФормы", ЗаголовокПечатнойФормы);
// ... далее код, который передает сформированный ТабДок и ПараметрыВывода
// в общие процедуры БСП для вывода на экран
// Например:
// УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "МояПечатнаяФорма", ЗаголовокПечатнойФормы, ТабДок, , , , ПараметрыВывода);
КонецПроцедуры
Использование структуры ПараметрыВывода является предпочтительным способом при работе с БСП, так как оно позволяет гибко управлять различными аспектами вывода печатных форм без изменения ядра механизмов БСП.
Иногда возникает ситуация, когда мы не выводим табличный документ в отдельное окно или вкладку, а отображаем его непосредственно на текущей управляемой форме в качестве реквизита. То есть, у нас есть поле типа ТабличноеПоле, связанное с реквизитом формы типа ТабличныйДокумент.
В этом случае прямые методы, такие как ТабличныйДокумент.Показать(), не применяются, поскольку документ уже отображается внутри существующей формы. У табличного поля, которое служит для отображения ТабличногоДокумента, нет свойства "Заголовок", которое бы влияло на его внутреннее содержимое таким образом, как мы хотим.
Давайте проанализируем эту ситуацию: если нам нужно задать заголовок для этого табличного документа, который встроен в форму, нам следует рассмотреть несколько подходов:
Заголовок самой управляемой формы. Это свойство формы устанавливается в процессе ее открытия или в обработчике события ПриСозданииНаСервере. Например:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// ...
ЭтотОбъект.Заголовок = "Просмотр печатной формы " + МойДокументОбъект.Представление;
// ...
КонецПроцедуры
Надпись, и в его Текст записать необходимый заголовок. Этот подход дает нам большую гибкость в форматировании и расположении заголовка.Группу, для которой установить Заголовок. Это позволит визуально выделить область с табличным документом и снабдить ее пояснительным текстом.Важно понимать, что в данном сценарии мы управляем не заголовком самого табличного документа как такового (поскольку он не открывается как отдельный объект), а заголовком окружающего его контекста на форме.
Прежде чем приступать к изменениям, нам всегда полезно изучить существующий код конфигурации. В некоторых стандартных документах и отчетах 1С уже могут быть предопределенные механизмы установки заголовков, которые автоматически формируются на основе данных документа. В таких случаях мы можем найти, где именно происходит формирование заголовка, и определить, как его можно переопределить или модифицировать в соответствии с нашими требованиями. Это поможет нам избежать дублирования кода и потенциальных конфликтов.
В заключение, мы выяснили, что задать имя печатной формы в 1С:Предприятии 8.3 УФ достаточно просто, если мы понимаем, каким способом выводится табличный документ. Для вывода в отдельное окно или вкладку используем первый параметр метода ТабличныйДокумент.Показать(). Если работаем с БСП, то обращаемся к структуре ПараметрыВывода, добавляя в нее элемент "ЗаголовокФормы". В случае, когда табличный документ является реквизитом управляемой формы, мы управляем заголовком самой формы или используем вспомогательные элементы управления для отображения нужной информации.