Почему не переносятся группы справочника «Банки» при обмене через Enterprise Data и как это исправить?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием
← На главную

При настройке типовой синхронизации данных между 1С:Бухгалтерия предприятия 3.0 и 1С:ERP Управление предприятием 2.4 через механизм Enterprise Data (ED) специалисты часто сталкиваются с тем, что элементы справочника Банки (в ERP — КлассификаторБанков) переносятся без сохранения иерархии. Группы, созданные пользователем в исходной базе, попросту игнорируются. В этой статье мы подробно разберем, почему так происходит, и какие шаги необходимо предпринять для решения этой задачи.

Анализируем причину: почему группы игнорируются?

Для начала выясним причину такого поведения системы. Механизм Enterprise Data — это формат обмена, основанный на XDTO, который ориентирован на передачу бизнес-сущностей в стандартизированном виде. В отличие от старых правил обмена (КД 2.1), где объекты часто «зеркалировались» один в один, ED накладывает свои ограничения.

Проанализируем ситуацию с технической точки зрения:

  1. Особенности XDTO-пакета: В стандартных версиях формата EnterpriseData объект Bank часто описывается как плоская структура. В схеме могут отсутствовать реквизиты Parent (Родитель) или IsFolder (ЭтоГруппа). Если формат не предусматривает иерархию для конкретного типа объекта, то данные о группах просто не попадут в XML-файл сообщения обмена.
  2. Логика «Менеджера обмена»: Даже если схема позволяет передать группу, встроенный в конфигурацию программный код (модуль МенеджерОбменаЧерезУниверсальныйФормат) может содержать жесткую фильтрацию. В процедурах выгрузки для справочников-классификаторов часто прописывается условие, которое прерывает обработку, если объект является группой. Это делается для того, чтобы не засорять целевую базу пользовательской иерархией, которая может конфликтовать с системной.
  3. Правила регистрации объектов (ПРО): Чтобы объект попал в выгрузку, он должен быть зарегистрирован на узле плана обмена. В типовых правилах регистрации для справочника Банки часто стоит отбор по реквизиту ЭтоГруппа = Ложь. Таким образом, папки даже не попадают в очередь на отправку.

Разберем архитектурное различие справочников

Важно понимать, что в БП 3.0 справочник называется Банки, а в ERP 2.4 — КлассификаторБанков. В ERP этот справочник является системным. Группы в нем часто формируются автоматически при загрузке данных из официального классификатора (РБК или серверов 1С) по региональному признаку (например, на основе БИК).

Если вы создали в БП 3.0 свои папки (например, «Наши основные банки», «Закрытые филиалы»), то для ERP эта информация считается избыточной. Поэтому типовой обмен настроен так, чтобы передавать только конечные элементы (банки), которые затем в ERP «раскладываются» по системным папкам или остаются в корне.

Решение 1: Использование стандартного функционала (Рекомендуемое)

Прежде чем приступать к программированию, рассмотрим самый правильный с точки зрения методологии 1С путь. Вместо того чтобы пытаться перенести иерархию из одной базы в другую, следует выполнить обновление классификатора непосредственно в целевой базе.

Посмотрим на последовательность действий в ERP 2.4:

  1. Перейдем в раздел НСИ и администрирование.
  2. Выберем пункт Администрирование — Поддержка и обслуживание.
  3. Найдем подраздел Другие классификаторы и нажмем Загрузить классификатор банков РФ.

После этого система сама создаст актуальную иерархию согласно данным Центрального Банка. Все банки, перенесенные из БП через синхронизацию, автоматически сопоставятся по БИК и «встанут» в нужные системные группы.

Решение 2: Доработка правил регистрации через расширение

Если вам критично перенести именно пользовательские группы, первым делом нужно заставить систему регистрировать изменения для папок. Рассмотрим, как это сделать без изменения основной конфигурации, используя механизм расширений.

Нам необходимо переопределить процедуру в модуле управления обменом данными. Проанализируем пример кода, который можно добавить в расширение для регистрации групп:


&После("ПриРегистрацииОбъекта")
Процедура Имя_ПриРегистрацииОбъекта(Объект, ПараметрыРегистрации, Отказ)
    Если ТипЗнч(Объект) = Тип("СправочникСсылка.Банки") Тогда
        Если Объект.ЭтоГруппа Тогда
            // Принудительно регистрируем группу, если типовые правила её игнорируют
            ПараметрыРегистрации.Событие = "Запись";
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Обратите внимание: простая регистрация объекта не гарантирует его выгрузку. Вы увидите группу в обработке Регистрация изменений для обмена, но менеджер обмена может все еще «отбраковывать» её при формировании XML.

Решение 3: Модификация модуля менеджера обмена

Для того чтобы группы физически попали в файл обмена, необходимо вмешаться в работу Менеджера обмена через универсальный формат. Это общий модуль, в котором описаны правила сопоставления объектов 1С и объектов XDTO.

Разберем по шагам, что нужно проверить:

  1. Найдем процедуру, отвечающую за выгрузку справочника Банки (обычно она называется ПакетXDTO_Выгрузка_Справочник_Банки_...).
  2. Проанализируем наличие условия Если Данные.ЭтоГруппа Тогда Возврат;. Если оно есть, его нужно отключить в расширении.
  3. Проверим наличие поля Родитель в текущей версии формата ED, используемой в вашей синхронизации. Если в схеме XDTO (пакет EnterpriseData_1_X_X) для типа Bank нет реквизита Parent, то передать иерархию штатными средствами ED невозможно. В этом случае потребуется создавать собственную версию формата, что является трудоемкой задачей.

Риски и последствия ручного переноса групп

Выясним, с какими проблемами вы можете столкнуться, если все же решите переносить группы принудительно:

Подведем итоги

Проанализировав ситуацию, мы пришли к выводу, что отсутствие переноса групп справочника Банки — это не ошибка, а особенность типового решения, направленная на поддержание чистоты нормативно-справочной информации.

Наилучший алгоритм действий:

  1. Настроить типовой обмен Enterprise Data для переноса элементов (самих банков и их реквизитов).
  2. В целевой базе (ERP) запустить стандартную обработку Загрузка классификатора банков.
  3. Позволить системе самостоятельно выстроить иерархию на основе актуальных данных банковского сектора.

Если же бизнес-задача требует передачи специфических папок, которые не коррелируют с официальным классификатором, используйте расширение для корректировки Правил регистрации объектов и Менеджера обмена, предварительно убедившись, что версия формата ED в ваших базах поддерживает иерархию для данного объекта.

← На главную