Как правильно обновить Розницу 2 (РИБ) на несколько релизов подряд?

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

Обновление распределенной информационной базы (РИБ) в 1С:Розница 2 — задача всегда ответственная, а когда разрыв между текущим релизом и актуальным составляет несколько лет (например, с 2018 года по текущий момент), она становится критически сложной. В такой ситуации стандартный механизм обновления через обмен данными может давать сбои, приводить к «раздуванию» файлов обмена или потере данных. Рассмотрим подробнее, как минимизировать риски и выполнить процедуру максимально эффективно.

Проблема больших обновлений в РИБ

Разберем, почему нельзя просто нажать кнопку «Обновить» в центральной базе и ждать, пока всё «прилетит» на точки. Основная причина кроется в механизме работы РИБ. При обновлении конфигурации в центральном узле, система регистрирует изменения метаданных. Если обновлений много, объем этих изменений становится колоссальным. При первой же синхронизации периферийный узел попытается принять огромный файл (иногда измеряемый гигабайтами), что часто заканчивается ошибкой Недостаточно памяти или Ошибка десериализации.

Кроме того, 1С:Розница 2 за эти годы прошла путь трансформации из версии 2.2 в 2.3. Это не просто смена цифр, а изменение структуры регистров, логики работы с маркировкой и ЕГАИС. Проанализируем три основных стратегии решения этой задачи.

Способ 1. Поэтапное обновление с промежуточными обменами

Этот метод считается самым «правильным» с точки зрения методологии 1С, но он и самый трудозатратный. Суть заключается в том, чтобы не прыгать через 20 релизов сразу, а двигаться короткими итерациями по 3–5 релизов. Выясним алгоритм действий:

  1. Выполняем обновление центральной базы на несколько релизов.
  2. Запускаем центральную базу в режиме «Предприятие», дожидаемся завершения всех отложенных обработчиков обновления.
  3. Выполняем выгрузку данных в периферийные узлы.
  4. В узлах принимаем изменения, обновляем конфигурацию базы данных и также дожидаемся завершения обработчиков данных.
  5. Отправляем подтверждение из узлов в центр.
  6. Повторяем цикл до достижения актуального релиза.

Важный момент: Если вы пропустите выполнение обработчиков в узлах и накатите сверху следующее обновление конфигурации, данные в новых реквизитах могут не заполниться, что приведет к ошибкам в учете остатков и цен.

Способ 2. «Отвязка» периферийных узлов (метод локального обновления)

Проанализируем ситуацию: если каналы связи слабые, а базы на точках объемные, проще обновить конфигурацию локально в каждом магазине, минуя передачу тяжелых файлов через РИБ. Для этого используется временное снятие статуса периферийного узла. Рассмотрим, как это сделать программно.

В периферийной базе (внешней обработкой или через консоль кода) необходимо выполнить команду:


// Снимаем признак подчиненности узла
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);

После выполнения этого кода база становится автономной. Теперь мы можем:

  1. Обновить центральную базу до финального релиза (можно сразу через несколько версий, используя файл конфигурации .cf).
  2. Обновить каждую периферийную базу тем же самым файлом .cf до того же релиза, что и в центре.
  3. Снова «привязать» узлы к центру. Для этого в каждой периферийной базе выполняем код:

// УзелЦентр - это ссылка на узел, который является главным (офис)
УзелЦентр = ПланыОбмена.ПоМагазинам.НайтиПоКоду("000"); // Укажите код центрального узла
ПланыОбмена.УстановитьГлавныйУзел(УзелЦентр);

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

Способ 3. Пересоздание начального образа

Если базы на точках небольшие, а настройки оборудования (ККТ, сканеры) не являются критически сложными, рассмотрим вариант пересоздания узлов. Это гарантирует отсутствие «мусора» в таблицах регистрации изменений.

  1. Обновляем центральную базу до нужного релиза.
  2. В справочнике «Магазины» или «Планы обмена» создаем новый узел (или очищаем старый).
  3. Генерируем новый начальный образ (файл .1cd).
  4. Доставляем этот файл на торговую точку и заменяем им старую базу.

Внимание: При таком подходе важно сохранить настройки подключаемого оборудования. Посмотрим на нюанс: торговое оборудование привязано к Справочнику.РабочиеМеста по идентификатору компьютера. Если имя ПК и пользователя не изменится, Розница может «подхватить» старые настройки, но чаще их приходится перенастраивать вручную.

Технические нюансы перехода с 2.2 на 2.3

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

Также проанализируем работу с ЕГАИС и Маркировкой. В новых релизах используются другие форматы обмена с УТМ. После обновления обязательно проверьте настройки интеграции. Рассмотрим типичную проблему: после обновления РМК (рабочее место кассира) может не открываться из-за старого кэша. Обязательно очистите кэш программно или вручную в папке %AppData%\1C\1Cv8.

Работа с конфигурацией поставщика

Посмотрим на техническую сторону передачи изменений. Как отметили эксперты, передача конфигурации через РИБ — это, по сути, полная замена объектов метаданных. Если вы решите обновлять базы вручную через файл .cf, убедитесь, что вы используете «Загрузку конфигурации из файла», а не «Сравнение/Объединение». Это обеспечит полную идентичность структуры конфигураций в центре и в узлах, что критически важно для функционирования РИБ.

Подведем итог: для надежного обновления Розницы 2 с 2018 года оптимальным является Способ 2 (отвязка узлов). Он позволяет избежать проблем с огромными XML-пакетами и дает возможность контролировать процесс обновления на каждом узле локально, сохраняя при этом все накопленные данные и настройки оборудования.

← На главную