При разработке внешних обработок на управляемых формах часто возникает задача не просто сформировать печатную форму, а вывести готовый ТабличныйДокумент в стандартное окно печати. Это окно должно содержать привычные пользователю команды: выбор принтера, указание количества копий, сохранение в файлы разных форматов (PDF, Excel) и отправку по электронной почте.
Рассмотрим подробно способы реализации этой задачи в зависимости от требований к интерфейсу и архитектуры вашей конфигурации.
Если ваша конфигурация разработана на основе Библиотеки Стандартных Подсистем (БСП), наиболее правильным решением будет задействовать программный интерфейс общего модуля УправлениеПечатьюКлиент или УправлениеПечатью.
Разберем по шагам, как выдать готовый табличный документ в типовую общую форму печати:
ТабличныйДокумент и заполняем его данными из макета обработки.УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию.УправлениеПечатьюКлиент.ПечатьДокументов.Проанализируем пример кода для клиент-серверного вызова:
// На стороне сервера формируем коллекцию печатных форм
&НаСервере
Функция СформироватьПечатнуюФормуНаСервере()
// Создаем или получаем из функции заполнения табличный документ
ТабДок = Новый ТабличныйДокумент;
Макет = ОбработкаОбъект.ПолучитьМакет("МойМакет");
// ... Заполнение табличного документа ...
// Создаем коллекцию печатных форм для БСП
КоллекцияПечатныхФорм = УправлениеПечатью.СоздатьКоллекциюПечатныхФорм("МояПечатнаяФорма");
// Заполняем параметры печатной формы в коллекции
ПечатнаяФорма = ИнформационныеСистемы.НайтиСтроку(КоллекцияПечатныхФорм, "ИмяМакета", "МояПечатнаяФорма");
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"МояПечатнаяФорма",
"Представление печатной формы",
ТабДок
);
Возврат КоллекцияПечатныхФорм;
КонецФункции
// На стороне клиента вызываем открытие формы печати
&НаКлиенте
Процедура КомандаПечать(Команда)
КоллекцияПечатныхФорм = СформироватьПечатнуюФормуНаСервере();
// Вызываем стандартное окно печати БСП
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, , ЭтаФорма);
КонецПроцедуры
Важное примечание: При передаче табличного документа через коллекцию пользователь получает полный набор стандартных кнопок БСП без необходимости вручную верстать отдельную форму печати.
Если конфигурация не содержит БСП или вам требуется оперативно показать документ пользователю без дополнительных сервисных функций (таких как отправка по e-mail), можно воспользоваться встроенным методом платформы 1С.
Рассмотрим реализацию через метод Показать():
Показать() с указанием заголовка окна.
&НаКлиенте
Процедура ПоказатьПечатнуюФорму(Команда)
ТабДок = СформироватьДокументНаСервере();
// Отображаем табличный документ в отдельном окне платформы
ТабДок.Показать("Печатная форма");
КонецПроцедуры
При использовании метода Показать() документ открывается в стандартном окне просмотра табличных документов. Пользователю будут доступны базовые команды платформы: печать, предварительный просмотр, настройка страницы и сохранение на диск.
Выясним ситуацию, когда необходимо встроить табличный документ непосредственно в интерфейс вашей внешней обработки (например, на отдельную вкладку или во вспомогательное окно):
ТабличныйДокумент и выводим его на форму как поле табличного документа.Этот способ дает полную свободу кастомизации интерфейса, однако требует вручную добавлять командную панель, если пользователю понадобятся специальные кнопки управления просмотром.