Разработка и Конфигурация · 11 мин
1С расширение: как добавить реквизит на форму
Как добавить реквизит на форму через расширение 1С: заимствование формы, создание реквизита, программное добавление, типичные ошибки и проверка результата.
Расширение конфигурации — штатный механизм платформы 1С:Предприятие 8.3, который позволяет дорабатывать типовые решения без снятия конфигурации с поддержки. Одна из самых частых задач — вывести на форму документа или справочника дополнительный реквизит: существующий, но скрытый разработчиком, либо совершенно новый, добавленный самим расширением.
Порядок действий зависит от того, существует ли реквизит в типовой конфигурации. Если он уже есть в объекте, но не выведен на форму, достаточно заимствовать форму и перетащить реквизит в дерево элементов. Если реквизита нет, его сначала создают в расширении, а затем добавляют на заимствованную форму. Оба сценария выполняются в конфигураторе без изменения типового кода.
Важно понимать ограничение: расширения работают только в режиме совместимости с расширениями и требуют, чтобы роль пользователя включала право «Использование расширений». Кроме того, не каждый объект можно расширить — например, изменять план обмена или некоторые системные объекты через расширение нельзя.
Когда расширение подходит, а когда лучше изменить конфигурацию
Расширение оправдано, когда конфигурация типовая и важно сохранить простое обновление: все доработки лежат отдельным слоем и не конфликтуют с обновлениями поставщика. Добавление реквизита на форму — классическая задача для расширения, она полностью поддерживается платформой.
Изменение основной конфигурации стоит рассматривать, если доработка глубоко затрагивает типовые механизмы: движения документов, проведение, обмены, сложную бизнес-логику. Расширения имеют ограничения: нельзя менять состав движений документа, нельзя расширять некоторые объекты, а заимствованные формы могут конфликтовать при обновлении типовой конфигурации, если поставщик сильно переработал форму.
Сравнение вариантов
Подходит для добавления реквизитов, форм, печатных форм и обработчиков. Сохраняет поддержку типовой конфигурации. Ограничение: нельзя менять движения и ряд системных объектов.
Подходит, если нужен простой реквизит без кода: добавляется пользователем в режиме 1С:Предприятие. Ограничение: зависит от наличия БСП и не даёт полного контроля над размещением и логикой.
Подходит для глубоких доработок проведения и обменов. Ограничение: усложняет обновление, требует аккуратного сопоставления при каждом релизе.
Подготовка: создание расширения и заимствование формы
Откройте конфигуратор и перейдите в меню «Конфигурация → Расширения конфигурации». Создайте новое расширение, задайте имя и префикс — префикс будет автоматически добавляться к именам новых объектов, что защищает от конфликтов с типовыми объектами при обновлениях. Свойство «Основной режим запуска» и назначение расширения для такой задачи обычно оставляют по умолчанию: «Дополнение».
Далее найдите нужный объект (справочник или документ), откройте список его форм, вызовите контекстное меню на нужной форме и выберите «Добавить в расширение». Форма появится в дереве расширения как заимствованная. Аналогично заимствуется сам объект, если планируется добавить в него новый реквизит.
При открытии заимствованной формы в расширении вы увидите те же элементы, что и в типовой, но изменять можно только добавленные элементы и ряд свойств. Типовые элементы помечены как заимствованные — их нельзя удалить, но можно менять видимость и положение в пределах правил платформы.
Добавление нового реквизита в объект через расширение
В дереве расширения найдите заимствованный объект, раскройте ветку «Реквизиты» и добавьте новый реквизит. Задайте имя (платформа автоматически подставит префикс расширения), тип данных, длину и другие свойства. Тип может быть примитивным (строка, число, дата, булево) или ссылочным — например, ссылка на справочник, в том числе добавленный этим же расширением.
Новый реквизит физически хранится в той же таблице объекта: при обновлении конфигурации базы данных платформа выполнит реструктуризацию. Для больших таблиц реструктуризация может занять заметное время, поэтому на рабочих базах обновление лучше выполнять в нерабочее время.
Если реквизит уже существует в типовом объекте, но не выведен на форму, создавать его заново не нужно — достаточно заимствовать форму и добавить элемент, связанный с существующим реквизитом. Продублированный реквизит приведёт к появлению двух разных полей с похожим смыслом и рассинхронизации данных.
Вывод реквизита на заимствованную форму
Откройте заимствованную форму в расширении. В правой части редактора формы находится панель реквизитов: раскройте объект и найдите нужный реквизит. Перетащите его мышью в дерево элементов формы в нужное место — например, в группу «Шапка» или на отдельную страницу. Платформа автоматически создаст элемент формы с подходящим видом: поле ввода, поле флажка и т.д.
После добавления настройте свойства элемента: заголовок, подсказку, ширину, видимость, доступность. Если реквизит нужно показывать только при определённых условиях, используйте функциональные опции или программное управление видимостью в обработчиках формы.
- 1Создайте расширение: Конфигурация → Расширения конфигурации → Создать, задайте имя и префикс.
- 2Заимствуйте объект и его форму через контекстное меню «Добавить в расширение».
- 3Добавьте новый реквизит в ветку «Реквизиты» заимствованного объекта, задайте тип и свойства.
- 4Откройте заимствованную форму и перетащите реквизит из панели реквизитов в дерево элементов.
- 5Настройте заголовок, видимость и расположение элемента.
- 6Выполните «Обновить конфигурацию базы данных» (F7) и проверьте форму в режиме 1С:Предприятие.
Программное добавление реквизита на форму
Иногда элемент нужно создать динамически — например, когда состав полей зависит от настроек. Для этого в модуле заимствованной формы используют обработчик «ПриСозданииНаСервере» с директивой «&После» или «&ИзменениеИКонтроль», чтобы дополнить типовой код, не копируя его целиком.
Программное добавление выполняется через методы формы: сначала создаётся реквизит формы методом «ИзменитьРеквизиты», затем элемент — через «Элементы.Добавить». Такой подход требует аккуратности: при обновлении типовой формы структура групп может измениться, и код, ссылающийся на конкретную родительскую группу, выдаст ошибку.
&После("ПриСозданииНаСервере")
Процедура Префикс_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
НовыйЭлемент = Элементы.Добавить("Префикс_КомментарийПоле", Тип("ПолеФормы"), Элементы.ГруппаШапка);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = "Объект.Префикс_Комментарий";
КонецПроцедуры
Директива «&После» предпочтительнее «&Вместо»: она не подавляет типовой обработчик и меньше конфликтует с обновлениями. Используйте «&Вместо» только когда типовую логику нужно полностью заменить, и помните, что при обновлении конфигурации такой обработчик требует ручной проверки.
Если реквизит должен попадать в печатные формы или отчёты, добавьте его вывод сразу при создании: потом придётся искать все места использования. Для отчётов на СКД реквизит расширения доступен в запросе так же, как типовой.
Проверка результата и обновление базы данных
После сохранения расширения выполните обновление конфигурации базы данных (клавиша F7 в конфигураторе). Платформа покажет окно реструктуризации со списком добавляемых полей — убедитесь, что в списке только ожидаемые изменения. Затем запустите режим 1С:Предприятие, откройте форму объекта и проверьте: реквизит отображается, значение вводится, сохраняется и восстанавливается при повторном открытии.
Как проверить результат
Поле видно в нужной группе, заголовок корректен
Поле отсутствует или появилось не в той группе — проверьте дерево элементов формы
Введённое значение сохраняется и отображается после повторного открытия
Значение пропадает — элемент не связан с реквизитом объекта (ПутьКДанным)
База открывается без ошибок расширения
Ошибка применения расширения — отключите расширение и проверьте журнал регистрации
Если расширение вызывает ошибку и мешает запуску, его можно отключить без входа в конфигуратор: в режиме предприятия через «Администрирование → Печатные формы, отчеты и обработки → Расширения» либо запуском конфигуратора с отключением расширений. В критических случаях расширение удаляется из хранилища, и типовая конфигурация продолжает работать.
Типичные ошибки и ограничения
Отдельно учитывайте ограничения платформы: расширение не может изменять состав движений документа, роли и права типовой конфигурации, а также ряд системных объектов. Если реквизит должен участвовать в проведении, его значение можно использовать в расширяющих обработчиках проведения, но состав регистров изменить не получится.
При обновлении типовой конфигурации заимствованные формы — самое уязвимое место. Если поставщик переработал форму, платформа сообщит о конфликтах при контроле расширения. Регулярно выполняйте проверку применимости расширения после каждого обновления: это занимает минуты, но предотвращает ошибки у пользователей.
Что важно запомнить
Реквизит добавляется на форму через заимствование формы в расширение и перенос реквизита в дерево элементов; новый реквизит требует обновления конфигурации базы данных. Работайте на копии, используйте префиксы и директиву «&После», а после каждого обновления типовой конфигурации проверяйте применимость расширения.
Частые вопросы
Можно ли добавить реквизит на форму без конфигуратора?
Да, если конфигурация построена на Библиотеке стандартных подсистем: в режиме 1С:Предприятие доступен механизм «Дополнительные реквизиты и сведения» (Администрирование → Общие настройки). Он позволяет добавить простой реквизит без кода, но даёт меньше контроля над размещением и логикой, чем расширение.
Почему реквизит добавлен в расширение, но не виден на форме?
Наиболее частые причины: элемент не перенесён в дерево элементов заимствованной формы, не выполнено обновление конфигурации базы данных, у элемента снят флаг видимости или расширение отключено в сеансе пользователя. Проверьте также, что пользователь работает в том же информационном базе, где применено расширение.
Попадёт ли реквизит расширения в обмены и синхронизацию?
Автоматически — нет. Типовые правила обмена не знают о реквизите расширения, поэтому для передачи его значения потребуется доработка правил конвертации или обработчиков обмена. Внутри одной базы реквизит доступен в запросах, отчётах и СКД наравне с типовыми.
Что произойдёт с данными, если удалить расширение?
При удалении расширения платформа удалит и добавленные им реквизиты из структуры базы — значения будут потеряны. Если данные нужно сохранить, заранее выгрузите их обработкой или перенесите в другой реквизит до удаления расширения.
Можно ли добавить на форму реквизит табличной части?
Да. Табличная часть объекта заимствуется вместе с объектом, новый реквизит добавляется в её состав, а на форме колонка выводится перетаскиванием реквизита в таблицу формы. Ограничения и порядок проверки те же, что и для реквизитов шапки.
Как перенести расширение на другую базу?
Расширение выгружается в файл через список расширений (кнопка выгрузки в конфигураторе или в режиме предприятия) и загружается в целевую базу. Учтите: расширение применимо только к конфигурации с совместимой структурой — при загрузке в базу с другой конфигурацией платформа выполнит проверку применимости и сообщит о несоответствиях.