Организация обмена с базой филиала (розничного магазина) в торговой сети через XML (универсальный обмен)
В статье по шагам рассматривается создание обмена между центральной базой и базами филиалов на базе конфигурации УТ 11. Для решения поставленной задачи было решено не использовать РИБ, т.к. требуется односторонний обмен ограниченным набором данных, к тому же по определенным условиям. Обмен реализован на основе типовой синхронизации на основе универсального обмена в формате EnterpriseData.
Данная публикация может быть полезна внедренцам, которые работают с торговыми сетями, в том числе по модели франчайзинга.
- Описание
- Подробнее
Описание
Исходная задача
Возникла необходимость настроить обмен между базами 1С центрального компании и торговых филиалов. РИБ не подошел, из-за чувствительности к изменениям конфигурации, особенно к динамическим обновлениям. А также из-за того, что требуется обмен по определенным правилам: вся информация должна идти в одну сторону — из центра в филиал. Т.е. если кто-то изменит в базе филиала справочник номенклатуры случайно, это не должно попадать в центральную базу.
Из центральной базы в филиал выгружаются:
- каталог товаров,
- цены только по некоторым видам цен,
- заказы из интернет-магазина.
В центральной базе и в филиале торговля ведется от разных юр. лиц, управление филиалом осуществляется независимо.
Клиентская база в центре и в филиале ведется независимо, общими являются только те клиенты, которые прошли через интернет-магазин. Т.е. клиенты центральной базы не должны попадать в филиал, а также клиенты филиала не должны попадать в центральную базу. Но часть клиентов, проходящих через интернет-магазин, должна проходить через центральную базу. Проблема возникает, если клиент зарегистрировался в базе филиала, а затем решил что-то заказать через интернет-магазин. В этом случае при выгрузке из центра в филиал он не должен задублироваться, а должен подцепиться существующий клиент.
На основе этих требований было решено попробовать обмен через формат EnterpriseData.
Краткая справка по обмену в формате EnterpriseData
- Список объектов (справочники, документы и т.д.) к выгрузке ведется с помощью плана обмена. Создание плана обмена
- Автоматическая регистрация объектов в плане обмена отключается, регистрация производится в подписках на события записи в соответствии с логикой, заложенной программистом (следующий пункт). За эту функциональность отвечает модуль ОбменДаннымиСобытия.
- В план обмена добавляется макет в виде XML-файла с так называемыми правилами регистрации, которые определяют логику выгрузки и фильтрации объектов при выгрузке на узел. К сожалению, для всех узлов плана обмена используются одни и те же правила регистрации, даже их грузить из внешнего файла (такая возможность есть). Поэтому нельзя реализовать разную логику регистрации объектов для обмена с филиалом и Бухгалтерией, именно поэтому мы вынуждены создавать отдельный план обмена. Создание правил регистрации
- Выгрузка осуществляется типовым модулем ОбменДаннымиXDTOСервер, который формирует XML-файлик выгрузки. Для формирования файлика нужно иметь:
- Правила конвертации в виде программного модуля специальной структуры. Например, типовой модуль МенеджерОбменаЧерезУниверсальныйФормат (лучше туда не смотреть, там больше 50000 строк). Создание правил конвертации
- XTDO-пакет. Создание таких пакетов — это вообще что-то очень сложное, и нас сейчас не нужно, мы будем пользоваться типовым пакетом EnterpriseData_1_3_8
- Полученный XML-файлик превращается в данные в базе-приемнике с помощью этих же модулей.
- Настройки синхронизации хранятся в регистрах. Настройка синхронизации
Полный код описанных доработок можно скачать тут.
Модуль менеджера обмена — это модуль конфигурации 1С, который собственно реализует правила конвертации для обмена. Будет располагаться во внешней обработке, которую мы будем подключать к узлу плана обмена.
ПКС — правила конвертации свойств
Создание плана обмена
Для удобства создадим подсистему "ECom_ОбменСФилиалами". Все новые объекты будем добавлять в эту подсистему. Изменения в типовые модули будем выносить в расширение (при подключении расширения надо будет снять галочки "безопасный режим", т.к. будут затрагиваться серверные модули).
Копируем план обмена "СинхронизацияДанныхЧерезУниверсальныйФормат", называем новый план обмена "ECom_ОбменСФилиалами".

В настройках состава плана обмена делаем Действия — Выключить все, а потом добавляем справочники:
- ВидыЦен
- Номенклатура
и документы:
- ЗаказКлиента
- УстановкаЦенНоменклатуры
Авторегистрацию отключаем.

Заходим в модуль менеджера. В процедуре ДоступныеВерсииФорматаОбмена необходимо изменить название плана обмена в запросе.
Также удобно добавить возможность отладки модуля менеджера обмена (внешней обработки), как это сделать, описано тут:
https://forum.infostart.ru/forum15/topic165732/
Процедура ПриПолученииОписанияВариантаНастройки определяет, как наш план обмена обмена будет появляться в меню настройки синхронизации.
