Как восстановить периферийную базу УРБД в 1С 7.7 при выходе из строя жесткого диска?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

Выход из строя жесткого диска в удаленной торговой точке или филиале — распространенная аварийная ситуация при работе с распределенными информационными базами (УРБД) в 1С:Предприятие 7.7. Если физически восстановить данные с накопителя невозможно, возникает задача развертывания новой периферийной базы (ПБ) и наполнения ее актуальными данными из центральной базы (ЦБ).

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

Способ 1. Штатное пересоздание узла в ЦБ и принудительная миграция данных

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

Разберем по шагам весь процесс штатного восстановления:

  1. Откроем центральную базу в режиме Конфигуратор и перейдем в меню Администрирование — Распределенная ИБ — Управление конфигурацией.
  2. Удалим сбойный узел и создадим его заново с точно таким же 3-символьным кодом, который использовался ранее.
  3. Выполним пункт Администрирование — Распределенная ИБ — Выгрузить данные для создания начального образа новой периферийной базы.
  4. Развернем полученный файл выгрузки на рабочем месте в магазине.
  5. Для восстановления документов и справочников, созданных ранее в этом узле, запустим в ЦБ специальную групповую обработку перепроведения/перезаписи объектов.

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


ВыбИБ = "002"; // Код восстанавливаемой периферийной базы
Док = СоздатьОбъект("Документ.РасходнаяНакладная");
Док.ВыбратьДокументы(НачДата, КонДата);
Пока Док.ПолучитьДокумент() = 1 Цикл
    Если ИБСозданияОбъекта(Док.ТекущийДокумент()) = ВыбИБ Тогда
        Док.Записать();
    КонецЕсли;
КонецЦикла;

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

Способ 2. Повторная инициализация узла без удаления в конфигураторе

Если удалять и заново создавать узел в метаданных нежелательно, можно сбросить признак того, что начальный образ узла уже сформирован. Для этого обратимся к служебным таблицам базы данных 1С 7.7:

  1. Откроем каталог информационной базы ЦБ (для файловой версии) или подключимся к базе данных через SQL Management Studio (для версии MS SQL).
  2. Найдем таблицу со списком узлов: файл 1SDBSET.DBF или таблицу _1SDBSET.
  3. Найдем строку, соответствующую коду нашей периферийной базы, и установим в поле DBSTATUS значение 'N' (Not uploaded).
  4. Запустим конфигуратор центральной базы: пункт меню «Выгрузить данные» для данного узла снова станет активным, как для новой базы.

Способ 3. Клонирование Центральной Базы с модификацией системных таблиц (быстрый способ)

Штатная выгрузка начального образа через конфигуратор на крупных базах данных часто упирается в ограничение встроенного архиватора 1С 7.7 (лимит размера zip-файла не более 2 ГБ) либо занимает недопустимо много времени. В таких случаях гораздо эффективнее превратить полную копию центральной базы в периферийную прямым редактированием служебных таблиц.

Разберем по шагам создание ПБ из копии ЦБ:

  1. Создадим полную копию центральной информационной базы на сервере или локальном диске.
  2. В таблице 1SSYSTEM (или _1SSYSTEM в MS SQL) изменим поле DBSIGN, указав в нем 3-символьный код восстанавливаемой периферийной базы (например, '002').
  3. В таблице 1SDBSET (или _1SDBSET):
    1. Для записи центральной базы установим статус DBSTATUS = 'P' (главная база).
    2. Для записи текущей периферийной базы установим статус DBSTATUS = 'M' (локальная база).
    3. Удалим строки всех остальных периферийных узлов сети, оставив только ЦБ и локальную ПБ.
  4. Очистим таблицы регистрации изменений 1SUPDTS (_1SUPDTS) и 1SDWNLDS (_1SDWNLDS). Если не очистить эти таблицы, база при первом сеансе связи попытается выгрузить в центр избыточный объем накопленных изменений.

Ограничения и действия после запуска базы

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

  1. Непереданные данные: любые локальные документы и справочники, созданные в магазине после последнего успешного сеанса обмена до поломки диска, а также данные с миграцией «Только в этой ИБ», восстановить из ЦБ невозможно. Их придется заводить в систему повторно вручную по первичным бумажным документам.
  2. Префиксы и нумерация: после запуска базы необходимо проверить соответствие префиксов номеров документов коду узла, чтобы исключить дублирование номеров при последующих сеансах синхронизации.
  3. Счетчики сообщений обмена: при возникновении ошибки несоответствия номеров пакетов («Номер принятого сообщения меньше ожидаемого») необходимо скорректировать номера принятых и отправленных сообщений в конфигураторе или таблице 1SDBSET, синхронизировав значения между ЦБ и ПБ.
← На главную