Как обновить сильно доработанную «Управление торговлей» 10.3 через большое количество релизов

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

Обновление конфигурации «Управление торговлей» (УТ) 10.3 с очень старого релиза (например, 10.3.12) на актуальный (10.3.77 и выше) — это не просто техническая процедура, а серьезный проект по миграции данных и кода. Когда разрыв между версиями составляет более 50 релизов, стандартная кнопка «Обновить» может привести к непредсказуемым последствиям: от потери кастомного функционала до полной поломки логики учета. Рассмотрим детально, как выполнить этот «прыжок», минимизировав риски.

Анализ текущего состояния и аудит доработок

Прежде чем приступать к каким-либо действиям в конфигураторе, проанализируем, насколько база отошла от типового решения. Часто бывает так, что «сильно переделанная» конфигурация содержит изменения, которые за прошедшие 10 лет уже были реализованы самой фирмой «1С» в официальных обновлениях. Выясним это по шагам:

  1. Сравнение с типовой конфигурацией того же релиза. Возьмем чистый cf файл версии 10.3.12.3 и сравним его с нашей рабочей базой. Это позволит выделить конкретный список объектов (справочников, документов, модулей), которые были изменены или добавлены.
  2. Аудит актуальности доработок. Проанализируем, нужны ли эти изменения сегодня. Например, если в 2012 году программист дописывал интеграцию с каким-то торговым оборудованием, сейчас она может быть неактуальна из-за перехода на 54-ФЗ и новые протоколы обмена.
  3. Проверка форм. Если доработки касались только визуального интерфейса (изменение положения полей на формах), зачастую проще отказаться от старых изменений в пользу типовых форм нового релиза, так как в новых версиях в формы добавлено множество обязательных реквизитов (маркировка, НДС 20%, коды ТН ВЭД).

Выбор стратегии: «Последовательный накат» или «Перенос в новую»

Существует два основных подхода к решению этой задачи. Разберем преимущества и недостатки каждого.

Метод 1: Поэтапное последовательное обновление (CFU)

Этот путь предполагает прохождение через все (или основные узловые) релизы. Главный плюс — автоматический запуск обработчиков обновления данных. В 1С:УТ 10.3 за это отвечает процедура ОбщегоНазначения.ВыполнитьОбновлениеИнформационнойБазы().

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

Важно: Проблема этого метода в том, что при каждом обновлении придется вручную объединять модули, что при 40–50 итерациях превращается в бесконечный процесс.

Метод 2: Миграция на новый типовой релиз (Чистый лист)

Проанализируем ситуацию: если доработок много, но они локализованы в определенных модулях, часто быстрее взять последний типовой релиз (например, 10.3.77) и перенести в него ваши доработки заново, адаптируя их под новую архитектуру. После этого данные переносятся из старой базы в новую с помощью обработки «Выгрузка и загрузка данных XML» или через свертку базы.

Проблема удаляемых реквизитов и обработчиков данных

Одной из главных опасностей «прыжка» через релизы является механизм удаления устаревших объектов. В 1С принята практика: сначала реквизит помечается префиксом Удалить..., а через несколько релизов он полностью исключается из конфигурации.

Разберем ситуацию: в релизе 10.3.20 данные переносятся из реквизита СтараяСтавка в новый регистр сведений. Если вы сразу обновитесь до 10.3.60, минуя промежуточные версии, обработчик обновления для релиза 10.3.20 может не сработать или не найти нужных метаданных, и данные просто исчезнут.

Для предотвращения этого выполним следующие действия:

  1. Используем специализированные сервисы или таблицы «1С» для определения минимального списка промежуточных релизов (так называемых «контрольных точек»).
  2. После каждого значимого обновления обязательно запускаем базу в режиме «Предприятие», чтобы отработали процедуры легализации данных.

Практические советы по работе с кодом

При объединении конфигураций всегда обращайте внимание на модули объектов. Посмотрим на примере документа РеализацияТоваровУслуг. В старых версиях расчет НДС мог быть жестко прописан в модуле, в новых же — вынесен в общие модули или механизмы подсистемы налогообложения.

Если вам необходимо сохранить кастомную логику, попробуйте выделить её в отдельные процедуры. В конфигурациях на обычных формах (каковой является УТ 10.3) мы не можем использовать расширения в полной мере, как в УТ 11, но мы можем минимизировать правки типовых процедур. Рассмотрим пример правильной вставки кода:


// В типовой процедуре ОбработкаПроведения
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    
    // Стандартный код 1С
    ...
    
    // НАЧАЛО ДОРАБОТКИ (Собственные механизмы)
    МойФирменныйМодуль.ВыполнитьДополнительныеДействия(ЭтотОбъект, Отказ);
    // КОНЕЦ ДОРАБОТКИ
    
КонецПроцедуры

Такой подход позволит при следующем обновлении легко увидеть ваши изменения и перенести их одним блоком.

Особенности подсистем маркировки и ЕГАИС

Обновляя УТ 10.3 до современных релизов, вы столкнетесь с тем, что в конфигурации появятся сотни новых объектов: справочники ШтрихкодыУпаковокТоваров, документы ЗаказНаЭмиссиюКодовМаркировкиСУЗ и целые подсистемы интеграции с ИС МП и ВетИС. Эти механизмы глубоко интегрированы в типовые документы.

Проанализируем ситуацию: если ваши старые доработки изменяли структуру проведения документов по регистрам (например, по регистру ЗаказыПокупателей), вам придется крайне осторожно адаптировать код под новые требования. В последних версиях логика проведения стала более сложной из-за необходимости контроля статусов маркируемой продукции.

Алгоритм успешного обновления

Выясним итоговую последовательность действий, которая обеспечит стабильную работу системы:

  1. Создание копии. Никогда не проводите эксперименты на живой базе.
  2. Тестовое объединение. Пробуем «накатить» финальный cf файл на копию 10.3.12. Смотрим на список конфликтов. Если их тысячи — возвращаемся к стратегии поэтапного обновления.
  3. Выполнение обновлений в режиме «Предприятие». Это критически важно. Каждый раз при запуске после обновления конфигурации 1С выполняет код:
    
    // Пример вызова в процедуре ПриНачалеРаботыСистемы
    ОбновлениеИнформационнойБазы.ВыполнитьОбновление();
    
    Нужно дождаться завершения всех фоновых заданий по обновлению данных.
  4. Тестирование ключевых бизнес-процессов. Проверяем: создается ли документ, печатается ли форма, корректно ли рассчитывается НДС, работает ли обмен с оборудованием.

Резюме: Прыжок с 10.3.12 на 10.3.77 возможен. Основная стратегия — это сочетание «умного» объединения (сохранение только жизненно важных доработок) и обязательного прохождения контрольных точек релизов для корректной трансформации данных. Если конфигурация переписана на 80%, рассмотрите вариант переноса остатков в чистую актуальную версию УТ 10.3.

← На главную