Переход с редакции "Управление торговлей 10.3" на "Управление торговлей 11" — это сложный технологический процесс, который часто сопровождается проблемами производительности, особенно если база данных содержит сотни тысяч элементов справочников. Рассмотрим ситуацию, когда выгрузка из исходной базы проходит успешно, но при загрузке в новую базу процесс "зависает" на определенном этапе (например, на 200 000 из 300 000 позиций номенклатуры), журнал регистрации молчит, а обработка визуально продолжает "крутиться".
В этой статье мы подробно разберем, почему это происходит, как диагностировать причину зависания и какие настройки помогут завершить перенос данных успешно.
Прежде чем менять настройки сервера или разбивать данные на части, необходимо понять: действительно ли программа "зависла" в бесконечном цикле или она просто очень медленно обрабатывает тяжелый запрос.
Как советуют опытные специалисты, первым делом попробуем выяснить, что именно выполняет система в момент "зависания". Для этого нам потребуется Конфигуратор базы-приемника (УТ 11).
После остановки исполнения кода конфигуратор откроет модуль на той строке, которая выполнялась в данный момент. Проанализируем, где мы остановились:
Одной из самых частых причин, почему загрузка 300 000 элементов номенклатуры "вешает" сервер, является попытка системы записать все эти данные в рамках одной транзакции или накопление данных в оперативной памяти.
Штатный помощник перехода часто пытается загрузить огромный пакет данных целиком. Это приводит к тому, что процесс rphost на сервере 1С начинает потреблять всю доступную оперативную память, уходит в файл подкачки (swap), и скорость работы падает практически до нуля.
Решение: Использование обработки «Универсальный обмен данными в формате XML»
Вместо встроенного помощника перехода рекомендуем использовать стандартную обработку УниверсальныйОбменДаннымиXML. Она предоставляет гибкие настройки управления транзакциями.
Рассмотрим порядок действий:
Это заставит систему фиксировать транзакцию и освобождать оперативную память каждые 100-1000 объектов. Скорость загрузки при этом может вырасти в разы, а риск переполнения памяти исчезнет.
УТ 11, в отличие от УТ 10.3, насыщена регламентными заданиями и механизмами отложенного обновления. Когда вы загружаете поток данных, система пытается сразу же их индексировать (например, обновлять индекс полнотекстового поиска, рассчитывать доступность товаров и т.д.). Это создает блокировки таблиц СУБД.
Перед началом массивной загрузки выполним следующие действия в базе УТ 11:
Важно: Не забудьте включить регламентные задания обратно после завершения переноса данных.
Если памяти сервера недостаточно даже при использовании разбиения на транзакции, эффективным методом является порционная загрузка данных. Выгружать всё сразу (справочники + остатки) — рискованная стратегия для больших баз.
Разделим процесс на этапы:
Такой подход позволяет локализовать проблему. Если загрузка "споткнется" на конкретной группе товаров, вы быстрее найдете проблемный элемент (например, "битую" ссылку или спецсимволы в названии).
Если вы используете клиент-серверный вариант работы, "зависание" на несколько дней может быть связано с разрастанием журнала транзакций.
Проверим настройки SQL Server:
.ldf файла).Не стоит исключать и аппаратный фактор. УТ 11 значительно требовательнее к ресурсам, чем УТ 10.3. Компьютер или сервер, на котором "летала" 10.3, может оказаться "узким местом" для 11-й версии.
Обратите внимание на:
rphost на сервере 1С должны иметь достаточный запас памяти.Если стандартный XML-обмен через COM-соединение или файл продолжает сбоить на огромных объемах, можно рассмотреть альтернативные варианты (хотя это требует навыков программирования):
Если загрузка зависает:
УниверсальныйОбменДаннымиXML с настройкой записи в транзакции (по 100-1000 элементов).