Переход на новые релизы конфигурации Управление торговлей 11.5 часто сопровождается техническими сложностями, которые не встречаются при обычных минорных обновлениях. Это связано с радикальным изменением архитектуры учета взаиморасчетов и механизмов распределения данных. В рамках этой статьи мы разберем причины возникновения ошибки «Управление многопоточной регистрацией данных отложенного обновления. Сеанс работы завершен администратором», проанализируем механизмы зацикливания процедур и научимся восстанавливать процесс обновления с помощью инструментов БСП.
Первая и самая частая причина вылета базы при первом запуске в режиме «Предприятие» — нехватка оперативной памяти или срабатывание ограничений лицензии уровня ПРОФ. Рассмотрим ситуацию: при выполнении тяжелых процедур отложенного обновления процесс rphost начинает потреблять значительный объем ресурсов. Если на сервере установлена платформа версии 8.3.15 и выше с лицензией ПРОФ, административные ограничения кластера (которые теперь нельзя настроить вручную, в отличие от КОРП) могут принудительно завершить сеанс при превышении лимитов.
Что мы можем сделать:
Многие специалисты пытаются сэкономить время, «накатывая» несколько ключевых релизов в Конфигураторе подряд, не запуская базу в режиме «Предприятие». Проанализируем, почему это критично для версии 11.5. В данной версии 1С переходит на онлайн-взаиморасчеты. Это означает, что данные из старых регистров должны быть физически перенесены в новые структуры. Если мы пропускаем запуск промежуточного релиза, обработчики обновления следующей версии могут не найти подготовленные данные, что приведет к непредсказуемым ошибкам или битым ссылкам.
Правильный алгоритм действий:
Если обновление останавливается на таких процедурах, как РегистрыСведений.ВспомогательнаяИнформацияВзаиморасчетов.ОбработатьДанныеДляПереходаНаНовуюВерсию, это сигнализирует о неконсистентности данных. Выясним причину: в 11.5 появился обязательный справочник ОбъектыРасчетов. Если в старых регистрах были записи с пустыми договорами или организациями (что часто случается при некорректных доработках или после удаления объектов без контроля ссылок), система не может создать корректный объект расчетов и уходит в бесконечный цикл или выбрасывает исключение.
Разберем ситуацию с зацикливанием. Система считывает порцию данных, пытается их обработать, но из-за ошибки записи (например, дубли измерений) не помечает их как «выполненные». На следующей итерации она берет те же самые данные, и процесс повторяется до бесконечности.
Для решения «зависших» обновлений воспользуемся специализированной обработкой из состава Библиотеки Стандартных Подсистем. Рассмотрим шаги по ее применению:
ExtFiles\Инструменты разработчика) файл ОбновлениеВерсииИБ.epf.Если процедура выдает ошибку о конфликте блокировок, воспользуемся следующим кодом для принудительной очистки очереди (выполнять только на копии!):
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ * ИЗ РегистрСведений.ОчередьОбновленияИнформационнойБазы";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Менеджер = РегистрыСведений.ОчередьОбновленияИнформационнойБазы.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(Менеджер, Выборка);
Менеджер.Удалить();
КонецЦикла;
Часто стандартная точка останова не срабатывает в обработчиках обновления, так как они запускаются в фоновых сессиях. Посмотрим, как настроить отладку правильно:
/РежимОтладки.Параметры в методах ОбработатьДанныеДляПереходаНаНовуюВерсию.Важный нюанс: Если вы видите ошибку Объект не найден в измерениях регистра накопления, тестирование и исправление (ТИИ) может не помочь, а только усугубить ситуацию, создав пустые объекты-пустышки. В этом случае лучше программно заменить битые ссылки на корректные значения (например, на специально созданный элемент «Объект расчетов (служебный)») перед запуском обновления.
Проанализировав ситуацию, можно составить чеклист:
ЗапуститьОбновлениеИнформационнойБазы для выполнения процедур в монопольном режиме.ОбновлениеВерсииИБ.epf для выявления конкретного обработчика.