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

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

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

{Справочник.ИдентификаторыОбъектовМетаданных.МодульМенеджера}: Ошибка при вызове метода контекста (Записать) ТаблицаОбъект.Записать; по причине: Ошибка при выполнении обработчика - 'ПередЗаписью' по причине: {ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль}: Вход в программу временно невозможен в связи с обновлением на новую версию.

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

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

Способ 1. Проверка и восстановление прав администратора в конфигураторе

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

  1. Откроем информационную базу в режиме Конфигуратор под учетной записью с полными административными правами.
  2. Перейдем в главное меню: Администрирование → Пользователи.
  3. Откроем карточку пользователя, под которым выполняется запуск обновления в режиме «1С:Предприятие».
  4. Перейдем на вкладку Прочие и проверим назначенные роли.
  5. Убедимся, что установлены флаги напротив основных ролей: Администратор системный (или Администратор), Полные права и Администрирование.
  6. Сохраним изменения пользователя и повторно запустим систему в режиме «1С:Предприятие».

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

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

  1. Закроем все открытые сеансы работы с информационной базой (включая регламентные задания и соединения через веб-сервисы).
  2. Запустим клиент «1С:Предприятие» с ключом принудительного запуска обновления данных БСП:
    
    "C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /IBName "НашаБаза" /C ЗапуститьОбновлениеИнформационнойБазы
    
  3. Если была программно установлена блокировка работы пользователей, снимем её при старте ключом:
    
    "C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /IBName "НашаБаза" /C РазрешитьРаботуПользователей
    

Параметр ЗапуститьОбновлениеИнформационнойБазы сигнализирует подсистеме БСП о необходимости выполнить вспомогательные процедуры монопольно в привилегированном контексте, игнорируя стандартные запреты на запись объектов.

Способ 3. Программное обновление справочника идентификаторов через внешнюю обработку

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


УстановитьПривилегированныйРежим(Истина);
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(Истина, Истина);

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

Способ 4. Удаление неиспользуемых устаревших планов обмена

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

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

Способ 5. Очистка служебных констант обновления

Если в процессе предыдущих аварийных попыток обновления служебные структуры данных оказались повреждены или разрослись до ненормальных размеров, их необходимо сбросить.

Рассмотрим, какие константы отвечают за состояние обновления БСП:

  1. Константы.ПараметрыРаботыПрограммы — содержит сериализованную структуру текущих параметров БСП.
  2. Константы.СведенияОбОбновленииИБ — хранит статус выполнения регламентных процедур перехода между версиями.
  3. Константы.ПараметрыСлужебныхСобытий — кэш подписок и обработчиков подсистем.

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

← На главную