Как заменить форму документа в 1С 8.3 без изменения основной конфигурации

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

В процессе сопровождения систем на базе 1С часто возникает задача изменить интерфейс документа или справочника, не внося изменений в основную конфигурацию. Это критично для тех, кто хочет оставить базу на «замке» для беспрепятственного обновления. Многие пользователи помнят времена 1С 7.7 или ранних версий 8.2, когда существовали механизмы внешних форм, и задаются вопросом: куда они исчезли и как реализовать подобное сейчас?

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

Способ 1. Использование расширений конфигурации (современный стандарт)

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

Рассмотрим алгоритм действий по шагам:

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

Важный нюанс: Хотя для конечного пользователя это выглядит как «внешняя форма», технически расширение — это часть конфигурации, просто отделенная в другой слой. Это позволяет использовать весь контекст документа (Объект), стандартные команды и обработчики.

Способ 2. Программная подмена через обработчик получения формы

Проанализируем ситуацию, когда нам нужно программно решать, какую форму показать пользователю. В платформе 8.3 существует специализированное событие ОбработкаПолученияФормы. Оно располагается в модуле менеджера объекта (документа или справочника).

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


Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
    
    Если ВидФормы = "ФормаОбъекта" Тогда
        // Проверяем условие, например, наличие настройки в константах
        Если Константы.ИспользоватьВнешнююФормуЗаказа.Получить() Тогда
            // Указываем путь к альтернативной форме (в расширении или общей форме)
            ВыбраннаяФорма = "ОбщаяФорма.АльтернативнаяФормаЗаказа";
            СтандартнаяОбработка = Ложь;
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры

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

Способ 3. Внешняя обработка со своей формой

Некоторые специалисты предлагают использовать внешние обработки (.epf), которые открываются через Файл — Открыть. Проанализируем, почему это не является полноценной заменой формы документа:

Однако, как временное решение для специфических задач (например, массовое редактирование или специфический АРМ), этот метод имеет право на жизнь. Посмотрим на пример вызова такой формы:


ПараметрыОткрытия = Новый Структура("Ключ", СсылкаНаДокумент);
ОткрытьФорму("ВнешняяОбработка.МояДоработка.Форма.ФормаРедактирования", ПараметрыОткрытия);

Почему пользователи считают, что это «раньше было, а теперь убрали»?

Разберем исторический контекст. В эпоху 1С 8.2 и ранних 8.3, когда управляемые формы только внедрялись, библиотеки (например, БСП ранних версий) не имели такого мощного механизма расширений. Разработчики часто создавали самописные подсистемы «Внешних форм объектов». В справочнике хранились пути к файлам .epf, а в формах списков писался код, перехватывающий открытие.

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

Сравнение методов: что выбрать?

Проанализируем плюсы и минусы каждого подхода, чтобы вы могли принять верное решение:

1. Расширения (Рекомендуется):

2. Программный перехват (ОбработкаПолученияФормы):

3. Внешние обработки (Для частных случаев):

Таким образом, если перед вами стоит задача сделать «внешнюю форму» документа, правильным ответом в 99% случаев будет создание расширения. Это обеспечит стабильность работы системы и простоту последующих обновлений программы.

← На главную