Как написать обмен с 50 поставщиками и не сойти с ума. Техника

16.04.18

Интеграция - Обмен между базами 1C

О том как из обмена с одним идеальным поставщиком сделать обмены с 50 реальными поставщиками.

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

Сейчас мы перейдем от теории к делу, от идеальных поставщиков к реальным.

Начнем с того, как лучше устроить файл выгрузки (для идеального 51-го поставщика):

  • Во-первых это должен быть XML (почему - станет ясно позднее).
  • Во-вторых он должен содержать максимальное количество данных, которые вы только можете выгрузить с этим заказом. Т.е. на этом этапе нам не важно, требуется ли указывать ставку НДС для поставщика, которому в конечном итоге предназначен заказ - мы должны выгружать все что может потребоваться.
  • В-третьих конвертируемые значения должны быть сконвертированы. Т.е. уже на стадии формирования XML для идеального 51-го поставщика, например, идентификаторы товаров должны быть подставлены от того поставщика, которому предназначен заказ. Это не должно вызвать каких-то затруднений, поскольку каждый из поставщиков имеет свою номенклатуру поставщика, а поставщик известен.

Таким образом, у нас должен получиться файл, содержащий все данные, нужные поставщику чтобы принять заказ, но в немного невалидном виде )

Так как же это работает

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

  1. XSLT
  2. Форматный конвертер

Сначала нам нужно создать саму структуру данных. Для этого лучше всего подходит XML, поскольку в нашем распоряжении имеется мощный язык преобразования XML-документов (eXtensible Stylesheet Language Transformations), позволяющий преобразовать XML документ из одного вида в другой. И (!) этот язык поддерживается платформой 1С:Предприятие. Объект платформы ПреобразованиеXSL позволяет приводить ваш XML к другому виду, используя язык XSLT.
Язык не сложный, освоить на базовом уровне (а базового уровня для нашей задачи хватит с головой) его можно за пару-тройку дней.

Далее, созданную структуру, возможно, потребуется преобразовать в формат, отличный от XML. Форматный конвертер, который, к сожалению, платформа не поставляет в готовом виде, придется писать самостоятельно. В этом смысле наиболее сложным представляется преобразование XML <-> JSON, пример такого преобразования я выкладывал. Бывает еще преобразование XML в параметры GET запроса, т.е. в строку вида ?item=12345&qty=4&price=19.50, но это уже совсем просто. В результате этого шага должен появиться текст обмена, валидный для конкретного поставщика.

После получения валидного текста для обмена - его остается только отправить. Этой задачей занимается функциональность, которую я условно называю универсальный дозвонщик. Она умеет по настройкам вызвать SOAP или REST сервис и передавать туда результат работы конвертера. Дозвонщик должен предусматривать очень разные сценарии развития событий: он должен быть готов отправить данные как параметры и как тело запроса, POST и GET методами, с basic и не очень авторизацией и т.п.

Теоретически, к дозвонщику можно прикрутить хоть чтение/запись в эксель, конкретные "коннекторы" выбирайте под свои потребности.

В принципе, функции получения данных в формате идеального 51-го поставщика, XSL трансформации, форматного конвертера и дозвонщика можно вынести в отдельную ИБ, что у меня и сделано. Я называю эту штуку Конвертер интерфейсов. 

Код всей этой ИБ умещается в 300 строк. Основные настройки (тексты XSLT, настройки преобразований и вызовов) хранятся как элементы справочников. При подключении к ней, эта ИБ делает следующее:

  • ERP формирует заказ и отправляет его в формате 51-го поставщика Конвертору интерфейсов
  • Конвертер получает тест XML в формате 51-го поставщика и дообогащает его
  • определяет какому поставщику нужно отправить запрос (условно, по коду интерфейса), — на лету выполняет XSL трансформацию и форматную конвертацию
  • тут же отправляет преобразованный запрос дальше поставщику
  • получает ответ поставщика
  • из тела ответа в обратном порядке выполняет форматную конвертацию, дообогащение, далее XSL трансформацию в формат ответа идеального поставщика
  • возвращает в ERP ответ идеального поставщика

Все это происходит «на лету», т.е. синхронно, т.е. ERP думает что обменивается со всеми поставщиками в одном, удобном ей формате, даже не замечая что происходит что-то неладное. Такой подход, естественно, применим только для случаев передачи относительно небольших пакетов данных. Если у вас ходят прайс-листы по 1 Гб — стоит подумать как ко всей этой истории прикрутить асинхрон.

Фишка с дообогащением

Почти в каждом обмене есть такие значения, которые просто хардкодятся. Частично это может быть следствием чересчур богатой функциональности поставщика, например, параметр «процент на который может быть увеличена цена товара без дополнительного согласования», частично это просто какие-то значения типа «для вас это всегда 4000». Что 4000? Почему 4000? Просто 4000 и все. Чтобы не хранить в ERP такие «мертвые» значения, в Конвертере есть возможность дообогатить данные ERP каким-то еще XML'ем. Т.е. это просто произвольный XML, который хранится в БД Конвертера интерфейсов.

Для каждого интерфейса (поставщика) такой XML свой. Дообогащение происходит по принципу простой склейки с обёрткой в общий тег, например:

<body>
  <ERPData>
    ...данные из ERP...
  </ERPData>
  <AdditionalData>
    ...статичные данные Конвертера...
  </AdditionalData>
</body>

И далее, такой обогащенный XML поступает на вход XSLT движка, где доступны как данные, отправленный ERP, так и наши статичные данные.

Что мы имеет в результате?

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

  • Изучение документации к API
  • Создание соответствующего поставщика в ERP и его настройка (порядка 10 галочек).
  • Описание преобразования текста обмена на языке XSLT
  • Описание форматной конвертации (если требуется)
  • Настройка параметров исходящего подключения (еще 10 галочек).

На практике, все эти действия занимают до 3-х часов. Понятно, что бывают случаи когда поставщик выдумает что-то «эдакое», но в 95% случаев можно уложиться в 2-3 часа. (в этом предложении я ошибся и написал «подставщик» вместо «поставщик». Совпадение?..)

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

Обмен конвертация поставщики

См. также

SALE! 10%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    136024    731    291    

393

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники

Перенос данных 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных)

50722 45650 руб.

31.10.2014    232745    127    327    

298

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

38500 34650 руб.

15.04.2019    69178    181    139    

111

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.226.x) и БП 3.0 (3.0.151.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20814    137    38    

96

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 руб.

23.07.2020    47134    201    64    

163

SALE! 10%

Перенос данных из БП 3.0 в УНФ 3.0 / УНФ 1.6. Переносятся остатки, документы и справочная информация

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

В продаже с 2018г. | Воспользовались более 41 предприятия! | Правила конвертации (КД 2) для переноса данных из БП 3 в УНФ | Переносятся все виды документов, начальные остатки и вся возможная справочная информация | Есть фильтр по организациям | Оперативно обновляем на новые релизы | Оказываем техподдержку | В комплект файлов входит инструкция, авторская версия обработки "Универсальный обмен...", актуальные правила переноса данных и архив старых версий переноса | Учет в БП 3 должен быть корректным, некорректные данные не переносятся | Можно бесплатно проверить на вашем сервере до покупки!

50722 руб.

10.07.2018    68052    41    123    

46

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

48278 43450 руб.

03.12.2020    34624    83    58    

81

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11 / КА 2 / ERP 2. Переносятся документы, справочники и остатки

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос в продаже с 2015г., и мы постоянно работаем над его развитием. Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

50722 45650 руб.

24.04.2015    191293    270    239    

270
Оставьте свое сообщение