Как исправить внезапные ошибки и зацикливания при обновлении Управление торговлей 11.5

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Переход на новые релизы конфигурации Управление торговлей 11.5 часто сопровождается техническими сложностями, которые не встречаются при обычных минорных обновлениях. Это связано с радикальным изменением архитектуры учета взаиморасчетов и механизмов распределения данных. В рамках этой статьи мы разберем причины возникновения ошибки «Управление многопоточной регистрацией данных отложенного обновления. Сеанс работы завершен администратором», проанализируем механизмы зацикливания процедур и научимся восстанавливать процесс обновления с помощью инструментов БСП.

Причина 1: Ограничения платформы и потребление памяти rphost

Первая и самая частая причина вылета базы при первом запуске в режиме «Предприятие» — нехватка оперативной памяти или срабатывание ограничений лицензии уровня ПРОФ. Рассмотрим ситуацию: при выполнении тяжелых процедур отложенного обновления процесс rphost начинает потреблять значительный объем ресурсов. Если на сервере установлена платформа версии 8.3.15 и выше с лицензией ПРОФ, административные ограничения кластера (которые теперь нельзя настроить вручную, в отличие от КОРП) могут принудительно завершить сеанс при превышении лимитов.

Что мы можем сделать:

  1. Проанализируем нагрузку в диспетчере задач или консоли администрирования. Если процесс «отъедает» всю доступную память, необходимо временно увеличить файл подкачки или объем ОЗУ на сервере.
  2. Уменьшим количество потоков обновления. В окне «Результаты обновления программы» (раздел Администрирование — Обслуживание) или через программную настройку констант установим количество потоков равным 1. Это снизит нагрузку на сервер и исключит конфликты блокировок.

Причина 2: Нарушение последовательности обновления релизов

Многие специалисты пытаются сэкономить время, «накатывая» несколько ключевых релизов в Конфигураторе подряд, не запуская базу в режиме «Предприятие». Проанализируем, почему это критично для версии 11.5. В данной версии 1С переходит на онлайн-взаиморасчеты. Это означает, что данные из старых регистров должны быть физически перенесены в новые структуры. Если мы пропускаем запуск промежуточного релиза, обработчики обновления следующей версии могут не найти подготовленные данные, что приведет к непредсказуемым ошибкам или битым ссылкам.

Правильный алгоритм действий:

  1. Обновляем конфигурацию на один ключевой релиз.
  2. Запускаем базу в режиме «Предприятие» под пользователем с полными правами.
  3. Дожидаемся завершения всех отложенных процедур обновления (раздел Администрирование — Обслуживание — Результаты обновления).
  4. Только после достижения 100% выполнения процедур переходим к следующему релизу.

Причина 3: Ошибки в данных и «битые» ссылки

Если обновление останавливается на таких процедурах, как РегистрыСведений.ВспомогательнаяИнформацияВзаиморасчетов.ОбработатьДанныеДляПереходаНаНовуюВерсию, это сигнализирует о неконсистентности данных. Выясним причину: в 11.5 появился обязательный справочник ОбъектыРасчетов. Если в старых регистрах были записи с пустыми договорами или организациями (что часто случается при некорректных доработках или после удаления объектов без контроля ссылок), система не может создать корректный объект расчетов и уходит в бесконечный цикл или выбрасывает исключение.

Разберем ситуацию с зацикливанием. Система считывает порцию данных, пытается их обработать, но из-за ошибки записи (например, дубли измерений) не помечает их как «выполненные». На следующей итерации она берет те же самые данные, и процесс повторяется до бесконечности.

Использование инструментов БСП для диагностики и исправления

Для решения «зависших» обновлений воспользуемся специализированной обработкой из состава Библиотеки Стандартных Подсистем. Рассмотрим шаги по ее применению:

  1. Найдем в дистрибутиве БСП (папка ExtFiles\Инструменты разработчика) файл ОбновлениеВерсииИБ.epf.
  2. Запустим эту обработку в проблемной базе. Она позволяет увидеть полный список обработчиков, их статус и, что самое важное, позволяет запустить конкретный «упавший» обработчик повторно или в отладочном режиме.
  3. Включим флаг «Детализировать ход обновления в журнале регистрации» на панели обслуживания. Это позволит увидеть детальные сообщения об ошибках, включая GUID объектов, на которых спотыкается код.

Если процедура выдает ошибку о конфликте блокировок, воспользуемся следующим кодом для принудительной очистки очереди (выполнять только на копии!):


Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ * ИЗ РегистрСведений.ОчередьОбновленияИнформационнойБазы";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    Менеджер = РегистрыСведений.ОчередьОбновленияИнформационнойБазы.СоздатьМенеджерЗаписи();
    ЗаполнитьЗначенияСвойств(Менеджер, Выборка);
    Менеджер.Удалить();
КонецЦикла;

Эффективная отладка фоновых заданий обновления

Часто стандартная точка останова не срабатывает в обработчиках обновления, так как они запускаются в фоновых сессиях. Посмотрим, как настроить отладку правильно:

  1. В конфигураторе откроем Сервис — Параметры — Запуск 1С:Предприятия.
  2. В поле «Параметры запуска» добавим строку /РежимОтладки.
  3. В параметрах отладки (Отладка — Подключение) убедимся, что включено автоматическое подключение фоновых заданий.
  4. Теперь при старте процедур обновления конфигуратор автоматически «перехватит» поток, и мы сможем проанализировать значения переменных, например, структуру Параметры в методах ОбработатьДанныеДляПереходаНаНовуюВерсию.

Важный нюанс: Если вы видите ошибку Объект не найден в измерениях регистра накопления, тестирование и исправление (ТИИ) может не помочь, а только усугубить ситуацию, создав пустые объекты-пустышки. В этом случае лучше программно заменить битые ссылки на корректные значения (например, на специально созданный элемент «Объект расчетов (служебный)») перед запуском обновления.

Резюме действий для успешного перехода

Проанализировав ситуацию, можно составить чеклист:

← На главную