Справочник «Идентификаторы объектов метаданных» требует обновления: что делать
Содержание
Справочник идентификаторов метаданных в 1С 8.3 обновляется сам — при первом запуске базы после изменения конфигурации, когда отрабатывает обновление информационной базы. Если автоматика не сработала, обновление запускают принудительно: стартуют базу в режиме 1С:Предприятие с параметром /C ЗапуститьОбновлениеИнформационнойБазы или вызывают из серверного кода Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника().
Справочник есть во всех типовых конфигурациях на Библиотеке стандартных подсистем (БСП): Бухгалтерии 3.0, ЗУП 3.1, УТ 11, КА, ERP, УНФ. Поэтому порядок действий один и тот же — от конфигурации он не зависит. Сбой обычно всплывает после объединения баз, ручного переноса данных или подключения чужой внешней обработки: программа ругается на дубли, неверные GUID или не открывает отчёт.
Как устроен справочник и почему идентификаторы расходятся
«Идентификаторы объектов метаданных» — служебный справочник БСП. В нём на каждый объект конфигурации (документ, справочник, регистр, отчёт, обработку) заведён свой элемент. Элемент хранит полное имя объекта, например Документ.РеализацияТоваровУслуг, и ключ объекта метаданных.
Зачем он нужен: в реквизитах нельзя хранить ссылку на сам объект метаданных. Поэтому подсистемы хранят ссылку на элемент этого справочника. Через него работают:
- 🔐 права доступа и ограничения на уровне записей;
- 📎 дополнительные отчёты и обработки (поле «Размещение» и назначение команд);
- 🧾 дополнительные реквизиты и сведения;
- 📅 даты запрета изменения данных;
- 🔄 правила обмена, версионирование объектов, варианты отчётов.
Каждый элемент — обычная ссылка со своим GUID. Этот GUID уникален для конкретной базы. В двух базах на одной и той же конфигурации элемент Документ.РеализацияТоваровУслуг будет иметь разные GUID. Отсюда и большинство проблем.
Откуда берётся рассинхронизация
- 🔀 Перенос данных между базами. Выгрузили объекты через универсальную выгрузку в XML вместе со ссылками на идентификаторы. В приёмнике появились вторые элементы с тем же полным именем, но другим GUID.
- 🧩 Объединение двух баз в одну. Тот же эффект в крупном масштабе: дублей десятки и сотни.
- ✏️ Переименование и удаление объектов в доработанной конфигурации. Старый элемент остаётся, новый создаётся, ссылки на старый «висят».
- 🌐 Распределённая база (РИБ). Подчинённый узел не обновляет справочник сам — ждёт данные из главного. Если конфигурацию обновили в узле раньше, чем пришёл обмен, база стартует с ошибкой.
- 💾 Прерванное обновление. Базу закрыли или отключили посреди обработчиков, и справочник остался в промежуточном состоянии.
- 📦 Внешняя обработка из другой базы. Её регистрационные данные ссылаются на идентификаторы, которых в вашей базе нет.
Диагностика: как понять, что сбой именно в идентификаторах
Признак один: в тексте ошибки или в окне при запуске фигурирует название справочника «Идентификаторы объектов метаданных». Иногда — «Идентификаторы объектов расширений». Типичные формулировки сводятся к трём сюжетам:
- найдены несколько элементов с одинаковым полным именем (дубли);
- справочник требует обновления, а его нельзя обновить в подчинённом узле;
- ссылка на идентификатор не найдена — «битая ссылка» в настройках доступа, дополнительных обработках или вариантах отчётов.
Как открыть справочник и посмотреть содержимое
- Включите показ служебных команд: в главном меню
Сервис → Параметрыпоставьте флажок «Отображать команду “Все функции”». - Откройте
Главное меню → Все функции → Справочники → Идентификаторы объектов метаданных. - Отсортируйте список по колонке с полным именем объекта. Дубли сразу видны: две строки подряд с одинаковым именем.
- Отдельно проверьте элементы, помеченные на удаление. Это объекты, которых уже нет в конфигурации.
На платформе с номером не ниже 8.3.14 эта команда в главном меню называется «Функции для технического специалиста» — путь к справочнику тот же.
Проверить количество дублей быстро можно запросом в консоли запросов: сгруппируйте элементы справочника по полному имени и отберите группы, где элементов больше одного. Пример запроса — ниже, в разделе про инструменты.
Чем обновлять справочник идентификаторов метаданных
Способов немного, и они различаются по риску.
| Способ | Когда применять | Риски |
|---|---|---|
| Обычный запуск после обновления конфигурации | Плановое обновление | Нет, это штатный путь |
Параметр /C ЗапуститьОбновлениеИнформационнойБазы | Обновление прервалось, справочник «застрял» | Повторно выполняются обработчики обновления — время и нагрузка |
Вызов ОбновитьДанныеСправочника() из кода | Нужно пересчитать только справочник | Нужны права администратора и привилегированный режим |
| Ручная замена ссылок и удаление дублей | После переноса данных и объединения баз | Ошибка в выборе «правильного» элемента ломает права и настройки |
| Восстановление из резервной копии | Всё испорчено, свежая копия есть | Теряются данные после копии |
Запрос для поиска дублей
ВЫБРАТЬ
Ид.ПолноеИмя КАК ПолноеИмя,
КОЛИЧЕСТВО(Ид.Ссылка) КАК Количество
ИЗ
Справочник.ИдентификаторыОбъектовМетаданных КАК Ид
ГДЕ
НЕ Ид.ПометкаУдаления
СГРУППИРОВАТЬ ПО
Ид.ПолноеИмя
ИМЕЮЩИЕ
КОЛИЧЕСТВО(Ид.Ссылка) > 1
Запрос выполняют в любой консоли запросов, запущенной в режиме 1С:Предприятие. Пустой результат значит, что дублей среди действующих элементов нет.
Пошаговая инструкция: обновить справочник идентификаторов в 1С 8.3
Перед любыми действиями сделайте резервную копию базы: выгрузку в .dt через Конфигуратор или копию средствами СУБД. Справочник связан с правами доступа и настройками — ошибку проще откатить, чем чинить.
Шаг 1. Выгоните пользователей
Повторное обновление и правка справочника идут в фоне у всех подсистем сразу. Предупредите сотрудников и завершите их сеансы — у них оборвётся работа, несохранённые документы пропадут. Делайте это вне рабочего времени.
В типовых конфигурациях для этого есть команда «Блокировка работы пользователей» в разделе Администрирование, в группе команд обслуживания.
Шаг 2. Запустите повторное обновление базы
- В окне запуска 1С выберите базу и нажмите «Изменить».
- На последней странице мастера, в поле «Дополнительные параметры запуска», впишите:
/C ЗапуститьОбновлениеИнформационнойБазы
- Запустите базу в режиме 1С:Предприятие под пользователем с полными правами.
- Дождитесь окна «Обновление версии программы» и завершения всех обработчиков.
- Уберите параметр из настроек базы, иначе обновление будет запускаться при каждом входе.
Тот же эффект из командной строки:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /C ЗапуститьОбновлениеИнформационнойБазы
Путь к 1cv8.exe и номер платформы подставьте свои. Для серверной базы вместо /F используют /S"сервер\имябазы".
Шаг 3. Если нужно обновить только справочник — вызовите метод
Когда база стартует, но справочник явно неактуален, хватит одного вызова в серверном контексте. Удобнее всего — через внешнюю обработку или консоль кода под администратором:
УстановитьПривилегированныйРежим(Истина);
ЕстьИзменения = Ложь;
ЕстьУдаленные = Ложь;
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(ЕстьИзменения, ЕстьУдаленные);
Сообщить("Изменения: " + ЕстьИзменения + ", удалённые: " + ЕстьУдаленные);
Метод сверяет справочник с текущей конфигурацией: добавляет новые объекты, обновляет имена, помечает отсутствующие. Состав параметров отличается в разных версиях БСП — при ошибке вызова откройте модуль менеджера справочника в Конфигураторе и посмотрите сигнатуру.
Шаг 4. Уберите дубли после переноса данных
Повторное обновление дубли не лечит: оба элемента ссылаются на один объект, и программа не знает, какой оставить. Порядок такой:
- Запросом из раздела выше найдите повторяющиеся полные имена.
- Для каждой пары решите, какой элемент «родной». Обычно это тот, что был в базе до переноса: на него ссылаются профили групп доступа и настройки.
- Замените ссылки с лишнего элемента на правильный. В БСП есть обработка поиска и удаления дублей:
Администрирование → Обслуживание → Корректировка данных. Если справочник идентификаторов в ней не выбирается, замену делают кодом черезНайтиПоСсылкам()на копии базы. - Пометьте лишний элемент на удаление и выполните удаление помеченных объектов.
- Ещё раз запустите базу — ошибка при старте должна уйти.
Не удаляйте элементы справочника напрямую, без замены ссылок. Слетят ограничения доступа, привязки дополнительных обработок и даты запрета — пользователи увидят чужие данные или потеряют свои команды.
Шаг 5. Распределённая база: обновляйте сверху вниз
В РИБ справочник ведёт только главный узел. Правильная последовательность:
- Обновите конфигурацию в главном узле и запустите его — справочник обновится там.
- Выполните синхронизацию с подчинёнными узлами.
- Подчинённый узел примет изменения конфигурации и данные справочника, после чего запустится без ошибки.
Если узел уже ругается, ничего в нём не правьте. Проведите обмен с главным узлом — программа сама предложит загрузить сообщение и обновиться.
Расширения и внешние обработки: отдельный справочник и свои ловушки
Идентификаторы объектов расширений
Объекты, добавленные расширениями, хранятся в соседнем справочнике — «Идентификаторы объектов расширений». Он заполняется при подключении расширения и обновляется при старте сеанса.
Когда расширение заменили новой версией, а сеансы остались старые, возможна ошибка о несоответствии идентификаторов. Что помогает:
- 🔁 перезапустить все сеансы после загрузки нового
.cfe; - 🔌 отключить расширение (снять флажок «Активно» в
Администрирование → Печатные формы, отчёты и обработки → Расширения), перезапустить базу и включить снова; - 🧹 проверить, нет ли двух расширений с объектами под одинаковыми именами.
Внешние отчёты и обработки
Дополнительная обработка хранит, к каким объектам она подключена — через ссылки на идентификаторы. Если вы перенесли элемент справочника «Дополнительные отчёты и обработки» из другой базы, эти ссылки указывают в пустоту. Команда не появляется на форме документа, а обработка может не открываться.
Решение надёжное и простое:
- Сохраните файл
.epfили.erfиз карточки на диск. - Удалите или пометьте на удаление перенесённую карточку.
- Добавьте обработку заново кнопкой «Добавить из файла» и заново настройте размещение.
При регистрации программа сама сопоставит объекты с идентификаторами вашей базы.
Как избежать сбоев справочника в будущем
Пояснения к пунктам:
- Не переносите идентификаторы как данные. В правилах выгрузки исключите справочник «Идентификаторы объектов метаданных». Ссылки на него в приёмнике лучше сопоставлять по полному имени, а не по GUID.
- Не прерывайте обновление. Большая база на ERP может обновляться часами. Окно с прогрессом не закрывайте, сервер не перезагружайте.
- Не переименовывайте объекты в типовой без нужды. Переименование создаёт новый элемент справочника и требует перенастройки прав.
- Тестируйте на копии. Объединение баз и крупный перенос сначала прогоните на копии и проверьте запрос на дубли.
Если стандартные шаги не помогли
Бывает, что после замены ссылок и повторного обновления база всё равно не стартует. Варианты по возрастанию радикальности:
- Запуск без логики начала работы. Параметр
/C ОтключитьЛогикуНачалаРаботыСистемыпропускает проверки БСП при входе. База откроется, и можно исправить данные. Работать в таком режиме постоянно нельзя — это только для ремонта. - Проверка конфигурации. В Конфигураторе выполните
Конфигурация → Проверка конфигурации. Ошибки в доработках (объект удалили, а ссылка на него в коде осталась) мешают обновлению. - Тестирование и исправление.
Администрирование → Тестирование и исправлениев Конфигураторе. Нужен монопольный доступ к базе. Сам справочник идентификаторов оно не чинит, но устраняет битые ссылки и повреждения таблиц, из-за которых может падать обновление. - Откат к резервной копии и повторный перенос данных — уже с исключённым справочником идентификаторов.