Справочник ИдентификаторыОбъектовМетаданных является техническим фундаментом любой современной конфигурации, построенной на базе Библиотеки стандартных подсистем (БСП). Он служит для того, чтобы система могла ссылаться на типы объектов — справочники, документы, регистры — как на обычные данные. Это критически важно для работы механизмов прав доступа (RLS), версионирования, дополнительных реквизитов и обмена данными. Однако администраторы часто сталкиваются с тем, что в этом справочнике накапливается множество объектов, помеченных на удаление, которые невозможно убрать стандартными средствами.
В данной статье мы подробно разберем, почему возникают такие записи, почему стандартная обработка «Удаление помеченных объектов» их игнорирует и как правильно очистить справочник, не нарушив целостность информационной базы.
Часто в списке идентификаторов можно увидеть элементы с иконкой, на которую наложен знак вопроса. Проанализируем ситуацию: это означает, что в текущей конфигурации (в дереве метаданных в Конфигураторе) объект с таким именем больше не существует. Рассмотрим основные причины этого явления:
КА 2.2 на КА 2.4).Многие пользователи пробуют запустить стандартную обработку «Удаление помеченных объектов», доступную в разделе «Администрирование». Однако она часто «не видит» эти записи. Разберем, почему это происходит. Обработка, встроенная в БСП, имеет программные фильтры. Она намеренно игнорирует служебные и технические справочники, чтобы обычный пользователь случайно не нарушил логику работы системы. Поскольку ИдентификаторыОбъектовМетаданных — объект системный, БСП-шная обработка просто проходит мимо него.
Также важно понимать, что даже если внешних ссылок на идентификатор не видно, он может быть задействован в скрытых механизмах:
Как показывает практика, наиболее эффективным и простым способом является запуск платформенного механизма удаления. Проанализируем последовательность действий:
ИдентификаторыОбъектовМетаданных и запустите процедуру поиска ссылок и удаления.Иногда пометки на удаление являются «фантомными» или возникли из-за программного сбоя при обновлении конфигурации. В этом случае поможет принудительный вызов методов БСП. Рассмотрим подробнее, как это сделать с помощью консоли кода или внешней обработки:
Для выполнения полной синхронизации справочника с метаданными можно выполнить следующий код:
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(Истина, Истина);
Разберем параметры этого метода:
Истина указывает системе на необходимость обновить данные.Истина крайне важен — он заставляет систему выполнить полную проверку всех идентификаторов, а не только тех, которые изменились с последнего обновления. Это позволяет системе самостоятельно пересмотреть все пометки на удаление и, если объект снова появился или ссылка восстановилась, снять пометку.Если стандартные методы не помогают, рекомендуется воспользоваться типовой обработкой от разработчиков 1С — ОбновлениеВспомогательныхДанных.epf. Она входит в состав дистрибутива БСП и часто поставляется вместе с обновлениями конфигураций.
Рассмотрим порядок работы с ней:
Важно помнить, что ручное удаление записей из этого справочника через ОбменДанными.Загрузка = Истина категорически не рекомендуется. Посмотрим, к каким последствиям это может привести:
Нарушение целостности RLS: Если вы удалите идентификатор, который используется в таблицах прав доступа, система может начать выдавать критические ошибки при попытке любого пользователя войти в базу или открыть список документов. Восстановить такую связь крайне сложно.
Ошибки при обновлении: При следующем обновлении конфигурации через Конфигуратор, система может не обнаружить ожидаемую запись и прервать процесс обновления с ошибкой «Объект не найден».
Проблемы с РИБ: В распределенных базах идентификаторы должны быть идентичны во всех узлах. Удаление идентификатора в одном узле без синхронизации с другими приведет к невозможности дальнейшего обмена данными.
Резюме: Если идентификаторы помечены на удаление, но системная обработка сообщает о наличии ссылок, которые не отображаются в явном виде — лучше оставить эти записи как есть. Они занимают ничтожно мало места в базе данных и никак не влияют на общую производительность системы. Самый безопасный путь — это использование метода ОбновитьДанныеСправочника с параметрами полной проверки, который приведет справочник в максимально актуальное и корректное состояние согласно текущей конфигурации.