Как выгрузить и отделить данные одной организации в 1С:Комплексная автоматизация 1.1?

Программист 1С v8.3 (Обычные формы) 1С:Комплексная автоматизация IT и автоматизация бизнеса
← На главную

В конфигурации «1С:Комплексная автоматизация 1.1» (как и в «1С:Управление производственным предприятием 1.3» или «1С:Управление торговлей 10.3») разработчиками не предусмотрен типовой механизм создания распределенной информационной базы (РИБ) с автоматическим фильтром по организации. При создании начального образа через типовой полный план обмена выгружаются данные всех юридических лиц.

Выясним причину такого ограничения. В отличие от типовых конфигураций бухгалтерского профиля (например, «1С:Бухгалтерия предприятия»), архитектура КА 1.1 построена на сквозном управленческом учете. Значительная часть регистров накопления (партионный учет, взаиморасчеты, свободные остатки на складах) либо вовсе не содержит измерения Организация, либо объединяет движения разных юрлиц в рамках сквозных процессов. Попытка прямой фильтрации без учета архитектуры ведет к нарушению ссылочной целостности и появлению объектов вида <Объект не найден>.

Разберем подробнее основные способы, позволяющие выделить данные одной организации в независимую базу.

Способ 1. Программная фильтрация данных при формировании начального образа РИБ

Если требуется получить полностью готовую структуру со всеми сопутствующими настройками и справочниками, можно временно переопределить поведение типового механизма формирования начального образа. Для этого внесем изменения в подписки на события или в общий модуль, где определен обработчик события ПриОтправкеДанныхПодчиненному.

Рассмотрим по шагам логику реализации:

  1. Откроем конфигурацию и найдем обработчик события РИБ ПриОтправкеДанныхПодчиненному.
  2. В момент создания начального образа параметр СозданиеНачальногоОбраза принимает значение Истина. Проанализируем отправляемый элемент и при несоответствии целевой организации отменим его передачу.

Посмотрим на пример кода в общем модуле:


Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента, Знач СозданиеНачальногоОбраза, Знач Получатель = Неопределено) Экспорт

    Если СозданиеНачальногоОбраза Тогда
        // Проверяем наличие реквизита Организация у выгружаемого объекта
        Если ОбщегоНазначения.ЕстьРеквизитДокумента("Организация", ЭлементДанных.Метаданные()) Тогда
            Если ЭлементДанных.Организация <> Константы.НашаВыгружаемаяОрганизация.Получить() Тогда
                ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;

КонецПроцедуры

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

ПланыОбмена.УстановитьГлавныйУзел(Неопределено);

Способ 2. Выгрузка данных через универсальные обработки (XML)

Когда объем данных по выделяемой организации невелик (организация велась непродолжительное время или содержит небольшое число документов), наиболее быстрым и безопасным решением является выгрузка в пустую базу с той же конфигурацией с помощью обработки «Выгрузка и загрузка данных XML» или правил обмена в «1С:Конвертация данных 2.1».

Разберем по шагам алгоритм переноса:

  1. Создаем пустую информационную базу на базе того же релиза конфигурации КА 1.1.
  2. Переносим базовую нормативно-справочную информацию (классификаторы, план счетов, общие настройки).
  3. Настраиваем выгрузку документов по отбору нужной организации. При переносе документов обработка автоматически подтянет связанные элементы справочников (номенклатуру, договоры, контрагентов), участвующих в операциях данной организации.
  4. Если требуется перенести справочник Номенклатура целиком, а справочник Контрагенты — только по ссылкам из документов, используем правила обмена (КД 2.1), где в правилах выгрузки данных для номенклатуры отключаем фильтры, а для контрагентов выставляем выгрузку исключительно по ссылкам.

Способ 3. Метод отсечения (очистка полной копии базы)

Для сильно кастомизированных баз со сложными регистрами проще всего пойти путем очистки копии:

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

Обязательные действия после разделения базы

После отделения организации любым из описанных способов необходимо выполнить регламентные технические процедуры:

  1. Сброс последовательностей документов: Пересчитаем или очистим границы последовательностей («Партионный учет», «Взаиморасчеты»), чтобы система не пыталась восстановить учет по удаленным или неперенесенным документам других организаций.
  2. Очистка служебных регистров: Проверим регистры сведений ГраницыЗапретаИзмененияДанных, НастройкиПользователей и СоответствиеОбъектовДляОбмена, удалив привязки к старым организациям и пользователям.
  3. Тестирование и исправление: Запустим процедуру «Тестирование и исправление информационной базы» в Конфигураторе с установленными флагами проверки логической и ссылочной целостности (в режиме очистки некорректных ссылок).
← На главную