Как удалить помеченные на удаление элементы в справочнике Идентификаторы объектов метаданных?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Справочник ИдентификаторыОбъектовМетаданных является техническим фундаментом любой современной конфигурации, построенной на базе Библиотеки стандартных подсистем (БСП). Он служит для того, чтобы система могла ссылаться на типы объектов — справочники, документы, регистры — как на обычные данные. Это критически важно для работы механизмов прав доступа (RLS), версионирования, дополнительных реквизитов и обмена данными. Однако администраторы часто сталкиваются с тем, что в этом справочнике накапливается множество объектов, помеченных на удаление, которые невозможно убрать стандартными средствами.

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

Выясним причину появления пометок и «знаков вопроса»

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

  1. Переименование объекта: Если программист переименовал документ или справочник, 1С воспринимает это как удаление старого объекта и создание нового. Старый идентификатор помечается системой на удаление автоматически.
  2. Физическое удаление: Объект был удален из конфигурации в процессе разработки или при обновлении на новую версию программного продукта (например, переход с КА 2.2 на КА 2.4).
  3. Работа с расширениями: Если идентификаторы были созданы расширением, которое впоследствии было удалено или отключено, записи в справочнике остаются «сиротами».
  4. Отключение функциональных опций: В некоторых случаях объекты могут скрываться из видимости, если они привязаны к выключенным опциям, что также может инициировать пометку на удаление.

Почему стандартное удаление объектов БСП не помогает

Многие пользователи пробуют запустить стандартную обработку «Удаление помеченных объектов», доступную в разделе «Администрирование». Однако она часто «не видит» эти записи. Разберем, почему это происходит. Обработка, встроенная в БСП, имеет программные фильтры. Она намеренно игнорирует служебные и технические справочники, чтобы обычный пользователь случайно не нарушил логику работы системы. Поскольку ИдентификаторыОбъектовМетаданных — объект системный, БСП-шная обработка просто проходит мимо него.

Также важно понимать, что даже если внешних ссылок на идентификатор не видно, он может быть задействован в скрытых механизмах:

Способ 1: Использование системного удаления через «Все функции»

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

  1. Перейдите в главное меню программы.
  2. Выберите пункт «Функции для технического специалиста» (в старых версиях — «Все функции»). Если этот пункт не отображается, его нужно включить в настройках параметров (Сервис — Параметры — Отображать команду «Все функции»).
  3. В открывшемся окне в разделе «Стандартные» найдите пункт «Удаление помеченных объектов».
  4. В отличие от интерфейсной обработки БСП, этот системный инструмент видит абсолютно все объекты в базе данных, включая служебные справочники.
  5. Выберите нужные элементы в справочнике ИдентификаторыОбъектовМетаданных и запустите процедуру поиска ссылок и удаления.

Способ 2: Программное обновление справочника

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

Для выполнения полной синхронизации справочника с метаданными можно выполнить следующий код:


Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(Истина, Истина);

Разберем параметры этого метода:

Способ 3: Использование специализированных обработок

Если стандартные методы не помогают, рекомендуется воспользоваться типовой обработкой от разработчиков 1С — ОбновлениеВспомогательныхДанных.epf. Она входит в состав дистрибутива БСП и часто поставляется вместе с обновлениями конфигураций.

Рассмотрим порядок работы с ней:

  1. Запустите обработку в режиме «1С:Предприятие».
  2. Выберите режим работы с идентификаторами объектов метаданных.
  3. Нажмите кнопку «Обновить». Обработка произведет глубокий анализ структуры базы данных и попытается корректно сопоставить записи справочника с объектами метаданных.

Меры предосторожности и возможные риски

Важно помнить, что ручное удаление записей из этого справочника через ОбменДанными.Загрузка = Истина категорически не рекомендуется. Посмотрим, к каким последствиям это может привести:

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

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

Проблемы с РИБ: В распределенных базах идентификаторы должны быть идентичны во всех узлах. Удаление идентификатора в одном узле без синхронизации с другими приведет к невозможности дальнейшего обмена данными.

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

← На главную