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

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

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

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

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

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

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

Что такое предопределенный элемент и зачем он нужен в расширении

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

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

Проверка версии платформы и режима совместимости

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

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

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

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

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

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

Добавление предопределенного элемента

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

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

Если у справочника задана длина кода и он не автонумеруется особым образом, платформа присвоит код автоматически при создании элемента в базе. Заполнять код вручную в метаданных обычно не требуется.

Настройка обновления предопределенных данных

Ключевой момент, который чаще всего пропускают: создание предопределенных элементов в базе данных управляется настройкой «Обновление предопределенных данных». Если для справочника установлено «Не обновлять автоматически», новый элемент из расширения в базе не появится.

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

Если автоматическое обновление для справочника отключено и включать его нельзя, создайте элемент программно: в обработчике при первом запуске или при обновлении вызовите Справочники.ИмяСправочника.СоздатьЭлемент(), заполните наименование, установите признак предопределенного через свойство ИмяПредопределенныхДанных и запишите. Такой подход дает полный контроль, но требует аккуратности с правами и транзакциями.

bsl
НовыйЭлемент = Справочники.ВидыОпераций.СоздатьЭлемент();
НовыйЭлемент.Наименование = "Возврат поставщику (расширение)";
НовыйЭлемент.ИмяПредопределенныхДанных = "Расш1_ВозвратПоставщику";
НовыйЭлемент.Записать();

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

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

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

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

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

Элемент в списке справочника
Норма

Элемент виден, удаление недоступно

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

Элемента нет или удаляется как обычный

Обращение из кода по имени
Норма

Ссылка возвращается без ошибки

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

Ошибка «предопределенный элемент не найден»

После перезапуска сеанса
Норма

Элемент на месте, ссылка стабильна

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

Элемент дублируется или исчезает

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

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

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

Типичные ошибки
01
Не включено автообновление предопределенных данных — элемент не создается в базе.
02
Имя без префикса — риск конфликта с будущими релизами поставщика.
03
Переименование элемента после публикации — в базе появляется дубль.
04
Отключение расширения без проверки ссылок — «битые» ссылки в документах.
Итог

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

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

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

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

Да, именно для этого и используют расширения. Конфигурация остается на поддержке, все изменения живут в расширении и не мешают обновлениям поставщика.

Что произойдет с элементом при отключении расширения?

Элемент физически останется в базе, но потеряет связь с метаданными и перестанет быть предопределенным. Ссылки на него в документах сохранятся, однако обращение по имени из кода станет невозможным.

Почему элемент не появился после обновления конфигурации базы данных?

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

Можно ли задать предопределенному элементу дополнительные реквизиты?

Значения реквизитов в метаданных не задаются — только имя и наименование. Остальные поля заполняйте программно при первом запуске: найдите элемент по имени и установите нужные значения.

Как удалить предопределенный элемент, добавленный расширением?

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

Работает ли механизм в файловой базе?

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