Переход между подверсиями и редакциями в крупных конфигурациях на платформе 1С:Предприятие, таких как Управление торговлей, часто сопровождается выполнением сложных процедур обработки данных. Одной из наиболее известных и массовых проблем в период активного перехода пользователей с редакции 11.3 на 11.4 стало зависание процесса обновления на этапе выполнения отложенных обработчиков. Чаще всего этот процесс останавливался на отметке 83% при попытке обновиться на релиз 11.3.4.227.
В этой статье мы подробно рассмотрим причины возникновения данной проблемы, проанализируем, почему стандартные механизмы дают сбой, и разберем пошаговые алгоритмы её решения с использованием правильной последовательности обновления и вспомогательных инструментов диагностики.
Зависание обновления на определенном проценте (чаще всего в районе 80-85%) при входе в программу в режиме "Предприятие" указывает на сбой или зацикливание так называемых отложенных обработчиков обновления. Эти обработчики выполняются в фоновом режиме с помощью механизма регламентных заданий.
Проанализировав технологический журнал и журнал регистрации, можно определить конкретное фоновое задание, на котором спотыкается система. В данном случае виновником является процедура заполнения данных:
Справочники.Номенклатура.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию
которая подготавливает информацию для выполнения основного отложенного обработчика:
Справочники.Номенклатура.ОбработатьДанныеДляПереходаНаНовуюВерсию
Этот этап критически важен, так как при переходе на новую версию конфигурации меняется внутренняя архитектура хранения данных справочника Номенклатура, его связей с характеристиками, упаковками, сериями и штрихкодами. Процедура анализирует каждую позицию номенклатуры и регистрирует её в специальных служебных регистрах сведений для последующей отложенной обработки.
Выделим основные технические причины, по которым этот процесс может длиться бесконечно или аварийно завершаться:
НоменклатураПродаетсяСовместно или в настройках распределения по складам, процедура регистрации зацикливается, пытаясь обработать одну и ту же запись повторно.Рассмотрим подробнее, как обойти эту проблему и успешно завершить переход на актуальные версии программы.
Практический опыт специалистов показывает, что попытка обновиться напрямую с релиза 11.3.4.185 на проблемный релиз 11.3.4.227 почти всегда приводит к зависанию фоновых процедур. Чтобы обойти ошибку в коде обработчика, необходимо использовать переходный релиз 11.3.4.228, в котором разработчики исправили логику регистрации номенклатуры.
Разберем по шагам правильную и наиболее безопасную схему обновления:
Справочники.Номенклатура.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию успешно отработает без зацикливания.Важное предупреждение: Ни в коем случае нельзя начинать обновление на редакцию 11.4, если в редакции 11.3 остались невыполненные или зависшие отложенные обработчики. Это приведет к потере связей в справочниках, битым ссылкам в карточках номенклатуры и некорректному отображению остатков в отчетах.
Если вы уже обновили конфигурацию на релиз 11.3.4.227, запустили систему и обнаружили бесконечное зависание на 83%, откатываться назад к резервной копии не всегда возможно (например, если в базу уже были внесены новые документы за день). В этом случае можно "протолкнуть" обновление следующим образом:
Проанализируем пример кода, с помощью которого можно программно проверить статус выполнения отложенных обработчиков обновления через внешнюю обработку или групповую обработку данных:
ПараметрыОбновления = ОбновлениеИнформационнойБазыСлужебный.ПараметрыОбновления();
ТаблицаОбработчиков = ОбновлениеИнформационнойБазыСлужебный.ВыполняемыеОбработчикиОбновления();
Для Каждого СтрокаОбработчик Из ТаблицаОбработчиков Цикл
Если Найти(СтрокаОбработчик.ИмяОбработчика, "Номенклатура") > 0 Тогда
ЗаписьЖурналаРегистрации("ДиагностикаОбновления",
УровеньЖурналаРегистрации.Информация,
,
,
"Обработчик: " + СтрокаОбработчик.ИмяОбработчика + " | Статус: " + СтрокаОбработчик.Статус);
КонецЕсли;
КонецЦикла;
Чтобы минимизировать риски возникновения блокировок и зависаний при переходе на новые архитектурные решения в 1С, перед началом процесса рекомендуется выполнить комплекс профилактических мероприятий:
Номенклатура.Для детального мониторинга отложенных процессов используйте специализированный инструмент — внешнюю обработку "Консоль обновления ИБ" (доступна на диске ИТС). Она позволяет вручную перезапускать зависшие обработчики, изменять их приоритет и детально отслеживать ошибки в реальном времени.