В процессе обновления сложных конфигураций, таких как 1С:ERP Управление предприятием 2.0 (например, при переходе на версию 2.4.10.75), технические специалисты часто сталкиваются с прерывающим работу сообщением: {РегистрСведений.ТаблицыГруппДоступа.МодульМенеджера(78)}: Расширения конфигурации обновлены, требуется перезапустить сеанс. Эта ошибка коварна тем, что простой перезапуск сеанса, как правило, не помогает, и система уходит в бесконечный цикл требований перезагрузки. Рассмотрим детально, почему это происходит и как нам совместно решить эту проблему, используя проверенные методы.
Давайте разберем техническую подоплеку. Ошибка возникает в модуле менеджера регистра сведений ТаблицыГруппДоступа. Этот регистр отвечает за хранение метаданных, к которым разрешен доступ в рамках системы прав. Когда мы подключаем расширения, Библиотека стандартных подсистем (БСП) должна сопоставить структуру основной конфигурации и структуру всех активных расширений. Если в процессе обновления конфигурации изменились типы данных или объекты, которые заимствованы в расширение, возникает конфликт версий. Система фиксирует, что «кэш» расширений не соответствует реальности, и выбрасывает исключение ВызватьИсключение НСтр("ru = 'Расширения конфигурации обновлены, требуется перезапустить сеанс.'").
Первым делом нам необходимо проверить, какие именно объекты метаданных в наших расширениях «сломались» после обновления основной базы. Опытным путем установлено, что в версии ERP 2.4.10.75 разработчики изменили состав перечисления ТипыКомиссииЗаБанковскиеПереводы. В частности, значение BEH было переименовано в BEN. Если ваше расширение контролирует это перечисление, оно перестанет работать (и в таких случаях часто приходится искать "битые" запросы).
Проделаем следующие действия в конфигураторе:
Если мы увидим ошибку, связанную с перечислением ТипыКомиссииЗаБанковскиеПереводы, нам нужно развернуть это перечисление внутри расширения, удалить старое значение и заново добавить актуальное из основной конфигурации. Это восстановит логическую целостность метаданных.
Часто после обновления основной конфигурации у нее повышается РежимСовместимости. Если у расширения этот параметр остался старым, платформа 1С выдаст ошибку при попытке применения изменений. Выясним, как это исправить:
Иногда после исправления метаданных возникает новая ошибка: Нельзя установить область действия расширения конфигурации в значение РазделениеДанных в информационной базе, не использующей разделение данных. Это происходит из-за того, что при обновлении флаги области действия могли установиться некорректно для конкретной базы.
Разберем алгоритм исправления:
Существует специфический нюанс, характерный для Базовых версий или при «зависании» обработчиков обновления БСП. Если база настойчиво требует перезапуска в Тонком клиенте, попробуем запустить ее под Толстым клиентом. В этом режиме механизмы инициализации параметров сеанса отрабатывают более полно. После успешного запуска в Толстом клиенте и завершения всех фоновых процедур обновления, Тонкий клиент обычно начинает работать в штатном режиме.
Если все вышеперечисленные шаги выполнены, но ошибка РегистрСведений.ТаблицыГруппДоступа.МодульМенеджера(78) сохраняется, значит, проблема в закэшированных данных на сервере. Система «помнит» старое состояние расширений.
Для клиент-серверного варианта проделаем следующее:
srvinfo на сервере.snaccxt. В них хранится кэш расширений. Удалим их содержимое.Для файловой базы достаточно очистить локальный кэш пользователя, удалив папку информационной базы из каталога %AppData%\1C\1cv8\.
Рассмотрим ситуацию, когда обновление блокируется активными фоновыми заданиями. Мы можем принудительно инициировать процедуру обновления через параметры запуска. Для этого в строке запуска информационной базы (или в консоли) добавим следующий параметр:
/C СтартОбновленияИнформационнойБазы
Также полезно проверить состояние регистра Параметры работы системы. Если в нем застряла запись о незавершенном обновлении расширений, ее можно аккуратно очистить программно или через консоль запросов, чтобы дать системе шанс начать проверку заново.
Проанализируем пример кода, который вызывается в модуле менеджера и приводит к ошибке. Как правило, это проверка версии:
Процедура ОбновитьДанныеРегистра(Параметры = Неопределено, ОбъектыМетаданных = Неопределено) Экспорт
Если НужноПерезапуститьСеансДляОбновленияРасширений() Тогда
ВызватьИсключение НСтр("ru = 'Расширения конфигурации обновлены, требуется перезапустить сеанс.'");
КонецЕсли;
// ... логика обновления таблиц групп доступа
КонецПроцедуры
Чтобы «протолкнуть» обновление в критической ситуации, убедитесь, что все расширения имеют флаг Активно и у них сняты галочки Безопасный режим (если это допустимо в вашей инфраструктуре), так как ограничения безопасности иногда мешают БСП корректно прочитать метаданные расширения в момент первого запуска после апдейта.
Подводя итог, можно сказать, что решение проблемы кроется в строгом соответствии структуры расширения и основной конфигурации. Помните, что любое изменение имен объектов в ERP (как в случае с BEH/BEN) требует ручной актуализации заимствованных объектов в ваших расширениях.