Как в самописной конфигурации на управляемых формах вывести панель управления в печатной форме

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке конфигураций на платформе 1С:Предприятие 8.3 с нуля (без использования Библиотеки стандартных подсистем — БСП) программисты часто сталкиваются с ограничением стандартного метода Показать() для табличного документа. Этот метод открывает системное окно, которое невозможно кастомизировать: нельзя добавить свои кнопки, изменить состав командной панели или программно управлять поведением формы. Разберем, как создать полноценный интерфейс для работы с печатными формами самостоятельно.

Проблема стандартного вызова печатной формы

Рассмотрим ситуацию, когда печать реализована классическим способом через процедуру в модуле команды или формы. Проанализируем типичный код, который приводит к открытию модального окна без управляемой панели:


&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    ТабДок = Новый ТабличныйДокумент;
    СформироватьНаСервере(ТабДок, ПараметрКоманды);
    
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.Показать(); // Вот этот метод генерирует форму "на лету" без панели
КонецПроцедуры

Для того чтобы получить полный контроль над внешним видом окна, нам необходимо отказаться от вызова ТабДок.Показать() и разработать собственную Общую форму для просмотра отчетов и печатных документов.

Шаг 1. Создание универсальной формы просмотра

Выясним, как должна быть устроена форма, чтобы она могла принимать любой табличный документ. Выполним следующие действия:

  1. В дереве конфигурации создадим новый объект: Общая форма. Назовем ее, например, ПросмотрПечатныхФорм.
  2. Перейдем на закладку Реквизиты и добавим новый реквизит формы с именем ПечатныйЛист. Установим для него тип данных ТабличныйДокумент.
  3. Перетащим реквизит ПечатныйЛист в левую часть (дерево элементов формы). Платформа автоматически создаст элемент типа Поле табличного документа.
  4. В свойствах этого элемента (в правой нижней части экрана) настроим визуальные параметры: снимем галочку ОтображатьСетку, установим ТолькоПросмотр и выберем АвтоМасштаб.

Шаг 2. Сборка командной панели

Теперь самое главное — создание той самой панели управления, о которой спрашивал автор темы. Рассмотрим, как добавить стандартные функции печати, масштабирования и поиска на форму:

Перейдем на закладку Команды в редакторе формы. Нас интересует вложенная закладка Стандартные команды. Развернем ветку, относящуюся к нашему элементу ПечатныйЛист. Здесь собраны все встроенные действия, которые платформа умеет совершать с табличным документом.

Выберем нужные команды и перетянем их в командную панель формы (или создадим для них отдельную Группу — Командная панель):

Важный нюанс: если мы хотим, чтобы кнопки выглядели как в типовых решениях, в свойствах группы командной панели следует установить параметр Вид в значение Командная панель, а свойство Источник команд привязать к нашему элементу формы ПечатныйЛист. Тогда команды добавятся автоматически.

Шаг 3. Передача данных и открытие формы

Чтобы форма «подхватила» сформированный нами документ, необходимо правильно организовать передачу параметров. Проанализируем код вызова формы из документа или справочника:


&НаКлиенте
Процедура Печать(ПараметрКоманды)
    // 1. Формируем табличный документ на сервере
    ТабДок = СформироватьПечатнуюФорму(ПараметрКоманды);
    
    // 2. Подготавливаем структуру параметров для открытия формы
    ПараметрыОткрытия = Новый Структура;
    ПараметрыОткрытия.Вставить("ТабДок", ТабДок);
    
    // 3. Открываем нашу кастомную форму вместо стандартного Показать()
    ОткрытьФорму("ОбщаяФорма.ПросмотрПечатныхФорм", ПараметрыОткрытия);
КонецПроцедуры

В модуле самой общей формы ПросмотрПечатныхФорм необходимо обработать эти параметры при инициализации. Напишем обработчик ПриСозданииНаСервере:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Проверяем, передан ли документ в параметрах
    Если Параметры.Свойство("ТабДок") Тогда
        // Заполняем реквизит формы данными
        ПечатныйЛист = Параметры.ТабДок;
    КонецЕсли;
КонецПроцедуры

Дополнительные возможности и настройки

Разберем продвинутые настройки, которые сделают работу пользователя с печатной формой более профессиональной, даже если вы не используете БСП.

Программное сохранение в PDF

Если вы хотите добавить кнопку «Отправить по почте» или «Сохранить в архив», используйте метод Записать(). Рассмотрим пример сохранения документа в формате PDF:


ПутьКФайлу = "C:\Temp\Document.pdf";
ПечатныйЛист.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF);

Сохранение настроек печати

Частая жалоба пользователей в самописных конфигурациях — «принтер постоянно сбрасывается на настройки по умолчанию». Чтобы 1С запоминала выбранный принтер, ориентацию страницы и поля для конкретного отчета, используйте свойство КлючПараметровПечати. Установите уникальную строку для каждой печатной формы:

ТабДок.КлючПараметровПечати = "УникальныйКлюч_ПечатьСчетаНаОплату";

Интерактивность (Расшифровка)

В собственной форме вы можете реализовать событие Выбор для поля табличного документа. Если в ячейку макета в свойство ПараметрРасшифровки записана ссылка на объект (например, на документ или справочник), то при двойном клике пользователь сможет «провалиться» в этот объект. В системном окне Показать() управлять этим процессом значительно сложнее, а в своей форме вы полностью контролируете логику открытия.

Таким образом, создание отдельной формы для вывода на печать — это стандартный и наиболее правильный путь для управляемого приложения 1С. Это позволяет не только вывести нужную панель кнопок, но и значительно расширить функционал взаимодействия пользователя с документом.

← На главную