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

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

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

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

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

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

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

Когда расширение подходит, а когда лучше изменить конфигурацию

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

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

Сравнение вариантов

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

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

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

Подходит, если нужен простой реквизит без кода: добавляется пользователем в режиме 1С:Предприятие. Ограничение: зависит от наличия БСП и не даёт полного контроля над размещением и логикой.

Изменение основной конфигурации

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

Подготовка: создание расширения и заимствование формы

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

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

При открытии заимствованной формы в расширении вы увидите те же элементы, что и в типовой, но изменять можно только добавленные элементы и ряд свойств. Типовые элементы помечены как заимствованные — их нельзя удалить, но можно менять видимость и положение в пределах правил платформы.

Добавление нового реквизита в объект через расширение

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

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

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

Вывод реквизита на заимствованную форму

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

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

Порядок действий
  1. 1
    Создайте расширение: Конфигурация → Расширения конфигурации → Создать, задайте имя и префикс.
  2. 2
    Заимствуйте объект и его форму через контекстное меню «Добавить в расширение».
  3. 3
    Добавьте новый реквизит в ветку «Реквизиты» заимствованного объекта, задайте тип и свойства.
  4. 4
    Откройте заимствованную форму и перетащите реквизит из панели реквизитов в дерево элементов.
  5. 5
    Настройте заголовок, видимость и расположение элемента.
  6. 6
    Выполните «Обновить конфигурацию базы данных» (F7) и проверьте форму в режиме 1С:Предприятие.

Программное добавление реквизита на форму

Иногда элемент нужно создать динамически — например, когда состав полей зависит от настроек. Для этого в модуле заимствованной формы используют обработчик «ПриСозданииНаСервере» с директивой «&После» или «&ИзменениеИКонтроль», чтобы дополнить типовой код, не копируя его целиком.

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

&После("ПриСозданииНаСервере")

Процедура Префикс_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

НовыйЭлемент = Элементы.Добавить("Префикс_КомментарийПоле", Тип("ПолеФормы"), Элементы.ГруппаШапка);

НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;

НовыйЭлемент.ПутьКДанным = "Объект.Префикс_Комментарий";

КонецПроцедуры

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

Если реквизит должен попадать в печатные формы или отчёты, добавьте его вывод сразу при создании: потом придётся искать все места использования. Для отчётов на СКД реквизит расширения доступен в запросе так же, как типовой.
ПЗ
Практическое замечание

Проверка результата и обновление базы данных

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

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

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

Отображение на форме
Норма

Поле видно в нужной группе, заголовок корректен

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

Поле отсутствует или появилось не в той группе — проверьте дерево элементов формы

Сохранение значения
Норма

Введённое значение сохраняется и отображается после повторного открытия

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

Значение пропадает — элемент не связан с реквизитом объекта (ПутьКДанным)

Запуск сеанса
Норма

База открывается без ошибок расширения

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

Ошибка применения расширения — отключите расширение и проверьте журнал регистрации

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

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

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

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

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

Итог

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

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

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

Можно ли добавить реквизит на форму без конфигуратора?

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

Почему реквизит добавлен в расширение, но не виден на форме?

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

Попадёт ли реквизит расширения в обмены и синхронизацию?

Автоматически — нет. Типовые правила обмена не знают о реквизите расширения, поэтому для передачи его значения потребуется доработка правил конвертации или обработчиков обмена. Внутри одной базы реквизит доступен в запросах, отчётах и СКД наравне с типовыми.

Что произойдёт с данными, если удалить расширение?

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

Можно ли добавить на форму реквизит табличной части?

Да. Табличная часть объекта заимствуется вместе с объектом, новый реквизит добавляется в её состав, а на форме колонка выводится перетаскиванием реквизита в таблицу формы. Ограничения и порядок проверки те же, что и для реквизитов шапки.

Как перенести расширение на другую базу?

Расширение выгружается в файл через список расширений (кнопка выгрузки в конфигураторе или в режиме предприятия) и загружается в целевую базу. Учтите: расширение применимо только к конфигурации с совместимой структурой — при загрузке в базу с другой конфигурацией платформа выполнит проверку применимости и сообщит о несоответствиях.