Как правильно выполнить свёртку РИБ в 1С:Розница 2.3 и нужно ли отвязывать узел?

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

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

В чём заключается проблема свёртки в распределённой базе

Проанализируем механику работы типового плана обмена. В процессе свёртки информационная база создаёт документы ввода остатков, а сотни тысяч исторических документов помечаются на удаление либо физически удаляются из базы. Для каждого изменённого или помеченного на удаление объекта система автоматически создаёт запись в таблицах регистрации изменений плана обмена (_1SChngR).

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

  1. Сериализатор XML платформы 1С завершает работу аварийно с ошибкой Недостаточно памяти (Out of Memory), особенно на 32-битных клиентах или серверах с ограниченными ресурсами.
  2. Периферийные базы на торговых точках часто работают в файловом режиме, где размер внутренней таблицы базы ограничен 4 ГБ. Попытка загрузить огромный пакет приводит к полному зависанию базы или повреждению файла базы данных.
  3. Длительные транзакции блокируют базу и вызывают таймауты соединений.

Подготовительный этап: специфика конфигурации 1С:Розница 2.3

Перед началом любых манипуляций со свёрткой обязательно выполним предварительные операции, специфичные для розничной торговли:

  1. Архивация чеков ККМ. Запустим штатную процедуру архивации чеков за закрытые кассовые смены. В результате отдельные чеки сворачиваются в сводные документы ОтчетОРозничныхПродажах, что сразу освобождает существенный объём дискового пространства и облегчает последующую обработку.
  2. Проверка накопительных программ и бонусов. Типовые документы ввода остатков могут некорректно сформировать остатки по бонусным баллам и порогам накопительных скидок. Зафиксируем текущие остатки баллов покупателей, чтобы проверить их после свёртки.
  3. Контроль подарочных сертификатов. Убедимся, что проданные, но ещё не отоваренные сертификаты сохранили статус активных и доступных к оплате.
  4. Синхронизация и создание резервных копий. Выполним полный взаимный обмен между главным узлом и всеми периферийными точками до состояния, когда в очередях обмена нет неотправленных и непринятых пакетов, после чего снимем полные копии всех баз данных.

Способ 1. Свёртка в центральной базе с ручной очисткой регистрации изменений

Рассмотрим сценарий, при котором периферийный узел не отвязывается, а пересоздание начального образа не требуется. Это позволяет сохранить рабочие места, параметры торгового оборудования и настройки пользователей на торговой точке.

Разберём пошаговый алгоритм:

  1. Выполняем штатную свёртку информационной базы только в главном (центральном) узле.
  2. Важно: до запуска процедуры синхронизации открываем обработку Регистрация изменений для обмена данными.
  3. Находим узел периферийной базы и полностью отменяем регистрацию изменений по удалённым и помеченным на удаление документам прошлых периодов, а также по регистрам накопления, движения которых были свернуты.
  4. Оставляем на узле только регистрацию новых документов ввода остатков и изменённых элементов справочников.
  5. В периферийном узле аналогичные исторические документы удаляем локально с помощью групповой обработки удаления данных, чтобы не перегружать канал связи выгрузкой сотен тысяч удалений через XML.
  6. Запускаем штатный обмен — файл синхронизации получится компактным и успешно загрузится на кассе без переполнения памяти.

Способ 2. Временное отсоединение узла от РИБ

Если объём данных критически велик, надёжнее временно разорвать связь между базами, выполнить свёртку параллельно и восстановить связь без пересоздания базы и повторного ввода оборудования.

Разберём реализацию данного подхода по шагам:

  1. Дожидаемся полного завершения обменов и создаём резервные копии.
  2. В периферийной базе программно снимаем признак подчинения главному узлу. Для этого выполним следующий код: ПланыОбмена.УстановитьГлавныйУзел(Неопределено); База становится автономной. Все локальные настройки: справочник РабочиеМеста, ПодключаемоеОборудование, авторизация кассиров и системные параметры торговой точки остаются в сохранности.
  3. Проводим процедуру свёртки параллельно в центральной и отвязанной периферийной базах на одну и ту же дату среза.
  4. После завершения свёртки и контроля остатков возвращаем главному узлу статус центрального. Для этого программно укажем ссылку на узел:
    
    УзелКорень = ПланыОбмена.ПолнотекстовыйПоиск.НайтиПоКоду("ЦУ"); // Указываем имя или код главного узла
    ПланыОбмена.УстановитьГлавныйУзел(УзелКорень);
    
  5. С помощью обработки регистрации изменений выравниваем номера отправленных и принятых сообщений в обеих базах, чтобы разорванный обмен продолжился штатно без требования инициализации начального образа.

Способ 3. Пересоздание узла с переносом настроек оборудования

Создание чистого начального образа — наиболее надёжный способ получить максимально компактную базу на кассе, однако администраторы часто избегают его из-за потери настроек торгового оборудования, сканеров, фискальных регистраторов и авторизации пользователей.

Эту проблему можно решить штатной выгрузкой настроек. Разберём порядок действий:

  1. В старой периферийной базе с помощью универсальной обработки Выгрузка и загрузка данных XML выгружаем служебные справочники: РабочиеМеста, ПодключаемоеОборудование, а также привязанных к кассе локальных пользователей.
  2. В центральной базе выполняем свёртку и формируем новый начальный образ для кассового узла.
  3. Разворачиваем созданный образ на кассе.
  4. С помощью той же обработки загружаем ранее выгруженный XML-файл с оборудованием.
  5. Проверяем соответствие имени локального компьютера и сетевого имени рабочего места кассира. Оборудование и кассы ККМ сразу переходят в рабочее состояние без ручной перенастройки драйверов и портов.
← На главную