Администрирование · 12 мин
Обновление идентификаторов объектов метаданных в 1С 8.3
Пошаговая инструкция по обновлению идентификаторов объектов метаданных в 1С 8.3: конфигуратор, командная строка, БСП, типичные ошибки и проверка результата.
Идентификаторы объектов метаданных — это внутренние ссылки, по которым платформа 1С 8.3 связывает объекты конфигурации (справочники, документы, регистры, отчёты) с их представлением в базе данных и в механизмах вроде прав доступа, вариантов отчётов и дополнительных обработок. Когда конфигурация обновляется, объекты переименовываются или переносятся между базами, эти идентификаторы могут рассинхронизироваться. Результат — ошибки вида «Объект метаданных не найден», неработающие отчёты и сбои при входе пользователей.
Обновить идентификаторы можно несколькими способами: штатной обработкой из Библиотеки стандартных подсистем (БСП), через конфигуратор, пакетным запуском с параметрами командной строки или программным вызовом. Выбор зависит от того, есть ли в конфигурации БСП, работаете вы с файловой или клиент-серверной базой и нужна ли автоматизация.
Ниже разобраны все рабочие варианты, условия их применения, проверка результата и типичные ошибки, которые приводят к повторным сбоям.
Что такое идентификаторы объектов метаданных и когда их нужно обновлять
Каждый объект метаданных в конфигурации имеет уникальный внутренний идентификатор. Платформа использует его, чтобы при переименовании объекта не потерять связанные данные: настройки прав, сохранённые варианты отчётов, привязку дополнительных обработок, элементы справочника «Идентификаторы объектов метаданных» в БСП. Если идентификатор в базе не совпадает с тем, что ожидает конфигурация, механизмы, построенные на БСП, перестают находить нужные объекты.
Характерные ситуации, когда требуется обновление: после загрузки конфигурации из файла в копию базы, после объединения конфигураций, после восстановления из архива на другую платформу, при ошибках «Объект не найден» в справочнике «Идентификаторы объектов метаданных», а также когда разработчик вручную менял имена объектов с нарушением правил переименования.
Подготовка: что сделать до обновления
Любая операция, затрагивающая служебные механизмы, должна начинаться с резервной копии. Для файловой базы достаточно скопировать файл 1Cv8.1CD, для клиент-серверной — выполнить выгрузку в dt через конфигуратор либо средствами СУБД. Обновление идентификаторов само по себе не меняет бизнес-данные, но запускается оно обычно на фоне других проблем, и откат может понадобиться.
Второй шаг — проверить, есть ли в конфигурации БСП. Откройте конфигуратор и найдите подсистему «СтандартныеПодсистемы» или справочник «ИдентификаторыОбъектовМетаданных». Если их нет, обработки из БСП вам недоступны, и работать нужно средствами платформы. Третий шаг — убедиться, что в базе нет активных сеансов других пользователей: часть процедур требует монопольного доступа.
Способ 1. Обновление через механизмы БСП в режиме Предприятие
В типовых конфигурациях (Бухгалтерия предприятия, Управление торговлей, Зарплата и управление персоналом и других на базе БСП) обновление идентификаторов выполняется автоматически как часть обновления версии программы. После обновления конфигурации базы данных в конфигураторе нужно запустить режим Предприятие под пользователем с правами администратора — отработают отложенные обработчики обновления, включая обновление справочника идентификаторов.
Если нужно обновить идентификаторы принудительно, в конфигурациях с БСП есть стандартная обработка. Её можно найти через раздел администрирования: «Настройки прав и пользователей» либо через «Все функции» — обработка «Обновление вспомогательных данных» (в разных версиях БСП название может отличаться). В ней есть отдельный пункт обновления идентификаторов объектов метаданных.
- 1Сделайте резервную копию базы и завершите сеансы пользователей
- 2Обновите конфигурацию базы данных в конфигураторе (F7)
- 3Запустите режим Предприятие под администратором и дождитесь завершения обработчиков обновления
- 4При необходимости откройте обработку «Обновление вспомогательных данных» и запустите обновление идентификаторов вручную
- 5Проверьте журнал регистрации на наличие ошибок обновления
Способ 2. Обновление конфигурации базы данных в конфигураторе
На уровне платформы внутренние идентификаторы объектов метаданных синхронизируются при выполнении обновления конфигурации базы данных. Откройте конфигуратор, загрузите актуальную конфигурацию и выберите пункт меню «Конфигурация — Обновить конфигурацию базы данных» (клавиша F7). Платформа сопоставит объекты по именам и идентификаторам и выполнит реструктуризацию при необходимости.
Важный нюанс: если объект был удалён и создан заново с тем же именем, платформа может воспринять его как новый объект с новым идентификатором. В этом случае данные самого объекта сохранятся (если имя совпало), но ссылки из механизмов БСП на старый идентификатор станут недействительными — их придётся обновлять обработкой из БСП или вручную перенастраивать права и варианты отчётов.
Для принудительной полной реструктуризации в конфигураторе есть пункт «Администрирование — Тестирование и исправление» с включённой реструктуризацией таблиц. Это тяжёлая операция, на больших базах она занимает значительное время и требует монопольного доступа.
Способ 3. Пакетный запуск из командной строки
Для автоматизации обновления на нескольких базах удобно использовать пакетный режим конфигуратора. Запуск обновления конфигурации базы данных выполняется параметром /UpdateCfg или через /LoadCfg с последующим обновлением. Типовая последовательность для файловой базы выглядит так:
"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" DESIGNER /F"D:\Bases\MyBase" /N"Администратор" /P"пароль" /UpdateCfg /UpdateDBCfg /DisableStartupDialogs /Out"D:\Logs\update.log"Версию платформы в пути к исполняемому файлу укажите ту, что реально установлена у вас. Ключ /Out направляет вывод в лог-файл — по нему удобно проверять, завершилось ли обновление без ошибок. Для клиент-серверной базы вместо /F используется /S с указанием сервера и имени базы.
После пакетного обновления конфигурации базы данных в типовых решениях нужен ещё запуск режима Предприятие с выполнением обработчиков обновления — его тоже можно автоматизировать через параметр /Execute с указанием внешней обработки или через штатный запуск с ключом /C, если конфигурация это поддерживает.
Способ 4. Программное обновление через встроенный язык
В конфигурациях с БСП обновление идентификаторов можно вызвать программно через общий модуль Справочники.ИдентификаторыОбъектовМетаданных — в нём предусмотрены экспортные процедуры обновления данных справочника по текущим метаданным. Точное имя процедуры зависит от версии БСП, поэтому сверяйтесь с составом модуля в вашей конфигурации.
Такой вызов удобно встроить в регламентное задание после обмена конфигурациями между узлами РИБ или в собственный обработчик после загрузки cf-файла. Перед программным вызовом убедитесь, что код выполняется на сервере с достаточными правами и что в базе нет незавершённых обработчиков обновления версии.
Как проверить результат обновления
После любого из способов откройте журнал регистрации и отфильтруйте события за период обновления: не должно быть ошибок с текстом про объекты метаданных, идентификаторы и обработчики обновления. Наличие ошибок «Объект не найден» сразу после процедуры означает, что часть ссылок осталась битой.
Далее проверьте функционально: откройте несколько отчётов, у которых были сохранённые варианты, зайдите под пользователем с ограниченными правами и убедитесь, что доступ работает как раньше. В типовых конфигурациях полезно открыть справочник «Идентификаторы объектов метаданных» и убедиться, что в нём нет помеченных на удаление дублей с одинаковыми полными именами.
Как проверить результат
Нет ошибок обработчиков и сообщений «объект не найден»
Ошибки по идентификаторам, незавершённые отложенные обработчики
Отчёты открываются с ранее сохранёнными настройками
Варианты пропали или отчёт не находится
Доступ соответствует настроенным профилям
Пользователи теряют доступ или видят лишнее
Типичные ошибки и ограничения
Отдельное ограничение касается баз, полученных копированием файла 1Cv8.1CD без выгрузки в dt: идентификаторы в копии совпадают с оригиналом, что обычно безопасно, но при последующем раздельном обновлении копии и оригинала их метаданные расходятся. Для переноса конфигурации между такими базами используйте сравнение и объединение, а не загрузку cf целиком, если нужно сохранить пользовательские данные копии.
Перед массовым обновлением рабочих баз имеет смысл прогнать всю цепочку — обновление конфигурации, запуск Предприятия, проверку отчётов и прав — на копии базы. Это занимает время, но позволяет заранее увидеть битые идентификаторы и подготовить план исправления, а не разбираться с ними в разгар рабочего дня.
Часто задаваемые вопросы
Нужно ли обновлять идентификаторы вручную после каждого обновления типовой конфигурации?
Нет. В конфигурациях на БСП обновление идентификаторов входит в стандартные обработчики обновления версии и выполняется автоматически при первом запуске режима Предприятие после обновления. Ручное вмешательство требуется только при ошибках в журнале регистрации или нештатных ситуациях вроде загрузки cf вместо обновления.
Что делать, если в справочнике идентификаторов появились дубли?
Дубли обычно возникают после объединения конфигураций или загрузки данных между базами. Запустите штатное обновление идентификаторов через обработку БСП — механизм сопоставит элементы по полным именам объектов. Оставшиеся дубли без ссылок из прав и вариантов отчётов можно пометить на удаление, но только после проверки, что на них ничего не ссылается.
Можно ли обновить идентификаторы без монопольного доступа?
Обновление конфигурации базы данных и реструктуризация требуют монопольного доступа. Обработчики обновления БСП в режиме Предприятие часть операций выполняют в фоне при работающих пользователях, но первый запуск после обновления рекомендуется делать без активных сеансов, чтобы избежать блокировок и ошибок записи служебных данных.
Почему после обновления пропали сохранённые варианты отчётов?
Варианты отчётов привязаны к идентификаторам объектов метаданных. Если отчёт был удалён и создан заново, его идентификатор сменился, и старые варианты потеряли привязку. Восстановить их можно, только вернув исходный идентификатор из резервной копии, либо настроив варианты заново. Поэтому объекты нельзя пересоздавать вместо переименования.
Отличается ли процедура для файловой и клиент-серверной базы?
Сама логика обновления одинакова, различия в инфраструктуре: для клиент-серверной базы резервную копию лучше делать средствами СУБД, пакетный запуск выполняется с параметром /S вместо /F, а длительная реструктуризация на больших таблицах заметно нагружает сервер СУБД, поэтому её планируют на нерабочее время.
Как понять, что проблема именно в идентификаторах, а не в чём-то другом?
Характерные признаки: ошибки «Объект метаданных не найден» с указанием полного имени объекта, пустой или частично пустой справочник «Идентификаторы объектов метаданных», сбои прав доступа и вариантов отчётов сразу после обновления или переноса конфигурации. Если ошибки касаются данных документов и проводок, причина обычно в другом — начинайте с тестирования и исправления базы.
Что важно запомнить
Обновление идентификаторов объектов метаданных в 1С 8.3 выполняется штатными средствами: обновлением конфигурации базы данных в конфигураторе и обработчиками БСП в режиме Предприятие. Всегда делайте резервную копию, обеспечивайте монопольный доступ и не пересоздавайте объекты вместо переименования. Результат проверяйте по журналу регистрации, сохранённым вариантам отчётов и работе прав пользователей.