К статье
Практический материал

Разработка и Конфигурация · 12 мин

Как добавить форму в расширение 1С

Как добавить форму объекта в расширение конфигурации 1С: заимствование формы, добавление реквизитов, обработчики событий, проверка и типичные ошибки.

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

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

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

Создание и подключение расширения

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

Обратите внимание на свойства расширения. Флажок «Безопасный режим» ограничивает выполнение кода — для разработки его обычно снимают, а в рабочей базе включают по требованиям безопасности. Свойство «Использовать в основных ролях» определяет, будут ли доработки доступны пользователям без дополнительной настройки прав. Назначение расширения для изменения форм — «Дополнение» или «Исправление»; вариант «Адаптация» предназначен для других сценариев.

После создания расширение появится в дереве конфигурации как отдельная ветка. Все дальнейшие действия выполняются именно в этой ветке: вы добавляете в неё объекты из основной конфигурации, а не редактируете типовые напрямую.

Заимствование формы объекта в расширение

Найдите в дереве основной конфигурации нужный объект — например, документ «Реализация товаров и услуг» или справочник «Номенклатура». Раскройте ветку объекта и найдите нужную форму: «ФормаДокумента», «ФормаСписка», «ФормаВыбора» и т.д. Вызовите контекстное меню формы и выберите пункт «Добавить в расширение». Альтернативный путь — сначала добавить в расширение сам объект (справочник или документ), а затем форму внутри него.

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

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

Обработчики событий формы и изменение кода

Заимствованная форма позволяет не только менять внешний вид, но и дополнять логику. В модуле формы расширения доступны аннотации для перехвата типовых обработчиков: &После("ПриОткрытии"), &Перед("ПередЗаписью"), &Вместо("ОбработчикКоманды"). Директива «После» выполняет ваш код после типового, «Перед» — до него, «Вместо» — полностью замещает типовой обработчик.

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

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

Сохранение, обновление и проверка результата

После внесения изменений сохраните расширение (Ctrl+S) и обновите конфигурацию базы данных — клавиша F7 или меню «Конфигурация — Обновить конфигурацию базы данных». Без этого шага изменения не попадут в рабочую базу, и в режиме Предприятия вы увидите старую форму.

Запустите режим Предприятия и откройте доработанный объект. Проверьте: форма открывается без ошибок, новые элементы видны и расположены корректно, кнопки выполняют заданные команды, обработчики событий срабатывают (например, при открытии или записи). Если форма не открывается, первым делом смотрите текст ошибки — чаще всего причина в конфликте имён или в обращении к элементу, которого нет после объединения форм.

Проверьте также поведение у пользователя с ограниченными правами: если у расширения снято свойство «Использовать в основных ролях», часть пользователей может не увидеть доработки. В меню «Администрирование — Печатные формы, отчеты и обработки — Расширения» в режиме Предприятия можно убедиться, что расширение подключено и активно.

Контрольные точки

Как проверить результат

Открытие формы в режиме Предприятия
Норма

Форма открывается, новые элементы на месте

Тревожный признак

Ошибка при открытии или форма выглядит как типовая

Работа кнопок и команд
Норма

Нажатие выполняет заданное действие без ошибок

Тревожный признак

Кнопка неактивна или выдаёт ошибку выполнения

Статус расширения в списке
Норма

Расширение активно, флажок подключения установлен

Тревожный признак

Расширение отключено или помечено как неприменимое

Поведение при записи объекта
Норма

Запись проходит, обработчики срабатывают

Тревожный признак

Ошибки при записи, потеря типовых проверок

Типичные ошибки и ограничения механизма

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

У механизма есть ограничения. Нельзя удалить типовой элемент формы через расширение — можно только скрыть его, установив видимость в «Ложь» (через свойства элемента или программно). Не все объекты поддерживают добавление реквизитов через расширение — например, для регистров возможности ограничены. Изменение порядка типовых элементов тоже ограничено: расширение в первую очередь добавляет своё, а не перестраивает чужое.

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

Типичные ошибки
01
Имена без префикса — конфликт с типовыми объектами при обновлении конфигурации
02
Забытое обновление конфигурации базы данных (F7) — изменения не видны в Предприятии
03
Использование &Вместо без необходимости — потеря типовой логики после обновления поставщика
04
Попытка удалить типовой элемент вместо скрытия — расширение не применяется или ведёт себя непредсказуемо
05
Тестирование только под полными правами — у рядовых пользователей доработки не видны

Когда расширение не подходит: альтернативы

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

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

Сравнение подходов

Расширение конфигурации

Подходит для большинства доработок форм; сохраняет поддержку типовой конфигурации; ограничено возможностями механизма

Дополнительные реквизиты (БСП)

Подходит для простых полей без программной логики; настраивается пользователем; не позволяет менять структуру и код формы

Прямая доработка конфигурации

Подходит для глубоких изменений; снимает объекты с поддержки и усложняет обновления

Итог

Что важно запомнить

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

Частые вопросы

Можно ли добавить в расширение форму, которой нет у типового объекта?

Да. В расширении можно создать собственную форму объекта — например, альтернативную форму списка. Для этого в ветке расширения у заимствованного объекта добавьте новую форму обычным способом. Назначить её основной для типового объекта из расширения нельзя, но можно открывать программно или через свои команды.

Почему после обновления конфигурации расширение перестало работать?

Чаще всего типовая форма изменилась: переименован элемент или обработчик, на который ссылалось расширение. Откройте конфигуратор, проверьте расширение на ошибки совместимости и исправьте ссылки на переименованные объекты. Поэтому перед обновлением рабочей базы расширение всегда проверяют на копии.

Как скрыть типовую кнопку или поле через расширение?

Удалить типовой элемент нельзя, но можно скрыть. В редакторе заимствованной формы найдите элемент в дереве и установите свойство «Видимость» в «Ложь». Альтернатива — программно в обработчике ПриОткрытии с аннотацией &После установить видимость элемента по условию, например в зависимости от роли пользователя.

Видят ли доработки формы все пользователи базы?

Зависит от свойства «Использовать в основных ролях» у расширения и от прав пользователей. Если свойство включено, доработки применяются для всех. Если выключено, расширение действует только для пользователей с соответствующими ролями. Проверяйте результат под учётной записью с обычными правами, а не только под администратором.

Можно ли перенести расширение с формой в другую базу?

Да. В списке расширений конфигурации есть команда сохранения в файл с расширением .cfe. В целевой базе файл загружается через тот же список расширений. Условие: конфигурация целевой базы должна содержать те же объекты и формы, иначе расширение не применится или будет работать с ошибками.

Что выбрать: изменить типовую форму в расширении или создать свою?

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