Как исправить ошибку «Расширения конфигурации обновлены, требуется перезапустить сеанс» при обновлении 1С:ERP?

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

В процессе обновления сложных конфигураций, таких как 1С:ERP Управление предприятием 2.0 (например, при переходе на версию 2.4.10.75), технические специалисты часто сталкиваются с прерывающим работу сообщением: {РегистрСведений.ТаблицыГруппДоступа.МодульМенеджера(78)}: Расширения конфигурации обновлены, требуется перезапустить сеанс. Эта ошибка коварна тем, что простой перезапуск сеанса, как правило, не помогает, и система уходит в бесконечный цикл требований перезагрузки. Рассмотрим детально, почему это происходит и как нам совместно решить эту проблему, используя проверенные методы.

Проанализируем причину возникновения ошибки

Давайте разберем техническую подоплеку. Ошибка возникает в модуле менеджера регистра сведений ТаблицыГруппДоступа. Этот регистр отвечает за хранение метаданных, к которым разрешен доступ в рамках системы прав. Когда мы подключаем расширения, Библиотека стандартных подсистем (БСП) должна сопоставить структуру основной конфигурации и структуру всех активных расширений. Если в процессе обновления конфигурации изменились типы данных или объекты, которые заимствованы в расширение, возникает конфликт версий. Система фиксирует, что «кэш» расширений не соответствует реальности, и выбрасывает исключение ВызватьИсключение НСтр("ru = 'Расширения конфигурации обновлены, требуется перезапустить сеанс.'").

Шаг 1. Проверка совместимости расширений и исправление перечислений

Первым делом нам необходимо проверить, какие именно объекты метаданных в наших расширениях «сломались» после обновления основной базы. Опытным путем установлено, что в версии ERP 2.4.10.75 разработчики изменили состав перечисления ТипыКомиссииЗаБанковскиеПереводы. В частности, значение BEH было переименовано в BEN. Если ваше расширение контролирует это перечисление, оно перестанет работать (и в таких случаях часто приходится искать "битые" запросы).

Проделаем следующие действия в конфигураторе:

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

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

Шаг 2. Корректировка режима совместимости

Часто после обновления основной конфигурации у нее повышается РежимСовместимости. Если у расширения этот параметр остался старым, платформа 1С выдаст ошибку при попытке применения изменений. Выясним, как это исправить:

  1. Посмотрим свойства основной конфигурации (правой кнопкой на корень дерева конфигурации — Свойства). Запомним значение в поле Режим совместимости (например, 8.3.12).
  2. Откроем свойства каждого расширения.
  3. Найдем аналогичное поле Режим совместимости. Если там стоит значение «Использовать из основной конфигурации» или старая версия (например, 8.3.11), установим его в точное соответствие с основной конфигурацией.
  4. Повторим процедуру проверки возможности применения расширений (F7 или через меню Действия).

Шаг 3. Решение проблемы с областью действия (Разделение данных)

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

Разберем алгоритм исправления:

  1. В окне Расширения конфигурации найдем проблемный элемент.
  2. Нажмем правой кнопкой мыши и выберем команду Изменить область действия расширения конфигурации.
  3. Система автоматически пересчитает необходимые параметры, и ошибка исчезнет.

Шаг 4. Использование Толстого клиента для завершения обновления

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

Шаг 5. Принудительная очистка серверного и пользовательского кэша

Если все вышеперечисленные шаги выполнены, но ошибка РегистрСведений.ТаблицыГруппДоступа.МодульМенеджера(78) сохраняется, значит, проблема в закэшированных данных на сервере. Система «помнит» старое состояние расширений.

Для клиент-серверного варианта проделаем следующее:

  1. Остановим службу Агент сервера 1С:Предприятия.
  2. Перейдем в каталог srvinfo на сервере.
  3. Найдем папки с именами snaccxt. В них хранится кэш расширений. Удалим их содержимое.
  4. Запустим службу сервера заново.

Для файловой базы достаточно очистить локальный кэш пользователя, удалив папку информационной базы из каталога %AppData%\1C\1cv8\.

Шаг 6. Работа с программным кодом и фоновыми заданиями

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

/C СтартОбновленияИнформационнойБазы

Также полезно проверить состояние регистра Параметры работы системы. Если в нем застряла запись о незавершенном обновлении расширений, ее можно аккуратно очистить программно или через консоль запросов, чтобы дать системе шанс начать проверку заново.

Проанализируем пример кода, который вызывается в модуле менеджера и приводит к ошибке. Как правило, это проверка версии:


Процедура ОбновитьДанныеРегистра(Параметры = Неопределено, ОбъектыМетаданных = Неопределено) Экспорт
    Если НужноПерезапуститьСеансДляОбновленияРасширений() Тогда
        ВызватьИсключение НСтр("ru = 'Расширения конфигурации обновлены, требуется перезапустить сеанс.'");
    КонецЕсли;
    // ... логика обновления таблиц групп доступа
КонецПроцедуры

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

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

← На главную