Как открыть сформированный табличный документ во внешней обработке 1С на печать

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

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

Рассмотрим подробно способы реализации этой задачи в зависимости от требований к интерфейсу и архитектуры вашей конфигурации.

Вариант 1. Использование подсистемы печати БСП

Если ваша конфигурация разработана на основе Библиотеки Стандартных Подсистем (БСП), наиболее правильным решением будет задействовать программный интерфейс общего модуля УправлениеПечатьюКлиент или УправлениеПечатью.

Разберем по шагам, как выдать готовый табличный документ в типовую общую форму печати:

  1. На сервере формируем ТабличныйДокумент и заполняем его данными из макета обработки.
  2. Создаем коллекцию печатных форм и добавляем в нее сформированный документ.Для этого в подсистеме БСП предусмотрена процедура УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию.
  3. Передаем коллекцию на клиент и открываем форму печати с помощью метода УправлениеПечатьюКлиент.ПечатьДокументов.

Проанализируем пример кода для клиент-серверного вызова:


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

    // Создаем коллекцию печатных форм для БСП
    КоллекцияПечатныхФорм = УправлениеПечатью.СоздатьКоллекциюПечатныхФорм("МояПечатнаяФорма");
    
    // Заполняем параметры печатной формы в коллекции
    ПечатнаяФорма = ИнформационныеСистемы.НайтиСтроку(КоллекцияПечатныхФорм, "ИмяМакета", "МояПечатнаяФорма");
    
    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
        КоллекцияПечатныхФорм,
        "МояПечатнаяФорма",
        "Представление печатной формы",
        ТабДок
    );
    
    Возврат КоллекцияПечатныхФорм;
    
КонецФункции

// На стороне клиента вызываем открытие формы печати
&НаКлиенте
Процедура КомандаПечать(Команда)
    
    КоллекцияПечатныхФорм = СформироватьПечатнуюФормуНаСервере();
    
    // Вызываем стандартное окно печати БСП
    УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, , ЭтаФорма);
    
КонецПроцедуры

Важное примечание: При передаче табличного документа через коллекцию пользователь получает полный набор стандартных кнопок БСП без необходимости вручную верстать отдельную форму печати.

Вариант 2. Простой вывод через метод платформы ТабличныйДокумент.Показать()

Если конфигурация не содержит БСП или вам требуется оперативно показать документ пользователю без дополнительных сервисных функций (таких как отправка по e-mail), можно воспользоваться встроенным методом платформы 1С.

Рассмотрим реализацию через метод Показать():

  1. Формируем табличный документ на сервере и возвращаем его на клиент.
  2. На клиенте вызываем метод Показать() с указанием заголовка окна.

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

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

Вариант 3. Создание собственной формы просмотра в обработке

Выясним ситуацию, когда необходимо встроить табличный документ непосредственно в интерфейс вашей внешней обработки (например, на отдельную вкладку или во вспомогательное окно):

  1. Добавляем в вашу внешнюю обработку новую управляемую форму.
  2. Размещаем на форме реквизит с типом ТабличныйДокумент и выводим его на форму как поле табличного документа.
  3. При открытии формы передаем сформированный документ в данный реквизит.

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

← На главную