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

Администрирование · 11 мин

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

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

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

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

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

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

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

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

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

Диагностика: как понять, что элементы требуют обновления

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

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

Ошибка «элемент не найден» при обращении из кодаЭлемент есть в метаданных, но нет в данных

Нужно обновление конфигурации БД или программное создание

Два похожих элемента в спискеДубль после загрузки или потеря привязки

Нужно восстановить привязку и убрать дубль

Помечен на удаление предопределённый элементРучное вмешательство пользователя

Снять пометку, проверить привязку к метаданным

Способ 1. Обновление через конфигуратор

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

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

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

Способ 2. Программное обновление через встроенный язык

Когда обновление через конфигуратор невозможно или недостаточно, используют программные средства. У менеджеров объектов (СправочникиМенеджер, ПланыСчетовМенеджер и др.) есть метод установки режима обновления предопределённых данных, а на уровне всей базы применяется глобальный метод платформы.

Типовой фрагмент кода для принудительного обновления предопределённых данных конкретного справочника выглядит так:

Справочники.Валюты.УстановитьОбновлениеПредопределенныхДанных(

ОбновлениеПредопределенныхДанных.ОбновитьАвтоматически);

Для обновления всех предопределённых элементов базы разом используется метод платформы, который выполняет полную синхронизацию метаданных и данных:

ОбновитьПредопределенныеЭлементы();

Этот код можно выполнить через внешнюю обработку с кнопкой «Выполнить» или через консоль кода в режиме предприятия. Учтите: выполнение требует прав администратора и монопольного доступа не требует, но в многопользовательском режиме лучше выполнять его при минимальной нагрузке.

Порядок программного обновления
  1. 1
    Сделайте резервную копию базы
  2. 2
    Откройте консоль кода или создайте внешнюю обработку с процедурой выполнения
  3. 3
    Выполните ОбновитьПредопределенныеЭлементы() или установите режим обновления для конкретного объекта
  4. 4
    Проверьте журнал регистрации на отсутствие ошибок
  5. 5
    Откройте справочник и убедитесь, что предопределённые элементы на месте

Способ 3. Штатные средства типовых конфигураций

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

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

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

Устранение дублей и потерянной привязки

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

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

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

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

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

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

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

Сообщить(Справочники.Валюты.Рубль);

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

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

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

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

Присутствуют, помечены служебной пиктограммой, без дублей

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

Отсутствуют, есть дубли или элемент выглядит как обычный

Обращение к элементу из кода по имени
Норма

Возвращается ссылка без ошибки

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

Ошибка «элемент не найден»

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

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

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

Повторяющиеся ошибки обращения к элементам

Итог

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

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

Частые вопросы

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

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

Что происходит с предопределёнными элементами при обмене данными между базами?

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

Как удалить предопределённый элемент, который больше не нужен?

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

Ошибка появляется только у части пользователей — это проблема предопределённых элементов?

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

Нужен ли монопольный доступ для программного обновления предопределённых данных?

Формально метод ОбновитьПредопределенныеЭлементы() не требует монопольного режима, но на практике безопаснее выполнять его без активных пользователей: одновременная запись в те же объекты может вызвать конфликты блокировок. Обновление конфигурации БД через конфигуратор монопольный доступ требует всегда.