Обновление нетиповой конфигурации 1С, особенно такой динамичной, как «Розница», — это всегда вызов для технического специалиста. Ситуация осложняется, когда необходимо «перепрыгнуть» сразу через 10 и более релизов, переходя с глобальной ветки 2.2 на 2.3. В такой ситуации стандартный механизм «накатывания» обновлений может привести к потере уникальных доработок или, что еще хуже, к повреждению структуры данных. Разберем детально, как выстроить стратегию обновления, чтобы сохранить и данные, и функционал.
Представим ситуацию: у нас есть «1С:Розница 2.2», в которую внедрен сложный партионный учет (новые регистры, измененные модули проведения). Нам нужно добраться до актуального релиза 2.3. Первым делом проанализируем файл 1cv8upd.htm, который идет в комплекте с каждым обновлением. Фирма «1С» четко регламентирует цепочку обновлений. Нельзя просто взять и обновиться с первого релиза на десятый, если между ними были релизы с обязательной реструктуризацией данных. Мы должны выстроить цепочку «опорных» релизов, через которые будем проходить.
Рассмотрим основные риски:
Один из самых эффективных способов ускорить слияние кода — использование трехстороннего сравнения. Настроим 1С на работу с внешним инструментом, например, KDiff3 или Beyond Compare. Это позволит системе автоматически объединять участки кода, где типовые изменения и ваши доработки не пересекаются в рамках одной строки.
Проанализируем алгоритм действий при таком подходе:
.cf или .cfu).Если конфигурация сильно изменена, рассмотрим вариант переноса части кода в расширения конфигурации. Это значительно упростит будущие обновления. Однако помните, что расширения — не панацея. Если в основном релизе изменится тип данных реквизита, который заимствован в расширение, оно может «отвалиться».
Рассмотрим последовательность действий:
Выделяем программный код, отвечающий за логику (например, расчет партий), и переносим его в модули расширения, используя аннотации &Вместо, &Перед или &После. Сами данные (новые регистры и справочники) лучше оставить в основной конфигурации, так как работа с большими объемами данных в расширениях требует особой осторожности при реструктуризации.
Выясним причину, почему нельзя обновлять рабочую базу сразу. Зачастую первый запуск после обновления (процедуры ПриПервомЗапуске) может длиться часами из-за обработки миллионов записей. Для минимизации простоя магазина выполним следующие шаги:
.cf (конфигурация) или формируем цепочку .cfu.Посмотрим на пример ситуации, когда типовой реквизит удаляется или заменяется. Чтобы не потерять данные, используем методику «промежуточного сохранения»:
Если в релизе 2.2 данные хранились в Реквизит_Старый, а в 2.3 должны быть в Реквизит_Новый, при сравнении и объединении не разрешайте удаление старого реквизита. После обновления напишем простую обработку для переноса значений:
Выборка = Документы.РеализацияТоваровУслуг.Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.ПолучитьОбъект();
Объект.Реквизит_Новый = Объект.Реквизит_Старый;
Объект.Записать();
КонецЦикла;
Только после того, как мы убедились, что данные успешно перенесены, можно окончательно удалить старый объект из конфигурации.
Проанализируем специфику версии 2.3. В ней серьезно переработаны механизмы маркировки и интеграции с ГИС. Если ваш самописный партионный учет завязан на характеристики или серии, проверьте, не дублирует ли он теперь штатный функционал. Иногда выгоднее потратить время на разовый перенос остатков из ваших самописных регистров в новые типовые регистры 2.3, чем продолжать тащить за собой «костыли» доработок, которые будут ломаться при каждом обновлении.
Когда на тестовой базе все шаги пройдены и результат проверен пользователями, планируем «ночь обновления». Поскольку мы уже подготовили итоговый cf файл на копии, процесс на рабочей базе пойдет быстрее:
Загрузить конфигурацию из файла). Это обновит и код, и конфигурацию поставщика.srvinfo), чтобы избежать странных ошибок отображения форм.Важный совет: Если время простоя критично, некоторые процедуры отложенного обновления БСП можно запускать в несколько потоков. Это настраивается в константах или через консоль заданий. Также убедитесь, что версия платформы 1С соответствует требованиям релиза 2.3 — часто он требует более актуальную версию, чем 2.2.
Таким образом, успех обновления через 10 релизов зависит от тщательности предварительного прогона на копии и грамотного использования инструментов сравнения кода. Никогда не пренебрегайте запуском «Предприятия» между этапами, даже если кажется, что изменений в данных нет — логика БСП может быть скрыта глубоко в недрах системы.