При работе с распределенными информационными базами (УРБД) на платформе 1С:Предприятие 7.7 администраторы часто сталкиваются с проблемой производительности штатных средств. Когда объем базы данных достигает 10–20 Гб и выше, стандартная процедура «Создать начальный образ» через Конфигуратор может выполняться десятки часов или прерываться из-за нехватки ресурсов. В такой ситуации логичным выходом является создание новой периферийной базы (ПБ) из копии уже существующей «соседней» периферийной базы. Рассмотрим подробно, как правильно выполнить эту процедуру, чтобы избежать коллизий и обеспечить корректную синхронизацию с Центральной базой (ЦБ).
Проанализируем ситуацию: штатный механизм 1С 7.7 при создании начального образа выполняет полную выгрузку данных в файл .zip или .dat, что требует огромного количества временного дискового пространства и сильно нагружает процессор. Использование уже развернутой копии работающей ПБ позволяет пропустить этап долгой загрузки данных, однако требует глубокого понимания структуры системных таблиц, отвечающих за идентификацию узлов распределенной сети.
Прежде чем приступать к манипуляциям с файлами данных, мы должны подготовить «место» для новой базы в основной системе. Разберем последовательность действий в Центральной базе:
P02. Этот код критически важен, так как он будет зашит во все новые объекты, создаваемые в этой базе.1SDBSET Центральной базы появилась запись о новом узле.Теперь возьмем физическую копию (бэкап) уже существующей периферийной базы (например, с кодом P01) и развернем ее в новый каталог. После этого нам необходимо «переубедить» эту базу в том, что она теперь является узлом P02. Для этого мы обратимся к таблице 1SDBSET. Для быстрого добавления новых каталогов в список и управления ими пригодится инструмент для альтернативного запуска и ведения списка баз 1С 7.7.
В этой таблице хранятся настройки всех узлов, о которых знает данная база. В периферийной базе здесь обычно всего две строки: сама эта база и Центральная база. Проанализируем поля, которые нам нужно изменить:
DBID — здесь указан трехсимвольный идентификатор базы. Нам нужно заменить старый код (P01) на новый код, который мы создали в ЦБ (P02).ISPRPH — флаг периферийной базы. Для ПБ он должен быть равен 1.SENTNO — номер последнего отправленного сообщения.RECVNO — номер последнего принятого сообщения.Важный совет: Для новой базы счетчики SENTNO и RECVNO лучше всего обнулить (установить в 0). Это позволит начать историю обмена «с чистого листа», и первая же выгрузка из ЦБ будет воспринята корректно.
Одной правки 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';
Поскольку мы сделали копию «живой» базы, в ней остались записи о том, какие документы были изменены и готовы к отправке в центр. Эти записи хранятся в таблице 1SUPDTS. Если их не очистить, новая база попытается отправить в ЦБ изменения, которые относятся к «базе-донору», что приведет к дублированию данных или ошибкам.
Также следует обратить внимание на таблицу 1SDWNLDS, где фиксируются подтверждения о приеме пакетов. Выясним причину необходимости очистки: нам нужно исключить любую связь с прошлой историей обмена старой базы.
Рассмотрим команды для полной очистки этих таблиц:
1SUPDTS (Update Statistics).1SDWNLDS (Downloads).В случае с DBF-версией можно просто удалить (или обнулить через утилиту) файлы 1SUPDTS.DBF и 1SDWNLDS.DBF. В SQL-версии используем команду TRUNCATE TABLE:
TRUNCATE TABLE _1SUPDTS;
TRUNCATE TABLE _1SDWNLDS;
Нужно понимать, что в 1С 7.7 уникальный идентификатор любого объекта (справочника, документа) формируется как комбинация внутреннего номера и 3-символьного кода базы. Если мы просто скопировали базу и не изменили настройки, новые документы в новой базе могли бы получить ID, которые уже существуют в базе-доноре. Смена DBSIGN в 1SSYSTEM решает эту проблему: теперь все новые объекты, создаваемые в ПБ P02, будут иметь префикс P02, что гарантирует их уникальность при загрузке в Центральную базу.
После того как все правки внесены, выполним следующие действия:
P02. Даже если данных там почти нет (конфигурация), это создаст файл переноса с правильными заголовками.P02.Замечание из практики: Иногда после подобных манипуляций первый обмен может не сразу подхватить изменения. В этом случае, как советуют опытные специалисты, можно перепровести несколько документов в периферийной базе. Это создаст новые записи в 1SUPDTS и «подтолкнет» механизм обмена к работе.
Метод клонирования периферийной базы — это мощный инструмент для администратора больших систем на базе 1С 7.7. Он позволяет сэкономить часы рабочего времени. Главное — помнить о трех «столпах» настройки: идентификатор в 1SDBSET, сигнатура в 1SSYSTEM и обязательная очистка таблиц регистрации 1SUPDTS и 1SDWNLDS. Соблюдая эту последовательность, мы получим полностью рабочую распределенную базу без утомительного ожидания формирования начального образа.