Как заменить стандартную печатную форму на внешнюю в 1С:Предприятие (Управляемые формы)?

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

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

Понимание архитектуры работы печатных форм в БСП

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

Решение 1: Использование штатных настроек видимости

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

  1. Перейдите в раздел «Администрирование».
  2. Выберите пункт «Печатные формы, отчеты и обработки».
  3. Откройте «Настройка подменю "Печать"».
  4. В открывшемся списке вы увидите доступные печатные формы для конкретных документов. Здесь вы можете просто снять флажки с тех стандартных форм, которые больше не должны видеть пользователи.

Аналогично, в справочнике «Дополнительные отчеты и обработки» при открытии элемента (вашей внешней печатной формы) вы можете найти кнопку «Видимость» или настройки размещения. Это позволяет тонко настроить, в каких именно документах будет отображаться ваша форма, исключая её появление там, где она не нужна.

Решение 2: Программная корректировка модуля (для продвинутых случаев)

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

Разберем пример логики, которую можно применить в коде для предотвращения дублирования команд:


// Пример логики поиска команды перед добавлением
КомандаПечати = КомандыПечати.Найти(СтрокаТаблицы.Идентификатор, "Идентификатор");
Если КомандаПечати = Неопределено Тогда
    КомандаПечати = КомандыПечати.Добавить();
Иначе
    // Если команда найдена, мы можем изменить её свойства, 
    // вместо создания новой записи, тем самым «подменяя» её действие.
КонецЕсли;

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

Почему не стоит пытаться «взломать» систему?

Проанализируем ситуацию: многие разработчики тратят часы на попытки заставить систему «забыть» о существовании штатной формы. Однако развитие платформы 1С идет по пути модульности. Лучшая практика сегодня — это использование инструментов настройки интерфейса. Отключая стандартные формы через «Настройку подменю "Печать"», вы добиваетесь того же результата (пользователь видит только вашу форму), но при этом:

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

← На главную