Ситуация, когда после успешного, казалось бы, обновления конфигурации пользователи не могут войти в систему, является довольно распространенной в практике администрирования 1С. Сообщение «Вход в программу временно невозможен в связи с обновлением конфигурации» обычно указывает на то, что информационная база находится в промежуточном состоянии: метаданные уже обновлены в Конфигураторе, но обязательные обработчики обновления в режиме «Предприятие» еще не завершили свою работу или вовсе не были запущены. Рассмотрим подробно, как выйти из этой ситуации и вернуть систему в рабочее состояние.
Разберем самый эффективный и «штатный» способ решения проблемы. Часто система «забывает» предложить запуск обработчиков обновления или этот процесс прерывается. Мы можем инициировать его принудительно, используя специальный ключ запуска. Проанализируем, как это сделать правильно:
ЗапуститьОбновлениеИнформационнойБазы
Если мы запускаем базу через ярлык или командную строку, формат будет следующим:
/С ЗапуститьОбновлениеИнформационнойБазы
После этого система должна проигнорировать блокировку и начать выполнение фоновых или последовательных процедур обновления данных. Проанализируем результат: если окно обновления появилось и процесс пошел, дождитесь его окончания. Важный момент: после успешного входа не забудьте удалить эту строку из параметров запуска, иначе при каждом открытии программа будет пытаться инициализировать обновление заново.
Рассмотрим ситуацию, когда обновление было выполнено, но база не была запущена первым сеансом под пользователем с полными правами. Выясним причину: механизмы БСП (Библиотеки стандартных подсистем) требуют, чтобы первый запуск после изменения метаданных осуществил администратор. Именно в этот момент срабатывает код, который прописывает новые версии в регистры.
Попробуем следующий алгоритм действий:
Иногда помогает «хитрость» с правами: временно дадим обычному пользователю права Администратор системы и Обновление конфигурации базы данных, выполним запуск, а после успешного входа вернем права в исходное состояние. Это помогает, когда основной администратор по какой-то причине не может инициировать процесс.
Проанализируем техническую сторону: иногда база данных уже полностью обновлена, но локальный компьютер пользователя «помнит» старое состояние конфигурации. Это происходит из-за кэширования метаданных. Посмотрим, как очистить кэш правильно:
Для локальной базы или тонкого клиента: самый надежный способ — удалить базу из списка в окне запуска 1С и добавить её заново. При этом папка с временными файлами (кэшем) будет создана с нуля, и старые данные не будут мешать входу.
Ручная очистка: необходимо перейти в директории:
%AppData%\1C\1Cv8%LocalAppData%\1C\1Cv8
И удалить там все папки с именами-идентификаторами (вида eb456...). Не бойтесь, настройки пользователя хранятся в других местах, это лишь временные файлы конфигурации.
Серверный кэш: в случае клиент-серверного варианта (SQL), иногда требуется перезапуск службы 1C:Enterprise 8.3 Server Agent. Это сбросит серверные вызовы и зависшие параметры сеансов, которые могут транслировать ошибку об обновлении.
Если автоматические методы не помогают, нам придется заглянуть «под капот» системы. Информация о том, какая версия конфигурации сейчас актуальна, хранится в регистре сведений Версии подсистем. Разберем, как с ним работать:
Версии подсистем.StandardSubsystems или имя вашей программы) отличается от того, что указано в справке «О программе», значит, произошел сбой записи.Выясним еще одну причину: процесс обновления может быть заблокирован «призрачным» сеансом. Проанализируем ситуацию в консоли администрирования кластера серверов 1С:
ОбновлениеИнформационнойБазы, их следует завершить принудительно.Если ни один из вышеперечисленных методов не сработал, рассмотрим способ временного обхода проверки в коде. Это актуально для сильно кастомизированных конфигураций (например, УПП 1.3). Посмотрим на пример манипуляций в общем модуле:
СтандартныеПодсистемыПовтИсп (или аналогичный, на который ссылается ошибка в стеке вызовов).ИнформационнаяБазаЗаблокированаДляОбновления).
// СтандартныеПодсистемыСервер.ПроверитьОбновлениеПараметровРаботыПрограммы( "ПараметрыСлужебныхСобытий", "ОбработчикиСобытий");
Подводя итог, можно сказать, что в 90% случаев помогает именно параметр запуска ЗапуститьОбновлениеИнформационнойБазы в сочетании с запуском от имени администратора. Всегда начинайте с этого метода, прежде чем переходить к более радикальным мерам в коде или базе данных.