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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пиктограмма в спискеОсобый значок с маркером

Сравните значки нескольких элементов справочника

УдалениеСистема запрещает пометку на удаление

Попробуйте пометить элемент на удаление

Имя в конфигуратореЭлемент есть в списке предопределённых

Откройте ветку «Предопределённые» у справочника

Ссылка в кодеК элементу обращаются по имени

Поищите имя элемента в текстах модулей

Проверка через попытку пометки на удаление

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

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

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

Как проверить элемент в конфигураторе

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

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

Для точной проверки конкретного элемента можно использовать встроенный язык. В консоли кода или через обработку выполните обращение к элементу по имени: Справочники.Валюты.НайтиПоНаименованию("USD") для обычного поиска и Справочники.Валюты.USD для обращения к предопределённому элементу по имени. Если второе обращение возвращает ссылку, а не ошибку, — элемент предопределённый.

bsl
// Проверка: является ли элемент предопределённым
Ссылка = Справочники.Валюты.USD; // обращение по имени предопределённого
Если ЗначениеЗаполнено(Ссылка) Тогда
    Сообщить("Элемент предопределённый: " + Ссылка);
Иначе
    Сообщить("Предопределённый элемент не найден в базе");
КонецЕсли;

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

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

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

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

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

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

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

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

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

Пошаговый алгоритм определения типа элемента

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

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

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

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

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

Значок отличается от обычных элементов характерным маркером

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

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

Пометка на удаление
Норма

Система выдаёт предупреждение или запрещает пометку

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

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

Список предопределённых в конфигураторе
Норма

Элемент найден по наименованию, указано имя

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

Элемента в списке нет — он пользовательский

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

Возвращается ссылка на элемент

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

Ошибка обращения — такого предопределённого имени нет

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

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

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

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

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

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

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

Как программно проверить, предопределённый ли элемент?

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

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

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

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

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

Итог

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

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