При администрировании крупных баз данных «1С:Предприятие 8.3» часто возникает задача оптимизации производительности или разделения учета перед началом нового отчетного периода. Один из популярных вариантов — создание распределенной информационной базы (РИБ), где в подчиненном узле должна начаться работа «с чистого листа», но при этом необходимо сохранить синхронизацию справочников и настроек с центральной базой.
Однако здесь разработчики и системные администраторы сталкиваются с серьезной технической преградой. Если просто создать пустую базу из файла конфигурации .cf и подключить ее как подчиненный узел, при первом же обмене данными система заполнится дублями предопределенных элементов, валют, классификаторов и счетов учета. Давайте подробно разберем, почему возникает эта проблема и как решить ее несколькими надежными способами.
Для того чтобы понять природу возникновения дублей, проанализируем внутреннее устройство современных конфигураций на базе БСП (Библиотеки стандартных подсистем), к которым относится и «1С:Бухгалтерия предприятия 3.0».
При первом запуске абсолютно пустой базы, созданной из файла .cf, платформа автоматически запускает процедуры первоначального заполнения. В этот момент генерируются системные классификаторы, валюты, единицы измерения, ставки НДС, виды контактной информации и элементы планов видов характеристик.
Проблема заключается в том, что эти предопределенные и служебные элементы создаются со случайными уникальными идентификаторами — GUID (UUID). Они будут гарантированно отличаться от тех GUID, которые уже существуют в вашей рабочей (центральной) базе.
Когда вы попытаетесь связать такую «чистую» базу с центральной через механизм РИБ, стандартная система обмена, ориентированная исключительно на сопоставление по GUID, не сможет сопоставить эти элементы. Платформа воспримет их как разные объекты. В результате произойдет массовое дублирование служебных данных: появятся две валюты «руб.», два предопределенных счета «20.01», дубли ставок НДС и ключевых регистров сведений. База станет полностью непригодной для ведения учета.
Рассмотрим четыре проверенных сценария, которые позволяют получить чистую подчиненную базу без риска повреждения ссылочной целостности.
Этот способ позволяет использовать штатный механизм создания начального образа, но временно исключить из него документы и движения, оставив только необходимую нормативно-справочную информацию (НСИ) с оригинальными GUID.
Разберем этот алгоритм по шагам:
ПланыОбмена.Полный или ПланыОбмена.ПоОрганизациям). Переходим на вкладку «Состав» и временно снимаем флаги авторегистрации (или полностью исключаем из состава) со всех документов, регистров накопления, регистров бухгалтерии и регистров сведений, содержащих движения. Справочники, константы, классификаторы и планы счетов обязательно оставляем в составе..cf из центральной рабочей базы и загружаем его через конфигуратор как в нашу копию, так и в созданный чистый подчиненный узел.Если структура базы слишком сложна для ручного изменения состава плана обмена в конфигураторе, мы можем пойти альтернативным путем: взять полную копию базы и программно удалить из нее все лишние данные, сохранив структуру узла.
Схема действий выглядит следующим образом:
/ResetMasterNode или выполняем следующий код во внешней обработке:
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
TRUNCATE или DELETE, если вы не уверены на 100% в структуре физических таблиц. Это может привести к появлению «битых» ссылок и фантомных записей в таблицах итогов регистров, которые потом крайне сложно вычистить средствами ТИС (Тестирование и исправление). Используйте штатные объектные методы удаления в 1С.
СсылкаНаЦентр = ПланыОбмена.Полный.НайтиПоКоду("ЦН"); // "ЦН" - код центрального узла
Если ЗначениеЗаполнено(СсылкаНаЦентр) Тогда
ПланыОбмена.УстановитьГлавныйУзел(СсылкаНаЦентр);
Сообщить("Узел успешно назначен подчиненным!");
КонецЕсли;
Для ИТ-специалистов, предпочитающих полный контроль над переносимыми объектами, отлично подойдет вариант с использованием универсальной обработки «Выгрузка и загрузка данных XML» (ее можно найти на ИТС или в составе инструментов разработчика).
Главное преимущество этой обработки — она выгружает данные в формате XML с обязательным сохранением оригинальных UUID всех объектов.
Выполним следующие шаги:
.cf центральной базы.ПланыОбмена.УстановитьГлавныйУзел(), как было описано во втором сценарии.В современных релизах «1С:Бухгалтерия предприятия 3.0» встроен продвинутый механизм обмена БСП, который позволяет решить задачу без «хакерских» манипуляций с планами обмена и кодом.
Если вам нужно просто начать вести учет с нового года без старых документов, воспользуйтесь функцией создания РИБ с фильтрацией данных:
Платформа автоматически сгенерирует базу, в которую перенесутся все необходимые справочники и классификаторы с правильными исходными GUID, но документы, созданные ранее указанной даты, в подчиненный узел не попадут. Это самый простой и безопасный метод, не требующий глубоких знаний программирования.
Выбор конкретного метода зависит от масштаба вашей информационной базы и ваших технических навыков:
.cf напрямую с рабочей базой через РИБ без предварительной подготовки справочников — исправление последствий появления дублей GUID в рабочей базе может потребовать колоссальных временных затрат.