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

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

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

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

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

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

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

Когда расширение подходит, а когда нужна доработка конфигурации

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

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

Маршрут решения

Как выбрать подход

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

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

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

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

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

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

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

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

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

Порядок действий
  1. 1
    Создайте расширение и задайте префикс объектов
  2. 2
    Заимствуйте объект и добавьте в него новый реквизит с типом данных
  3. 3
    Заимствуйте форму объекта и перетащите реквизит в дерево элементов
  4. 4
    Настройте заголовок, видимость и доступность поля
  5. 5
    Обновите расширение в базе и проверьте открытие формы и сохранение значения

Способ 2. Вывод дополнительного реквизита БСП на форму

В конфигурациях на Библиотеке стандартных подсистем (УТ, ERP, БП, ЗУП) есть механизм дополнительных реквизитов и сведений, который не требует доработки вообще. Администратор создаёт дополнительный реквизит через интерфейс «Администрирование → Общие настройки → Дополнительные реквизиты», и он автоматически появляется на форме объекта в группе «Дополнительные реквизиты».

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

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

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

Реквизит объекта в расширении

Полноценное поле таблицы: быстрые запросы, отборы, СКД. Требует реструктуризации и работы в конфигураторе

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

Создаётся пользователем без разработчика. Медленнее в запросах, сложнее в отчётах, хранится в отдельной таблице

Реквизит формы

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

Способ 3. Программное добавление реквизита формы

Если данные не нужно хранить, а только показать — например, текущий остаток товара, задолженность контрагента или результат расчёта — используйте реквизит формы. Его можно добавить в редакторе формы (закладка «Реквизиты» в правой панели) и перетащить в дерево элементов, а заполнять в обработчиках «ПриЧтенииНаСервере» или «ПриСозданииНаСервере».

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

bsl
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Добавляемые = Новый Массив;
	Добавляемые.Добавить(Новый РеквизитФормы("Расш1_Остаток", Новый ОписаниеТипов("Число")));
	ИзменитьРеквизиты(Добавляемые);
	Элемент = Элементы.Добавить("Расш1_Остаток", Тип("ПолеФормы"));
	Элемент.Вид = ВидПоляФормы.ПолеВвода;
	Элемент.ПутьКДанным = "Расш1_Остаток";
КонецПроцедуры

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

Проверка результата и типичные ошибки

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

Наиболее частая проблема — расширение не подключается после обновления конфигурации с ошибкой о конфликте. Это значит, что типовая форма изменилась и заимствованные свойства расходятся с актуальными. Лечение: открыть форму в расширении, выполнить проверку расширения (меню «Конфигурация → Проверка конфигурации» с флагом проверки расширений) и исправить конфликтующие свойства.

Типичные ошибки
01
Добавление реквизита без префикса — при совпадении имени с будущим типовым реквизитом расширение перестанет применяться
02
Удаление заимствованного элемента формы вместо установки видимости — платформа не даст удалить, а попытки обхода ломают обновление
03
Забытые права: новый реквизит не виден пользователям без настройки ролей расширения
04
Программное добавление элемента без проверки его существования — дублирование поля при повторных вызовах обработчика
05
Тестирование только в конфигураторе: пользователи видят расширение только после его подключения в базе и перезапуска сеанса
Контрольные точки

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

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

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

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

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

Сохранение данных
Норма

Значение сохраняется после записи и переоткрытия объекта

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

Значение пропадает — реквизит формы не связан с данными объекта

Права пользователей
Норма

Поле доступно под типовой ролью

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

Поле скрыто или ошибка доступа — настройте роли в расширении

Работа после обновления конфигурации
Норма

Расширение применяется без ошибок

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

Ошибка сопряжения — исправьте конфликтующие заимствованные свойства

Ограничения и безопасная работа с расширениями

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

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

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

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

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

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

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

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

Почему новое поле не видно пользователям, хотя у администратора отображается?

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

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

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

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

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

Чем расширение лучше дополнительных реквизитов БСП?

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

Расширение перестало работать после обновления конфигурации. Что делать?

Откройте расширение в конфигураторе и выполните проверку конфигурации с проверкой расширений. Обычно конфликт возникает из-за изменённых типовых элементов формы или реквизитов. Исправьте заимствованные свойства, обновите расширение в базе и проверьте форму заново.