Переход между редакциями 1.0 и 2.2 в конфигурациях «1С:Розница» (включая отраслевые решения, такие как «Розница. Аптека») сопровождается колоссальным изменением метаданных и структуры таблиц. Обновление информационной базы стандартным путем через последовательное накатывание релизов нередко занимает десятки часов или вовсе завершается аварийно из-за нехватки памяти. Разберем основные причины медленной конвертации, способы ускорения процесса и альтернативные варианты перехода.
Выясним причину многочасовой обработки данных при переходе с редакции 1.0 на 2.x. В конфигурации происходят коренные изменения ключевых подсистем:
Проанализируем правильный маршрут обновления. Распространенная ошибка — последовательная установка всех промежуточных релизов (1.0 → 2.0 → 2.1 → 2.2). Для перехода между поколениями выпускаются специализированные переходные конфигурации.
Редакция 2.0 в этой цепочке представляет собой технический служебный дистрибутив, предназначенный исключительно для реструктуризации данных. Работать в ней нельзя. Переход выполняется по цепочке: исходная база 1.0 обновляется на переходную конфигурацию, в ней запускаются процедуры конвертации данных, после чего выполняется прямое обновление на актуальный релиз 2.2. Для отраслевого решения («Розница. Аптека») наличие и номер актуального переходного дистрибутива следует уточнять у разработчика отраслевого решения.
Посмотрим на практический опыт профилирования процедуры обновления: подавляющую часть времени занимает дозаполнение чеков ККМ. Алгоритм штатной обработки часто устроен неоптимально — выполняется несколько последовательных циклов (по отдельному запросу на каждый реквизит) с последующей стандартной записью каждого объекта.
Если обновление выполняется с возможностью редактирования алгоритмов, применим следующие доработки:
ОбменДанными.Загрузка позволяет пропустить громоздкие обработчики событий при перезаписи документов, что дает до 30–40% прироста скорости.Посмотрим на пример установки режима загрузки при модификации документов чеков:
ДокументОбъект = СсылкаНаЧек.ПолучитьОбъект();
ДокументОбъект.ОбменДанными.Загрузка = Истина;
// Заполнение требуемых реквизитов новой редакции
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
Разберем по шагам регламентные операции, которые необходимо выполнить до запуска процесса конвертации:
ОтчетОРозничныхПродажах, не несут оперативной ценности для дальнейшей работы. Их удаление или архивация перед переходом сокращает время обновления в разы.Simple Recovery Model). Это предотвратит лавинообразное разрастание лога транзакций (LDF-файла).Рассмотрим альтернативный сценарий, который на практике оказывается наиболее надежным и быстрым при переходе на редакцию 2.2. Вместо многочасовой конвертации многолетней базы с накопленными ошибками учета развернем чистую информационную базу актуального релиза.
Порядок действий при переносе:
ВводНачальныхОстатков).Важное замечание для распределенных информационных баз (РИБ): механизмы РИБ не способны передать глобальные изменения структуры между редакциями 1.0 и 2.2 по каналам синхронизации. Перед обновлением узлы обязательно отвязываются от центральной базы. После обновления центральной базы (или создания чистой базы 2.2 с переносом остатков) для каждого магазина формируются и выгружаются полностью новые начальные образы узлов РИБ.