Как восстановить центральную базу 1С из периферийного узла РИБ

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

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

Анализ ситуации и подготовка

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

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

Шаг 1. Программное отключение связи с главным узлом

Любая периферийная база «знает», что она подчинена центральной. Пока эта связь существует, многие административные действия в базе ограничены. Нам необходимо разорвать эту связь, чтобы база считала себя автономной. Для этого воспользуемся встроенным механизмом платформы 1С.

Запустим копию базы в режиме «1С:Предприятие» и создадим внешнюю обработку (или воспользуемся консолью кода). Нам нужно выполнить метод УстановитьГлавныйУзел, передав в него пустое значение (Неопределено). Разберем пример кода:


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

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

Шаг 2. Корректировка идентичности узлов

Теперь наша база автономна, но она все еще считает себя узлом «А». Для полноценного восстановления центральной базы нам нужно выполнить «рокировку» кодов в плане обмена. Проанализируем ситуацию в окне Планы обмена:

  1. Найдем предопределенный элемент ЭтотУзел. Раньше у него был код «А». Нам нужно изменить его на код, который был у центральной базы (например, «Ц»).
  2. Найдем в списке узел, который раньше соответствовал центральной базе (теперь он нам не нужен в таком виде) и переименуем/перекодируем его, чтобы он стал узлом «А» (той самой базой, из которой мы выросли).
  3. Убедимся, что для всех остальных периферийных узлов (база «Б», «В» и т.д.) коды соответствуют тем, что были в старой центральной базе.

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

Шаг 3. Восстановление связей и настроек обмена

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

  1. Перейдем в раздел Администрирование — Синхронизация данных.
  2. Если старые настройки обмена выдают ошибки или не открываются, их следует удалить и создать заново для каждого периферийного узла.
  3. Укажите параметры транспорта (каталог, FTP или электронная почта), которые использовались ранее.

Рассмотрим ситуацию с базой «Б». Она все еще «думает», что ее центром является старая, удаленная база. Чтобы она начала обмениваться с нашей новой «Ц», в базе «Б» также нужно обновить настройки синхронизации, чтобы ее идентификатор GUID центрального узла совпал с новым GUID нашей восстановленной базы.

Шаг 4. Сброс номеров сообщений и регистрация изменений

Одной из главных проблем при восстановлении РИБ является рассинхронизация номеров сообщений. Система хранит счетчики НомерПринятого и НомерОтправленного. Если они не совпадут, обмен заблокируется.

Проанализируем программный способ обнуления счетчиков в новой центральной базе для узла «Б»:


УзелОбъекта = ПланыОбмена.ПолнотекстовыйПоиск.НайтиПоКоду("Б").ПолучитьОбъект();
УзелОбъекта.НомерОтправленного = 0;
УзелОбъекта.НомерПринятого = 0;
УзелОбъекта.Записать();

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

Шаг 5. Принудительная регистрация данных

Чтобы быть уверенными, что все данные актуализированы, рекомендуется выполнить регистрацию изменений. В новой центральной базе выделите узел «Б», нажмите правой кнопкой мыши и выберите пункт Зарегистрировать все объекты (или воспользуйтесь обработкой «Регистрация изменений для обмена»). Это заставит систему при следующем обмене сравнить все данные и переслать в периферийную базу то, чего там может не хватать, или обновить существующие записи.

Что делать, если архивы .7z повреждены?

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

Резюме: Восстановление из РИБ — это трудоемкий, но надежный процесс. Главное — четко соблюдать последовательность: копирование -> отвязка от центра -> переименование узлов -> обнуление счетчиков -> перерегистрация данных. Это позволит вернуть систему в рабочее состояние даже при полной потере серверной инфраструктуры.

← На главную