Ситуация, когда на удаленной торговой точке выходит из строя жесткий диск и периферийная информационная база (ПБ) оказывается полностью уничтоженной, является критической для бизнеса. В системе 1С:Предприятие 7.7 с использованием компоненты "Управление распределенными информационными базами" (УРБД) восстановление данных возможно, однако этот процесс требует понимания внутренних механизмов регистрации изменений и структуры системных таблиц. Разберем подробно, как вернуть работоспособность торговой точки и восстановить все документы и остатки из центральной базы (ЦБ).
Самый логичный путь — заставить центральную базу "поверить", что периферийная база еще ни разу не получала данные. В этом случае конфигуратор позволит сделать начальную выгрузку. Проанализируем этот процесс по шагам.
Для начала нам необходимо изменить статус периферийной базы в системной таблице центральной базы. Все сведения об узлах распределенной базы хранятся в файле 1SDBSET.DBF (в SQL-версии — соответствующая таблица). Выполним следующие действия:
1SDBSET с помощью любого DBF-редактора или через средства 1С.DBSTATUS установим значение "N" (от англ. "New" — новая).После этой манипуляции в Конфигураторе центральной базы появится возможность выполнить выгрузку данных для данного узла, как если бы мы создавали базу впервые. Однако здесь есть важный нюанс: стандартная начальная выгрузка передает только конфигурацию и метаданные, но не накопленные за годы документы и справочники. Рассмотрим, как наполнить эту базу данными.
Чтобы данные из центральной базы попали в свежесозданную периферийную, они должны быть зарегистрированы в таблице изменений 1SUPDTS. Система УРБД работает по принципу логирования: как только объект (документ или элемент справочника) записывается, в таблицу регистрации вносится запись о том, что этот объект должен быть передан в соответствующие узлы.
Поскольку нам нужно передать данные за длительный период (например, за 2 года), простое ожидание новых документов не поможет. Проанализируем способы "принудительной" отправки данных:
Вариант А: Перезапись объектов. Это самый простой, но долгий способ. Мы можем написать обработку, которая переберет все нужные документы и справочники и просто выполнит метод Записать(). Посмотрим на пример кода для регистрации справочников:
Спр = СоздатьОбъект("Справочник.Номенклатура");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
Спр.Записать(); // Объект помечается для выгрузки в ПБ
КонецЦикла;
Вариант Б: Оптимизированная запись документов. Перепроводить документы за несколько лет — задача крайне ресурсоемкая, которая может привести к изменению итогов и "уплыванию" остатков. Чтобы этого избежать, используем возможность записи документа без перепроведения. Выясним, как это сделать правильно:
Док = СоздатьОбъект("Документ");
Док.ВыбратьДокументы(ДатаНачала, ДатаКонца);
Пока Док.ПолучитьДокумент() = 1 Цикл
// Используем параметр 0, чтобы просто записать объект без движений и проверок
Док.Записать();
КонецЦикла;
Важно помнить: при такой перезаписи в ЦБ могут измениться служебные реквизиты (например, дата последнего изменения или автор, если это прописано в модуле), поэтому перед процедурой стоит сделать резервную копию.
Если объем данных огромен, стандартная выгрузка через файл .zip может занять вечность или вовсе завершиться ошибкой из-за ограничения размера файла. В таком случае рассмотрим альтернативный "хитрый" метод:
1SDBSET. Нам нужно "поменять их местами": коду текущей базы присваиваем код периферийной, а центральной — код центральной.1SYSCFG (или через соответствующие утилиты), чтобы база осознала себя как ПБ.Этот метод позволяет получить готовую базу мгновенно, минуя процесс длительной выгрузки/загрузки. Однако он требует высокой квалификации специалиста, так как малейшая ошибка в кодах баз приведет к краху синхронизации.
Разберем основные опасности, с которыми мы можем столкнуться в процессе восстановления:
1SDWNLDS хранятся номера принятых и отправленных сообщений. При создании ПБ с нуля крайне важно убедиться, что в ЦБ счетчик для этой базы сброшен, иначе ПБ не сможет принять пакет из-за несоответствия номера сообщения.Записать() без проведения.Подводя итог, можно сказать, что восстановление периферийной базы 1С 7.7 — это процесс, требующий ювелирной работы с регистрацией изменений. Мы рекомендуем использовать сочетание метода со статусом "N" и точечной регистрации только необходимых данных через специализированные обработки (например, "Регистрация объектов для УРБД"), что позволит избежать "раздувания" базы и лишних ошибок в учете.