В конфигурации «1С:Комплексная автоматизация 1.1» (как и в «1С:Управление производственным предприятием 1.3» или «1С:Управление торговлей 10.3») разработчиками не предусмотрен типовой механизм создания распределенной информационной базы (РИБ) с автоматическим фильтром по организации. При создании начального образа через типовой полный план обмена выгружаются данные всех юридических лиц.
Выясним причину такого ограничения. В отличие от типовых конфигураций бухгалтерского профиля (например, «1С:Бухгалтерия предприятия»), архитектура КА 1.1 построена на сквозном управленческом учете. Значительная часть регистров накопления (партионный учет, взаиморасчеты, свободные остатки на складах) либо вовсе не содержит измерения Организация, либо объединяет движения разных юрлиц в рамках сквозных процессов. Попытка прямой фильтрации без учета архитектуры ведет к нарушению ссылочной целостности и появлению объектов вида <Объект не найден>.
Разберем подробнее основные способы, позволяющие выделить данные одной организации в независимую базу.
Если требуется получить полностью готовую структуру со всеми сопутствующими настройками и справочниками, можно временно переопределить поведение типового механизма формирования начального образа. Для этого внесем изменения в подписки на события или в общий модуль, где определен обработчик события ПриОтправкеДанныхПодчиненному.
Рассмотрим по шагам логику реализации:
ПриОтправкеДанныхПодчиненному.СозданиеНачальногоОбраза принимает значение Истина. Проанализируем отправляемый элемент и при несоответствии целевой организации отменим его передачу.Посмотрим на пример кода в общем модуле:
Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента, Знач СозданиеНачальногоОбраза, Знач Получатель = Неопределено) Экспорт
Если СозданиеНачальногоОбраза Тогда
// Проверяем наличие реквизита Организация у выгружаемого объекта
Если ОбщегоНазначения.ЕстьРеквизитДокумента("Организация", ЭлементДанных.Метаданные()) Тогда
Если ЭлементДанных.Организация <> Константы.НашаВыгружаемаяОрганизация.Получить() Тогда
ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
После формирования начального образа подчиненный узел необходимо отвязать от главного, чтобы превратить его в самостоятельную базу. Для этого в созданной базе выполним код:
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
Когда объем данных по выделяемой организации невелик (организация велась непродолжительное время или содержит небольшое число документов), наиболее быстрым и безопасным решением является выгрузка в пустую базу с той же конфигурацией с помощью обработки «Выгрузка и загрузка данных XML» или правил обмена в «1С:Конвертация данных 2.1».
Разберем по шагам алгоритм переноса:
Номенклатура целиком, а справочник Контрагенты — только по ссылкам из документов, используем правила обмена (КД 2.1), где в правилах выгрузки данных для номенклатуры отключаем фильтры, а для контрагентов выставляем выгрузку исключительно по ссылкам.Для сильно кастомизированных баз со сложными регистрами проще всего пойти путем очистки копии:
После отделения организации любым из описанных способов необходимо выполнить регламентные технические процедуры:
ГраницыЗапретаИзмененияДанных, НастройкиПользователей и СоответствиеОбъектовДляОбмена, удалив привязки к старым организациям и пользователям.