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