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

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

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

Почему не стоит использовать общие формы

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

Решение через тип команды «Открытие формы»

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

Разберем по шагам, как это реализовать в модуле объекта внешней обработки:

  1. В функции СведенияОВнешнейОбработке мы определяем параметры регистрации.
  2. В коллекции команд добавляем новую команду.
  3. Устанавливаем свойство Использование в значение ОткрытиеФормы.

Рассмотрим пример кода для реализации этого подхода:


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

Когда вы устанавливаете ТипКомандыОткрытиеФормы(), система 1С сама берет на себя открытие формы, связанной с вашей внешней обработкой. Внутри этой формы вы можете разместить любые необходимые реквизиты (даты, флаги, выбор контрагента), которые потребуются для формирования печатного документа.

Как обработать параметры и вызвать печать

После того как пользователь заполнил форму, вам нужно инициировать процесс формирования печатной формы. Поскольку форма теперь принадлежит самой ВПФ, вы можете легко управлять данными. Внутри формы при нажатии кнопки «Печать» вы можете вызвать серверный метод вашей обработки, который вернет ТабличныйДокумент или сформирует файл.

Важные рекомендации по реализации:

Подводим итоги

Мы выяснили, что попытки «пробросить» вызов формы из серверного модуля — это тупиковый путь. Вместо борьбы с платформой, используйте стандартные возможности БСП:

Во-первых, зарегистрируйте команду как ОткрытиеФормы. Это превращает вашу внешнюю обработку в полноценный интерфейсный инструмент.

Во-вторых, храните форму внутри ВПФ. Это обеспечивает чистоту кода и легкость поддержки решения.

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

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

← На главную