При обновлении крупных конфигураций, таких как 1С:ERP Управление предприятием, особенно при переходе через несколько релизов (например, с версии 2.5.8 на 2.5.12), мы нередко сталкиваемся с критическими ошибками на этапе первого запуска в режиме 1С:Предприятие. Одной из таких проблем является ситуация, когда появляется форма "Авторизация не выполнена", а при ее закрытии клиент просто завершает работу. Давайте разберем эту проблему по шагам и выясним причину такого поведения системы.
Первое, с чем мы сталкиваемся — невозможность увидеть сам текст ошибки в пользовательском режиме, так как клиент закрывается. В таких случаях мы не должны гадать. Если приложение аварийно завершает работу и мы не можем провалиться в отладку через обычный интерфейс, проанализируем Журнал регистрации (ЖР) через Конфигуратор.
Для этого откроем Конфигуратор и перейдем в меню Администрирование — Журнал регистрации. Найдем события с уровнем "Ошибка". В нашей ситуации мы увидим следующий стек вызовов:
Ошибка при вызове метода контекста (Записать)
{ОбщийМодуль.Пользователи.Модуль(892)}: Если ПользователиСлужебныйПовтИсп.ВерсияПредприятияПоддерживаетВосстановлениеПаролей Тогда
...
{Справочник.Пользователи.МодульОбъекта(90)}: ПользователиСлужебный.НачатьОбработкуПользователяИБ(ЭтотОбъект, ПараметрыОбработкиПользователяИБ);
...
{ОбщийМодуль.ОбщегоНазначения.Модуль(6033)}: Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
[ОшибкаВоВремяВыполненияВстроенногоЯзыка] по причине: Ошибка при выполнении обработчика - 'ПередЗаписью' по причине: Метод объекта не обнаружен (ВерсияПредприятияПоддерживаетВосстановлениеПаролей)
Проанализируем этот лог: ошибка Метод объекта не обнаружен (ВерсияПредприятияПоддерживаетВосстановлениеПаролей) напрямую связана с обновлением Библиотеки стандартных подсистем (БСП). В процессе первого запуска система пытается актуализировать справочник служебных пользователей (удаляет старого служебного пользователя и пытается создать нового), но не находит нужную функцию в общем модуле ПользователиСлужебныйПовтИсп.
Самая частая причина, по которой методы общих модулей "пропадают" из контекста после обновления — это влияние подключенных расширений. Рассмотрим подробнее, как это происходит.
Если в базе установлены расширения, в которые ранее были заимствованы общие модули Пользователи, ПользователиСлужебный или ПользователиСлужебныйПовтИсп, старый код из расширения начинает перекрывать новый код обновленной конфигурации. При значительном повышении версии БСП структура модулей меняется, и старые заимствованные перехватчики ломают логику.
Что мы должны сделать:
Поскольку мы работаем с серверной базой и выполняем масштабное обновление (возможно, через загрузку .cf файла), кэш метаданных на сервере 1С мог не обновиться корректно. Старые версии скомпилированных модулей остались в памяти, что вызывает рассинхронизацию вызовов функций.
Выполним следующие шаги для глубокой очистки кэша:
snccntx в каталоге кластера.srvinfo) и удалим локальные кэши.%AppData%\1C\1cv8 и %LocalAppData%\1C\1cv8).Иногда визуальные формы авторизации и проверки БСП мешают отработать системным фоновым заданиям обновления. Мы можем заставить систему проигнорировать часть интерфейсных проверок и сразу перейти к обработчикам обновления БСП.
Попробуем запустить базу со специальным параметром командной строки. В настройках запуска информационной базы в окне списка баз (или через командную строку) добавим параметр:
/С ЗапуститьОбновлениеИнформационнойБазы
Этот ключ сообщает Библиотеке стандартных подсистем о необходимости немедленно начать выполнение процедур обновления (в том числе отложенных), минуя стандартные интерфейсные проверки.
Хотя на сайте ИТС может быть указано, что прямое обновление с версии 2.5.8.443 до 2.5.12.270 поддерживается, на практике такие масштабные переходы на рабочих базах часто приводят к проблемам. Автор темы отметил, что демо-база обновилась успешно, а рабочая копия сломалась. Это связано с тем, что в рабочей базе накоплены исторические данные, изменены настройки БСП и есть живые пользователи.
Если чистка кэша и отключение расширений не помогли, нам придется изменить стратегию обновления:
.cf)..cfu) для ключевых промежуточных релизов (например, перейдем сначала на 2.5.9, затем на 2.5.10, 2.5.11 и только потом на 2.5.12)..cfu обязательно запускаем базу в режиме Предприятия, дожидаемся 100% выполнения всех отложенных обработчиков обновления.Такой поэтапный подход гарантирует, что структура служебных справочников (таких как Справочник.Пользователи) и регистров БСП будет трансформироваться последовательно, и метод ВерсияПредприятияПоддерживаетВосстановлениеПаролей будет корректно инициализирован на нужном этапе.