Как ограничить отображение внешней печатной формы только для конкретной формы документа?

Программист 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой Управленческий учет Торговля и дистрибуция
← На главную

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

Анализ механизма СписокФорм

Многие разработчики пытаются использовать параметр СписокФорм внутри функции СведенияОВнешнейОбработке, перечисляя через запятую необходимые формы. Однако, важно понимать, что этот механизм БСП имеет строгие ограничения. Попытки передать некорректные строки или нестандартные конструкции приводят к ошибкам парсинга, таким как «Преобразование значения к типу Число не может быть выполнено».

Рассмотрим стандартную структуру регистрации:


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

Если указать ФормаДокумента, система БСП по умолчанию пытается привязать команду к формам объекта. Проблема заключается в том, что БСП часто интерпретирует эти настройки глобально для всех форм объекта, использующих стандартный механизм печати. Поэтому простого «исключения» через строку параметров добиться сложно.

Решение 1: Использование настроек в режиме «1С:Предприятие»

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

  1. Откройте раздел «Администрирование» (или «Настройки») — «Печатные формы, отчеты и обработки».
  2. Перейдите в список Дополнительные отчеты и обработки.
  3. Найдите свою загруженную печатную форму в списке.
  4. Откройте карточку элемента и изучите доступные настройки видимости (флажки «Показывать в списках» и «Показывать в формах объектов»).
  5. Снимите или установите флажки в соответствии с вашими требованиями. Обратите внимание, что в актуальных версиях БСП управление видимостью происходит через настройки для каждого пользователя или группы пользователей, что является более гибким инструментом, чем жесткое кодирование имен форм в СведенияОВнешнейОбработке.

Решение 2: Программная проверка контекста вызова

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

Давайте рассмотрим, как можно организовать проверку в экспортной процедуре Печать:


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

    // Дальнейшее формирование печатной формы
КонецПроцедуры

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

Решение 3: Использование расширений (рекомендованный путь)

Если требования к интерфейсу очень жесткие и необходимо скрыть кнопку на уровне ПриСозданииНаСервере, оптимальным решением является использование Расширений конфигурации.

В отличие от внешних печатных форм, расширение позволяет:

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

Хотя вы упоминали, что требуется именно внешняя печатная форма, использование расширения для управления видимостью стандартных команд и внешних обработок является «золотым стандартом» разработки в 1С, так как это не нарушает логику работы подсистемы ДополнительныеОтчетыИОбработки и не приводит к ошибкам при обновлении конфигурации.

Итоговые рекомендации

Разберем ситуацию по шагам для достижения успеха:

Надеемся, эти рекомендации помогут вам эффективно настроить отображение печатных форм и сделать работу пользователей в 1С более удобной и логичной!

← На главную