Почему зависает создание начального образа РИБ на 0% и как его создать

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

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

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

Причина 1: Включенная подсистема хранения истории изменений

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

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

Проанализируем шаги для устранения проблемы:

  1. Перейдем в раздел Администрирование — Общие настройки — История изменений (или Версионирование объектов).
  2. Временно отключим опцию Хранить историю изменений.
  3. Если создание образа выполняется на рабочей базе, рекомендуется предварительно создать копию, выполнить очистку устаревших версий объектов с помощью регламентного задания или специальной обработки и уже затем отключить опцию.
  4. Повторно запустим создание начального образа через план обмена ПоМагазину.

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

Причина 2: Специфика индикатора прогресса платформы и объем данных

Выясним техническую особенность работы платформы 1С:Предприятие. Метод СоздатьНачальныйОбраз выполняется сервером как единая монолитная операция. Графический интерфейс клиента не получает от сервера промежуточных сведений о количестве обработанных таблиц. В результате окно с прогресс-баром всегда показывает 0% вплоть до момента записи последнего блока результирующего файла информационной базы.

Прежде чем принудительно снимать задачу, проверим монитор системных ресурсов на сервере:

  1. Откроем диспетчер задач или системный монитор и найдем рабочий процесс rphost (в клиент-серверном варианте) либо 1cv8c/1cv8 (в файловом режиме).
  2. Обратим внимание на счетчики чтения и записи на диск (Дисковая активность), а также нагрузку на процессор.
  3. Если процесс непрерывно выполняет операции ввода-вывода и генерирует трафик к диску, база не зависла. Она формирует образ, и прерывать ее работу нельзя.

Ручное создание узла через чистую базу и конфигурацию

Когда база сильно нагружена, содержит сотни тысяч позиций справочников (номенклатура, штрихкоды, дисконтные карты, сегменты) и штатный механизм падает по таймауту или нехватке памяти, перейдем к проверенному ручному способу развертывания узла РИБ.

Разберем по шагам создание узла вручную:

  1. В центральной базе перейдем в нужный план обмена (например, ПланыОбмена.ПоМагазину) и создадим новый подчиненный узел. Зададим ему точный код и наименование.
  2. Выгрузим файл структуры конфигурации central-базы (.cf) через меню Конфигурация — Сохранить конфигурацию в файл.
  3. Создадим новую пустую информационную базу и загрузим в нее полученный файл конфигурации.
  4. Запустим новую базу в режиме предприятия и создадим узлы плана обмена: создадим предопределенный (главный) узел с кодом центральной базы, а также узел текущей базы с тем же кодом, который был присвоен в центральном узле на шаге 1.
  5. Установим признак подчинения узла главному. Это можно сделать через вызов метода установки главного узла во внешней обработке:

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

Создание начального образа программно без интерфейса

Стандартный интерфейсный мастер БСП накладывает дополнительные проверки, фоновые ожидания и блокировки, которые часто дают сбой. Обойдем графическую оболочку и выполним создание образа напрямую средствами встроенного языка 1С:


УзелМагазина = ПланыОбмена.ПоМагазину.НайтиПоКоду("МСК01");
СтрокаПодключения = "File=""D:\RIB_Bases\Shop_MSK01"";";

ПланыОбмена.СоздатьНачальныйОбраз(УзелМагазина, СтрокаПодключения);

Также можно воспользоваться пакетным режимом запуска Конфигуратора через командную строку. Это исключает влияние тонкого клиента и графических форм:


1cv8.exe DESIGNER /IBConnectionString "Srvr=""Server1C"";Ref=""CentralBase"";" /CreateInitialImage "D:\RIB_Bases\NewShop" -NodeCode "МСК01"

Методика применения «служебного узла» для крупных сетей

Если в сети насчитывается более 50–100 магазинов, а объем нормативно-справочной информации (НСИ) превышает 500 тысяч объектов, генерация каждого нового образа штатным путем занимает часы. В таких условиях оптимально сформировать так называемый служебный узел.

Рассмотрим структуру данного подхода:

  1. В центральной базе создается служебный узел обмена, в который правилами регистрации транслируется вся общая НСИ, но не передаются товарные остатки и документы конкретных торговых точек.
  2. Один раз создается информационная база этого узла и сохраняется в виде эталонной копии.
  3. При открытии нового магазина эталонная база копируется.
  4. В копии меняется код узла на код открывающегося магазина, устанавливаются соответствующие реквизиты (организация, склад, кассы ККМ, префикс узла).
  5. В центральной базе на этот узел регистрируются и разово выгружаются только остатки и индивидуальные документы. Это сокращает ввод нового магазина в эксплуатацию до нескольких минут.

Чек-лист предварительной подготовки базы перед созданием РИБ

Перед повторным запуском процедуры выгрузки образа проконтролируем следующие системные параметры:

  1. Дисковое пространство: временные каталоги (%TEMP%) учетной записи службы usr1cv8 должны иметь запас свободного места, превышающий объем базы в 2–3 раза.
  2. Блокировка регламентных заданий: перед формированием образа заблокируем регламентные и фоновые задания через консоль администрирования или параметры информационной базы, чтобы избежать конфликтов транзакционных блокировок.
  3. Очередь регистрации: откроем обработку Регистрация изменений для обмена и убедимся, что для создаваемого узла нет зависших ошибочных записей в таблицах регистрации изменений.
  4. Разрядность платформы: при формировании тяжелых образов настоятельно рекомендуется использовать 64-разрядный клиент или выполнять операцию непосредственно на 64-битном сервере 1С:Предприятия во избежание ошибки исчерпания 32-битного адресного пространства памяти.
← На главную