Как создать новую периферийную базу 1С 7.7 из копии при большом объеме данных

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

При работе с распределенными информационными базами (УРБД) на платформе 1С:Предприятие 7.7 администраторы часто сталкиваются с проблемой производительности штатных средств. Когда объем базы данных достигает 10–20 Гб и выше, стандартная процедура «Создать начальный образ» через Конфигуратор может выполняться десятки часов или прерываться из-за нехватки ресурсов. В такой ситуации логичным выходом является создание новой периферийной базы (ПБ) из копии уже существующей «соседней» периферийной базы. Рассмотрим подробно, как правильно выполнить эту процедуру, чтобы избежать коллизий и обеспечить корректную синхронизацию с Центральной базой (ЦБ).

Зачем использовать копию вместо штатной выгрузки

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

Шаг 1. Подготовка в Центральной базе

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

  1. Запустим 1С в режиме Конфигуратор.
  2. Перейдем в меню «Администрирование» — «Распределенная ИБ» — «Управление».
  3. Создадим новый узел периферийной базы. Назовем его, например, «ПБ_НОВАЯ».
  4. Присвоим ему уникальный трехсимвольный код (идентификатор), например, P02. Этот код критически важен, так как он будет зашит во все новые объекты, создаваемые в этой базе.
  5. Сохраним изменения. Теперь в системной таблице 1SDBSET Центральной базы появилась запись о новом узле.

Шаг 2. Развертывание копии и правка таблицы 1SDBSET

Теперь возьмем физическую копию (бэкап) уже существующей периферийной базы (например, с кодом P01) и развернем ее в новый каталог. После этого нам необходимо «переубедить» эту базу в том, что она теперь является узлом P02. Для этого мы обратимся к таблице 1SDBSET. Для быстрого добавления новых каталогов в список и управления ими пригодится инструмент для альтернативного запуска и ведения списка баз 1С 7.7.

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

Важный совет: Для новой базы счетчики SENTNO и RECVNO лучше всего обнулить (установить в 0). Это позволит начать историю обмена «с чистого листа», и первая же выгрузка из ЦБ будет воспринята корректно.

Шаг 3. Идентификация системы в таблице 1SSYSTEM

Одной правки 1SDBSET недостаточно. Платформа 1С 7.7 хранит собственный идентификатор базы в таблице 1SSYSTEM в поле DBSIGN. Если значения в 1SDBSET и 1SSYSTEM не будут совпадать, система может вести себя непредсказуемо или выдавать ошибки при попытке обмена. Найдем поле DBSIGN и заменим в нем старый код на новый идентификатор P02.

Если вы используете SQL-версию 1С 7.7, операции правки будут выглядеть примерно так:


UPDATE _1SDBSET SET DBID = 'P02', SENTNO = 0, RECVNO = 0 WHERE DBID = 'P01';
UPDATE _1SSYSTEM SET DBSIGN = 'P02';

Шаг 4. Очистка очередей регистрации изменений

Поскольку мы сделали копию «живой» базы, в ней остались записи о том, какие документы были изменены и готовы к отправке в центр. Эти записи хранятся в таблице 1SUPDTS. Если их не очистить, новая база попытается отправить в ЦБ изменения, которые относятся к «базе-донору», что приведет к дублированию данных или ошибкам.

Также следует обратить внимание на таблицу 1SDWNLDS, где фиксируются подтверждения о приеме пакетов. Выясним причину необходимости очистки: нам нужно исключить любую связь с прошлой историей обмена старой базы.

Рассмотрим команды для полной очистки этих таблиц:

В случае с DBF-версией можно просто удалить (или обнулить через утилиту) файлы 1SUPDTS.DBF и 1SDWNLDS.DBF. В SQL-версии используем команду TRUNCATE TABLE:


TRUNCATE TABLE _1SUPDTS;
TRUNCATE TABLE _1SDWNLDS;

Шаг 5. Предотвращение коллизий идентификаторов (ID)

Нужно понимать, что в 1С 7.7 уникальный идентификатор любого объекта (справочника, документа) формируется как комбинация внутреннего номера и 3-символьного кода базы. Если мы просто скопировали базу и не изменили настройки, новые документы в новой базе могли бы получить ID, которые уже существуют в базе-доноре. Смена DBSIGN в 1SSYSTEM решает эту проблему: теперь все новые объекты, создаваемые в ПБ P02, будут иметь префикс P02, что гарантирует их уникальность при загрузке в Центральную базу.

Шаг 6. Первый запуск и синхронизация

После того как все правки внесены, выполним следующие действия:

  1. Запустим Центральную базу и выполним «Выгрузку данных» для нашего нового узла P02. Даже если данных там почти нет (конфигурация), это создаст файл переноса с правильными заголовками.
  2. Запустим новую периферийную базу P02.
  3. Выполним «Загрузку данных». Система должна опознать пакет и обновить структуру (если она менялась) или просто подтвердить связь.
  4. Попробуем создать и провести любой тестовый документ, затем выполним обмен в обе стороны.

Замечание из практики: Иногда после подобных манипуляций первый обмен может не сразу подхватить изменения. В этом случае, как советуют опытные специалисты, можно перепровести несколько документов в периферийной базе. Это создаст новые записи в 1SUPDTS и «подтолкнет» механизм обмена к работе.

Резюме

Метод клонирования периферийной базы — это мощный инструмент для администратора больших систем на базе 1С 7.7. Он позволяет сэкономить часы рабочего времени. Главное — помнить о трех «столпах» настройки: идентификатор в 1SDBSET, сигнатура в 1SSYSTEM и обязательная очистка таблиц регистрации 1SUPDTS и 1SDWNLDS. Соблюдая эту последовательность, мы получим полностью рабочую распределенную базу без утомительного ожидания формирования начального образа.

← На главную