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

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

Предопределенные элементы в 1С: как сделать и использовать

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

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

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

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

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

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

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

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

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

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

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

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

Как обратиться к предопределенному элементу из кода

Главное преимущество предопределенных элементов — прямое обращение по имени без запроса к базе. Платформа сама находит ссылку по имени, причем обращение работает быстрее, чем поиск через запрос или метод НайтиПоНаименованию.

bsl
ВалютаРубль = Справочники.Валюты.Рубль;
Если Документ.Валюта = Справочники.Валюты.Рубль Тогда
    // логика для рублевых документов
КонецЕсли;

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

В запросах предопределенные элементы передают как параметры. Конструкция вида «Значение(Справочник.Валюты.Рубль)» в тексте запроса тоже поддерживается и позволяет сравнивать поля напрямую с предопределенной ссылкой.

bsl
ВЫБРАТЬ Документ.Ссылка
ИЗ Документ.РеализацияТоваровУслуг КАК Документ
ГДЕ Документ.Валюта = ЗНАЧЕНИЕ(Справочник.Валюты.Рубль)

Режимы создания предопределенных элементов

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

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

Сравнение режимов создания

Автоматическое создание

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

Создание в обработчике обновления

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

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

Особенности для планов счетов и планов видов характеристик

У планов счетов предопределенные элементы — основной способ задания плана счетов: счета «Товары», «Касса», «РасчетныеСчета» создаются именно так. Для них в конфигураторе задаются код, наименование, вид счета (активный, пассивный, активно-пассивный), признаки учета и забалансовость.

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

Как проверить результат и что может пойти не так

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

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

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

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

Элемент виден в режиме предприятия, помечен пиктограммой предопределенного

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

Элемента нет — обновление конфигурации базы данных не выполнено или завершилось с ошибкой

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

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

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

Возвращается пустая ссылка или ошибка — имя не совпадает или элемент не создан в данных

Защита от удаления
Норма

Команда удаления для элемента недоступна пользователю

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

Элемент удаляется — возможно, это дубль, созданный вручную пользователем

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

Ограничения и когда предопределенные элементы не подходят

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

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

FAQ

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

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

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

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

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

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

Как избавиться от дублей, когда пользователь создал такой же элемент вручную?

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

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

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

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

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

Итог

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

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