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