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

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

Предопределённая категория в 1С: что это и зачем она нужна

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

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

Классический пример — справочник «Валюты», где рубль задан как предопределённый элемент, или план счетов бухгалтерского учёта, где все счета (01, 10, 41, 62 и так далее) являются предопределёнными. Удалить или переименовать такой элемент обычными средствами нельзя, потому что код конфигурации может обращаться к нему напрямую, и его отсутствие приведёт к ошибкам в отчётах, проведении документов и обменах данными.

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

Чем предопределённый элемент отличается от обычного

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

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

Где встречаются предопределённые категории

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

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

Как распознать предопределённый элемент в базе

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

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

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

Что можно и что нельзя делать с предопределёнными элементами

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

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

Типичные ошибки при работе с предопределёнными категориями

Самая частая ошибка — создание пользовательского дубля вместо использования предопределённого элемента. Например, вместо предопределённого вида цен «Закупочная» пользователь заводит новый элемент «Цена закупки» и заполняет его, а типовые отчёты и обработки продолжают смотреть на предопределённый. Итог — пустые отчёты и «непонятное» поведение программы.

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

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

Как разработчику создать предопределённый элемент

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

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

bsl
// Обращение к предопределённому элементу
КурсВалюты = Справочники.Валюты.Рубль;
// Безопасный универсальный вариант
Валюта = ПредопределенноеЗначение("Справочник.Валюты.Рубль");
При доработке типовой конфигурации предпочитайте добавлять собственные предопределённые элементы вместо поиска по наименованию в коде. Это избавит от сбоев, когда пользователь переименует элемент, а код перестанет его находить.
ПЗ
Практическое замечание

Что делать при ошибках с предопределёнными элементами

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

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

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

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

Список справочника после обновления
Норма

Предопределённые элементы присутствуют в единственном экземпляре

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

Появились дубли или элемент отсутствует

Работа типовых отчётов и проведение документов
Норма

Отчёты заполнены, документы проводятся без ошибок

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

Ошибки обращения к предопределённому значению

Журнал регистрации после обновления
Норма

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

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

Сообщения о невозможности сопоставить элементы

Часто задаваемые вопросы

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

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

Чем предопределённый элемент отличается от перечисления?

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

Безопасно ли переименовать предопределённый элемент?

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

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

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

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

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

Что делать, если типовой отчёт не видит нужный элемент справочника?

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

Итог

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

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