Как сократить время обновления периферийных баз в 1С:Розница при использовании РИБ?

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

При работе с распределенными информационными базами (РИБ) системные администраторы часто сталкиваются с проблемой длительного простоя узлов во время обновления конфигурации. Ситуация, когда на обновление 15 точек уходит до 10 часов работы, является критической для бизнеса. В рамках данной статьи мы подробно разберем, как оптимизировать этот процесс, почему файлы обмена могут неоправданно раздуваться до гигабайтных размеров и какие технические приемы помогут сократить время регламентных работ в несколько раз.

Анализируем причину медленного обновления: объем выгрузки

Первым делом проанализируем ситуацию, описанную в теме: при обновлении типовой конфигурации 1С:Розница выгрузки в периферийные базы достигают 600–1000 Мб. Это главный "пожиратель" времени. На канале со скоростью 2 Мбит/сек передача такого объема данных занимает около 40 минут на один узел. Если узлов 15 и они обновляются последовательно, только на передачу данных уйдет 10 часов.

Важно понимать, что в норме механизм РИБ должен передавать не всю конфигурацию целиком, а только изменения (дельту). Если размер файла выгрузки (Message_XX_YY.xml) сопоставим с размером файла конфигурации (.cf), это сигнализирует о том, что в плане обмена "заклинило" регистрацию изменений конфигурации, и система каждый раз пытается отправить базу целиком.

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

Принудительная очистка регистрации изменений конфигурации

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

Для этого в центральной базе можно воспользоваться обработкой "Регистрация изменений для обмена данными" или выполнить следующий код:


ПланОбменаСсылка = ПланыОбмена.ПоМагазинам.НайтиПоКоду("КодВашегоУзла");
ПланыОбмена.УдалитьРегистрациюИзменений(ПланОбменаСсылка, Метаданные.Конфигурация);

После выполнения этой команды система "забудет", что она должна была передать структуру базы, и в следующий файл обмена попадут только измененные данные (документы, справочники), что сократит размер файла с 700 Мб до 1–5 Мб. Это позволит мгновенно передать изменения по медленным каналам связи.

Переход от последовательного к параллельному обновлению

Рассмотрим стратегию "безопасного" обновления. Часто администраторы обновляют узлы по очереди, боясь, что ошибка на одной точке потребует отката всей системы. Однако, как показывает практика, время отката одной базы не сильно отличается от времени отката десяти баз, если процесс автоматизирован.

Мы рекомендуем изменить алгоритм на следующий:

  1. Создаем бэкап центральной базы и обновляем её.
  2. Выгружаем обновления для всех периферийных баз одновременно.
  3. Запускаем процесс приема и обновления на всех точках параллельно.

Даже если 1 или 2 точки из 15 упадут с ошибкой из-за специфических данных, остальные 13 будут обновлены вовремя. Проблемные точки можно будет восстановить из бэкапа и разбираться с ними индивидуально, не задерживая работу всей сети магазинов.

Оптимизация транспортного уровня: FTP vs HTTP

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

  1. Веб-сервисы (HTTP): Публикация центральной базы на веб-сервере (IIS или Apache) позволяет 1С использовать нативный протокол обмена. Это стабильнее и зачастую быстрее за счет лучшей обработки заголовков и возможности сжатия трафика средствами веб-сервера.
  2. Сторонние утилиты синхронизации: Использование таких инструментов, как Syncthing или Resilio Sync. Эти программы работают по принципу P2P и умеют докачивать файлы при обрывах. В этом случае 1С выгружает файл в локальную папку, утилита максимально быстро раздает его на все 15 точек (используя ширину каналов всех узлов), и периферийная 1С забирает файл уже из локальной папки.

Обновление через файл конфигурации (.cf) вручную

Если канал связи крайне слабый и передача через РИБ постоянно сбоит, разберем метод обновления "через файл". Этот метод позволяет минимизировать риск повреждения базы при передаче больших пакетов.

Алгоритм действий:

  1. Выгружаем файл 1cv8.cf из центральной базы.
  2. Передаем его на периферийную точку любым доступным способом (например, через облачное хранилище с поддержкой докачки).
  3. На периферийной точке заходим в Конфигуратор и выбираем Конфигурация -> Загрузить конфигурацию из файла.
  4. После обновления конфигурации базы данных выполняем обычный обмен данными, который теперь будет весить считанные килобайты, так как структура уже идентична.

Для автоматизации этого процесса на стороне периферии можно использовать параметры командной строки 1С:


"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /F "ПутьКБазе" /LoadCfg "ПутьКФайлу.cf" /UpdateDBCfg

Использование отложенного обновления данных

В современных версиях 1С:Розница, построенных на базе БСП (Библиотеки стандартных подсистем), основное время занимает не просто обновление структуры, а выполнение обработчиков обновления данных (пересчет регистров, заполнение новых реквизитов).

Разберем, как ускорить этот этап. В настройках программы можно включить "Отложенное выполнение обработчиков обновления". Это позволит магазину открыться и начать продажи сразу после обновления структуры базы, а тяжелые расчеты будут выполняться в фоновом режиме, не блокируя работу пользователей. Для настройки перейдите в раздел Администрирование -> Обслуживание -> Обновление программы.

Техническое обслуживание и исключения антивируса

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

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

← На главную