Работа с распределенными информационными базами (УРБД) в версии 1С 7.7 всегда требовала от специалиста не только глубокого знания встроенного языка, но и понимания структуры хранения данных на уровне файловой системы или SQL-сервера. Одной из наиболее трудоемких задач является создание «дочерней» (периферийной) базы, особенно когда центральная база (ЦБ) имеет внушительный объем, накопленный за многие годы. Рассмотрим основные подходы к решению этой задачи, проанализируем штатные механизмы и разберем альтернативные методы, позволяющие значительно ускорить процесс.
Прежде чем приступать к первой выгрузке, мы должны четко определить, какие данные должны попасть в периферийную базу. В 1С 7.7 управление составом данных осуществляется через правила миграции, которые настраиваются в Конфигураторе. Разберем, как это работает по шагам.
Для каждого объекта метаданных (справочники, документы, регистры) в свойствах можно установить один из трех режимов миграции:
Валюты или ЕдиницыИзмерения).Если нам необходимо более тонкое управление (например, выгрузка документов только по конкретному складу или подразделению), штатных средств 1С 7.7 может быть недостаточно. В этом случае программисты часто прибегают к использованию реквизита «Место создания» или программно перехватывают запись объекта. Мы можем использовать системную таблицу 1CDIRECT для ручного управления регистрацией изменений, однако этот путь требует ювелирной точности.
Как отмечают опытные специалисты, штатная процедура создания начального образа через Конфигуратор на больших объемах данных работает крайне медленно и нестабильно. Любой обрыв сетевого соединения или сбой дисковой подсистемы заставляет начинать процесс с нуля. Поэтому мы часто используем метод клонирования. Рассмотрим этот алгоритм подробнее.
Суть метода заключается в создании полной физической копии центральной базы и последующей её «трансформации» в периферийную. Чтобы копия «осознала», что она больше не центр, а подчиненный узел, необходимо выполнить следующие действия:
1CSYSTEM.DBF. В нем содержится поле DBID, которое определяет код текущего узла. Мы должны заменить код центральной базы на код создаваемой периферийной базы. В SQL-версии аналогичная операция проводится в соответствующей системной таблице через Query Analyzer.1CEVENTS).Проанализируем ситуацию, когда база огромна, но филиалу для работы требуются только актуальные остатки. В этом случае идеальным решением будет предварительная свертка. Мы создаем копию центральной базы и выполняем в ней процедуру свертки (удаление старых документов с формированием входящих остатков на определенную дату).
Важные шаги при свертке:
Этот подход позволяет филиалу получить легкую и быструю базу, сохранив при этом целостность ссылок на справочники и актуальные бухгалтерские или складские итоги.
При использовании метода клонирования крайне важно помнить о механизме генерации ID в 1С 7.7. Каждый узел в УРБД имеет свой уникальный трехсимвольный префикс. Рассмотрим пример:
// В центральной базе объекты создаются с префиксом '001'
// В периферийной базе объекты должны создаваться с префиксом '002'
Если мы просто скопируем базу, в системных настройках может остаться префикс центра. Это приведет к конфликту идентификаторов (дублированию), когда два разных документа в центре и филиале получат один и тот же внутренний ID. Чтобы этого избежать, после подмены DBID необходимо убедиться, что Конфигуратор корректно отображает код узла в настройках распределенной базы.
Для систем, работающих на MS SQL Server, мы можем использовать механизмы СУБД для максимального ускорения процесса. Вместо долгого копирования файлов через проводник, мы выполняем Backup центральной базы и Restore под новым именем. Далее с помощью SQL-скриптов мы очищаем очереди обмена:
-- Пример логики очистки таблиц регистрации (упрощенно)
TRUNCATE TABLE _1CEVENTS;
UPDATE _1CSYSTEM SET DBID = 'P01'; -- Где P01 - код периферии
Такой подход занимает минуты даже на базах объемом в сотни гигабайт. Мы исключаем человеческий фактор и ошибки файловой системы, которые часто возникают при штатной выгрузке 1С.
Подведем итог нашему анализу. Выбор метода зависит от размера базы и стоящих перед вами задач:
1CSYSTEM.DBF и очисткой таблиц регистрации.Помните, что перед любыми манипуляциями с системными файлами и таблицами БД необходимо сделать полную резервную копию данных. Правильный выбор стратегии начальной выгрузки сэкономит вам часы, а иногда и дни работы по настройке распределенной системы.