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

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

Как добавить реквизит справочника в расширение 1С

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

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

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

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

Когда реквизит стоит добавлять через расширение

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

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

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

Способы добавить поле в справочник

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

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

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

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

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

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

Создание расширения конфигурации

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

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

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

Заимствование справочника в расширение

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

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

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

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

В ветке расширения откройте заимствованный справочник, перейдите на закладку «Данные» и добавьте новый реквизит. Имя реквизита платформа автоматически дополнит префиксом расширения — например, Расш1_ВнутреннийКод. Задайте тип данных: строка с указанием длины, число, дата, булево или ссылка на другой объект.

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

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

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

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

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

Если типовая форма построена программно (элементы создаются кодом в модуле формы), простое перетаскивание может не сработать. В этом случае заимствуйте обработчик ПриСозданииНаСервере формы и добавьте элемент программно после типового кода, используя метод Элементы.Добавить() и привязку к реквизиту через свойство ПутьКДанным.

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

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

Проверка результата и права доступа

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

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

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

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

Реквизит в конфигураторе
Норма

Реквизит виден в ветке расширения с префиксом, конфигурация БД обновлена без ошибок

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

Ошибка реструктуризации или конфликт имён при обновлении

Форма элемента в режиме предприятия
Норма

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

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

Поля нет на форме или значение пропадает после перезаписи

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

Реквизит доступен всем профилям, которым он нужен

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

Поле видно только администратору

Обновление релиза
Норма

После обновления типовой конфигурации расширение остаётся совместимым

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

Расширение отключается с сообщением о несовместимости

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

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

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

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

Особые сценарии

Реквизит ссылочного типа на объект из другого расширения

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

Индексирование и использование в запросах

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

Перенос данных при отказе от расширения

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

Итог

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

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

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

Можно ли добавить реквизит справочника через расширение, не снимая конфигурацию с поддержки?

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

Почему добавленный реквизит не отображается в режиме предприятия?

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

Можно ли через расширение изменить длину типового реквизита, например наименования?

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

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

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

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

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

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

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