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

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

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

«Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных Для объекта метаданных "Справочник.BS_Станции" не найден идентификатор в справочнике "Идентификаторы объектов метаданных" и регистре сведений "Идентификаторы объектов версий расширений"».

Выясним причину возникновения ошибки

Разберем подробно, почему возникают подобные сбои. Проблема кроется в архитектурных ограничениях используемой версии Библиотеки Стандартных Подсистем (БСП), например линейки 2.4.x.

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

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

Способ 1. Использование обработки обновления вспомогательных данных

Рассмотрим порядок действий для первичного устранения сбоя с помощью штатного инструмента разработки:

  1. Скачаем и откроем внешнюю обработку ИнструментыРазработчикаОбновлениеВспомогательныхДанных.epf (доступна на портале ИТС).
  2. Запустим данную обработку в режиме «1С:Предприятие» от имени пользователя с административными правами.
  3. Выберем режим «Обновлять всё» и запустим процесс выполнения.
  4. После успешного завершения обработки повторим запуск обновления базы данных с ключом /С ЗапуститьОбновлениеИнформационнойБазы.

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

Разберем по шагам альтернативный вариант, когда требуется принудительно обновить справочник метаданных из кода. Выполним на стороне сервера под правами Администратора следующий код:

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

Этот метод инициирует полное переформирование служебной информации об объектах конфигурации и расширений.

Способ 3. Адаптация кода БСП для работы с объектами расширений

Если конфигурация допускает внесение изменений, проанализируем модуль менеджера справочника ИдентификаторыОбъектовМетаданных. В старых версиях БСП можно разрешить регистрацию справочников и документов из расширений вручную:

  1. Откроем модуль менеджера справочника ИдентификаторыОбъектовМетаданных.
  2. Найдем функцию СвойстваКоллекцийОбъектовМетаданных.
  3. Для коллекций объектов хранения данных (в частности, для справочников и документов) установим флаг: Строка.ОбъектыРасширений = Истина;
  4. Сохраним изменения и выполним повторную регистрацию идентификаторов.

Способ 4. Очистка кэша и переподключение расширения

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

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

В качестве долгосрочного решения рекомендуется обновить подсистему БСП до более актуальных версий (2.4.6 и выше или линейку 3.x), где полноценная работа с объектами хранения данных из расширений реализована на штатном уровне.

← На главную