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

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

При разработке внешних печатных форм (ВПФ) для конфигураций на управляемых формах (например, «1С:Бухгалтерия предприятия 3.0» на базе БСП) разработчики часто сталкиваются с задачей изменить ответственные лица, подписи или другие реквизиты непосредственно при печати. Попытка вставить полноценную кнопку прямо в сформированный табличный документ вызывает сложности, так как платформенные возможности табличного документа ограничены при экспорте в файлы (PDF, Excel) и работе в стандартной форме печати.

Разберем основные архитектурные подходы и технические решения этой задачи в 1С 8.3.

Ограничения платформы при работе с кнопками в макетах

Проанализируем, почему прямая установка элемента управления в макет табличного документа — не самое удачное решение:

  1. Интерактивность в печатной форме: Хотя платформой предусмотрен элемент РисунокТабличногоДокумента с типом «Кнопка», обработка нажатия на него в стандартном окне просмотра печатных форм БСП затруднена без модификации общей формы просмотра.
  2. Экспорт в сторонние форматы: При сохранении печатной формы в файлы XLSX, PDF или DOCX интерактивные кнопки теряют свою функциональность и могут искажать макет.
  3. Режим редактирования: В стандартной форме вывода печатного документа пользователь может воспользоваться штатным режимом редактирования (значок карандаша), однако это приводит к рискам ошибок ввода и человеческого фактора.

Решение 1. Запрос параметров у пользователя перед формированием печатной формы

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

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

Разберем пример кода для немодального интерактивного запроса значения на клиенте с помощью асинхронных вызовов:


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

&НаКлиенте
Процедура ПослеВводаЗначения(Результат, Параметры) Экспорт
    Если Не Результат = Неопределено Тогда
        // Передаем полученный параметр в процедуру формирования печатной формы
        СформироватьИПоказатьПечатнуюФорму(Результат);
    КонецЕсли;
КонецПроцедура

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

Решение 2. Использование механизма расшифровки (ПараметрРасшифровки)

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

Этот метод основан на обработке события расшифровки табличного документа:

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

Типовые механизмы конфигурации

Выясним, как аналогичные задачи решаются в типовых конфигурациях 1С (например, «Бухгалтерия предприятия 3.0»). Перед тем как создавать собственную логику во внешней обработке, убедитесь, что задача не решается использованием штатного функционала:

  1. В документах предусмотрена специальная гиперссылка «Подписи» или «Реквизиты печати», позволяющая установить подписантов до нажатия кнопки «Печать».
  2. Настройка ответственных лиц организации в регистре сведений ОтветственныеЛицаОрганизаций позволяет автоматически подставлять актуальные ФИО главных бухгалтеров и руководителей на дату документа.
← На главную