Переход с редакции 11.4 на 11.5 в конфигурации «1С:Управление торговлей» признан одним из самых трудозатратных и длительных процессов в истории развития продукта. Основная сложность заключается не в простом обновлении метаданных, а в масштабной реструктуризации данных, связанной с переходом на новую концепцию объектов расчетов. В этой статье мы подробно разберем, почему процесс может длиться сутками, и какие шаги необходимо предпринять, чтобы успешно обновиться в условиях ограниченного временного окна.
Проанализируем архитектурные изменения. В версии 11.5 фирма «1С» полностью пересмотрела механизм ведения взаиморасчетов. Если раньше связь между документами (например, заказом и накладной) определялась непосредственно в регистрах, то теперь вводится промежуточное звено — справочник ОбъектыРасчетов. При обновлении система должна просканировать всю историю базы данных, проанализировать каждый документ и создать соответствующие записи в этом справочнике.
Разберем основные факторы, замедляющие этот процесс:
РасчетыСКлиентамиПоДокументам и пересчет ключей аналитики учета номенклатуры.Контрагенты, процедура Справочники.Контрагенты.ЗарегистрироватьДанныеКГенерацииОбъектовРасчетов может уходить в бесконечный цикл или выполнять крайне тяжелые SQL-запросы.Прежде чем запускать обновление на «живой» базе, рассмотрим меры по сокращению объема данных. Помните, что каждый лишний гигабайт в справочниках цен или истории заказов увеличивает время обновления в геометрической прогрессии.
Выполним следующие действия:
НоменклатураПоставщиков и документы УстановкаЦенНоменклатуры. Если в базе хранятся цены пятилетней давности, которые уже не актуальны, их стоит пометить на удаление и физически удалить через стандартную обработку.Выясним, как железо влияет на процесс. Хотя многие считают, что SSD формата M.2 решает все проблемы, практика показывает, что при обновлении УТ 11.5 узким местом часто становится процессор (частота на одно ядро) и настройки СУБД.
Рассмотрим рекомендации по настройке сервера:
TempDB расположены на самом быстром диске и их количество соответствует количеству ядер процессора (но не более 8). В процессе генерации объектов расчетов SQL-сервер активно использует временные таблицы.Мало кто знает, что процессом обновления можно управлять через настройки Библиотеки стандартных подсистем (БСП). По умолчанию система может запускать обработчики в один поток или, наоборот, пытаться запустить слишком много потоков, вызывая блокировки.
Посмотрим, как настроить многопоточность:
КоличествоПотоковОбновленияДанных.Важный нюанс: Для таких процедур, как ЗарегистрироватьДанныеКГенерацииОбъектовРасчетов, иногда эффективнее использовать 1 или 2 потока. Это позволяет избежать Deadlocks (взаимных блокировок) на уровне таблиц SQL, из-за которых процесс может стоять на месте часами.
Если в процессе отладки вы обнаружили, что система долго думает над конкретным запросом, например, в модуле Справочники.Контрагенты, можно применить «хирургическое» вмешательство. Рассмотрим пример кода, который часто вызывает затруднения из-за неоптимального обращения к иерархии партнеров:
// Пример проблемного участка, где может происходить долгое сопоставление
Процедура ЗарегистрироватьДанныеКГенерацииОбъектовРасчетов()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Взаиморасчеты.Ссылка КАК Ссылка,
| Взаиморасчеты.Партнер КАК Партнер
|ИЗ
| РегистрНакопления.РасчетыСКлиентами КАК Взаиморасчеты
|ГДЕ
| Взаиморасчеты.ОбъектРасчетов = ЗНАЧЕНИЕ(Справочник.ОбъектыРасчетов.ПустаяСсылка)";
// ... дальнейшая логика сопоставления
КонецПроцедуры
Для ускорения таких участков рекомендуется предварительно убедиться, что для всех партнеров и контрагентов корректно заполнена аналитика. Если вы профессиональный разработчик, вы можете временно отключить проверку некоторых некритичных условий в коде обработчика на копии базы, чтобы понять, какой именно сегмент данных тормозит выполнение.
Если окно простоя (ночь или выходные) категорически не позволяет завершить обновление, разберем альтернативный сценарий:
Внимание: Этот метод требует ювелирной точности, так как структура регистров изменилась. Вам придется сопоставлять данные 11.4 с новой архитектурой 11.5 вручную или с помощью правил конвертации.
Подведем итог. Долгое обновление УТ 11.4 на 11.5 — это не приговор, а следствие сложности структуры данных. Чтобы минимизировать простои, придерживайтесь следующего алгоритма:
UPDATE STATISTICS).Помните, что часть функционала 11.5 будет доступна сразу, а часть (связанная с детальными отчетами по взаиморасчетам) — только после завершения всех отложенных заданий. В некоторых случаях допустимо пустить пользователей в базу, пока обработчики догоняют данные в фоновом режиме, при условии, что они не будут менять документы прошлых периодов.