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

Справочники и Данные · 9 мин

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

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

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

От обычного элемента предопределенный отличается тем, что на него можно сослаться по имени через ПредопределенноеЗначение() или Справочники.ИмяСправочника.ИмяЭлемента, не опасаясь, что пользователь переименует или удалит запись. Поэтому добавление предопределенных элементов — стандартная задача при доработке конфигураций.

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

Что такое предопределенный элемент и когда он нужен

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

Типичные сценарии, где без предопределенных элементов не обойтись:

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

Добавление элемента через конфигуратор

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

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

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

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

Программное создание и обращение к элементу

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

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

ЭлементОбъект = Справочники.Валюты.РоссийскийРубль.ПолучитьОбъект();

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

ЭлементОбъект.Записать();

Как заполнить реквизиты предопределенного элемента

В конфигураторе задаются только имя, код и наименование. Остальные реквизиты (ставки, признаки, ссылки на другие объекты) заполняются уже в режиме предприятия — вручную или кодом при первоначальном заполнении базы.

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

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

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

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

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

Наличие элемента в списке справочника в режиме 1С:Предприятие
Норма

Элемент виден, открывается, у него заполнены код и наименование

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

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

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

Выражение Справочники.Имя.ИмяЭлемента возвращает ссылку без исключения

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

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

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

У элемента в списке справочника отображается пиктограмма предопределенного

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

Элемент выглядит как обычный — возможно, связь с метаданными потеряна

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

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

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

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

Альтернативы предопределенным элементам

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

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

Предопределенный элемент

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

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

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

Константа или регистр сведений

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

FAQ

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

Штатно — нет. Запись о предопределенном элементе хранится в метаданных конфигурации, поэтому без конфигуратора (или расширения конфигурации) его создать нельзя. Внешние обработки могут лишь заполнить реквизиты уже существующего предопределенного элемента.

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

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

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

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

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

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

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

Да, расширения позволяют добавлять собственные предопределенные элементы в заимствованные справочники. Обращаться к ним в коде следует через ПредопределенноеЗначение() с проверкой, так как при отключении расширения элемент станет недоступен.

Итог

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

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