При обновлении современных конфигураций 1С (таких как Бухгалтерия предприятия 3.0, Зарплата и управление персоналом 3.1 или Управление торговлей 11), работающих на базе Библиотеки стандартных подсистем (БСП), пользователи часто сталкиваются с ситуацией, когда после загрузки нового релиза программа выдает сообщение: «Не завершен переход на новую версию». Это состояние может длиться часами или даже сутками, блокируя выполнение важных операций, например, закрытие месяца или формирование отчетности. Рассмотрим подробно, почему это происходит и как решить проблему различными методами.
Прежде чем приступать к активным действиям, разберем суть процесса. В новых версиях 1С обновление разделено на два этапа. Первый этап — это исключительное обновление метаданных в конфигураторе. Второй этап — отложенное обновление данных в пользовательском режиме. Система позволяет пользователям начать работу, пока в фоновом режиме выполняются тяжелые процедуры обработки данных (пересчет итогов, заполнение новых реквизитов). Если эти процедуры по какой-то причине останавливаются, мы видим сообщение о незавершенном переходе. Проанализируем основные причины зависания этого процесса.
Самая распространенная причина в клиент-серверном варианте (MSSQL, Postgres) — это установленная блокировка регламентных заданий. Если задания заблокированы, фоновый процесс обновления просто не может запуститься. Выполним следующие шаги для проверки:
Важный нюанс: Иногда требуется кратковременно включить блокировку, выгнать всех пользователей, а затем снова выключить ее, чтобы «встряхнуть» планировщик заданий сервера 1С.
Если блокировок нет, но процесс не движется, попробуем запустить его принудительно. Посмотрим, как это сделать через интерфейс программы:
Отложенное обновление ИБ.Проанализируем ситуацию: если после нажатия кнопки состояние задания быстро меняется на «Завершено», но процент выполнения в мониторе обновления не растет, это означает, что одна из процедур обработки данных завершилась с ошибкой. В этом случае процедуру нужно перезапускать несколько раз или искать ошибку в Журнале регистрации.
В некоторых случаях, особенно в серверных базах, фоновые задания не запускаются, если для них не задано четкое расписание. Разберем, как это исправить:
Зайдем в настройки регламентного задания Отложенное обновление ИБ и проверим расписание. Рекомендуется установить его как «каждые 60 секунд». Также обратим внимание на форму монитора обновления (ее можно найти через Все функции или Функции для технического специалиста — Обработки — Результаты обновления программы). Кликнув по ссылке «Выполняются дополнительные процедуры обработки данных», мы попадем в список очередей. Убедимся, что для процедур со статусом «Не выполнялась» запущены соответствующие потоки.
Иногда система «считает», что переход не завершен из-за старых записей в служебных регистрах. Рассмотрим, какие регистры стоит проверить и очистить в ручном режиме:
(не используется) Исключенные из перепроведения месяцы. Несмотря на пометку «не используется», наличие в нем записей за прошлые периоды часто вызывает диагностическое сообщение о незавершенном обновлении в помощнике закрытия месяца. Проанализируем записи и, если они относятся к старым годам, смело удалим их.Обработчики обновления. Здесь хранится список всех процедур. Если процедура зависла в статусе «Выполняется», можно попробовать вручную изменить ее статус на «Завершено» (через групповое изменение реквизитов), если вы уверены, что данные в порядке.Потоки обновлений. Если в нем завис «мертвый» поток, его очистка позволит системе запустить новый процесс.Если стандартные средства не помогают, мы можем инициировать выполнение процедур обновления напрямую с помощью программного кода. Это позволит выполнить обновление в текущем сеансе, минуя механизм фоновых заданий, что даст нам возможность увидеть текст ошибки в реальном времени. Рассмотрим пример кода, который можно запустить во внешней обработке:
// Принудительный запуск отложенного обновления в текущем сеансе
ПараметрыОбновления = ОбновлениеИнформационнойБазы.ДополнительныеПараметрыВыполненияОтложенногоОбновления();
ПараметрыОбновления.ВыполнятьВТекущемСеансе = Истина;
ОбновлениеИнформационнойБазы.ВыполнитьОтложенноеОбновление(Истина);
Использование параметра Истина заставляет систему игнорировать фоновый режим. Это наиболее эффективный способ «протолкнуть» обновление, которое спотыкается на некритичных ошибках данных.
Существует еще один метод, который помогает, когда система намертво блокирует работу, ссылаясь на незавершенные процессы. Выясним причину через работу с константой СведенияОБлокируемыхОбъектах. Посмотрим на пример кода для очистки этой блокировки:
// Очистка сведений о блокируемых объектах при обновлении
Сведения = Константы.СведенияОБлокируемыхОбъектах.Получить().Получить();
// Если структура заполнена, очищаем ее
Если ТипЗнч(Сведения) <> Тип("Строка") Тогда
Константы.СведенияОБлокируемыхОбъектах.Установить(Новый ХранилищеЗначения(""));
КонецЕсли;
Это действие снимет программную блокировку, которую БСП накладывает на объекты до завершения процедур обновления.
Если база небольшая (до 20 Гб), а серверный вариант упорно выдает ошибку, проанализируем возможность временного перехода в файловый режим:
.dt файл.Этот метод считается «традиционным» среди системных администраторов 1С, так как он исключает влияние специфических настроек сервера БД и прав службы usr1cv8.
Подводя итог, отметим, что ошибка «Не завершен переход на новую версию» — это не приговор, а следствие работы механизма фоновой обработки данных. В большинстве случаев достаточно проверить Регламентные задания и Блокировки в консоли сервера. Если же проблема в коде конкретного релиза, использование программного запуска процедур в текущем сеансе поможет выявить и устранить причину сбоя.