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

09.04.18

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

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

Обмен данными с поставщиками нужно автоматизировать. 21-й век на дворе. Понятно, что в идеальном мире надо созвать конференцию поставщиков и потребителей в данной отрасли (в моем случае это автозапчасти), на которой согласовать единый формат обмена информацией и всем будет счастье. У аптечников такое есть. Но мы живем в неидеальном мире.

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

Изначальная идея у всех одна: поставщик готов отдать вам элементы своих справочников и готов принять от вас заказ. Но у всех поставщиков бизнес-процессы имеют свои особенности и это накладывает на API поставщиков разные начальные требования, а разные программисты, их реализующие, доводят картину до того, что у разных обменов нет общих черт, кроме изначальной идеи.

Как написать обмен в пятидесяти форматах? Написать пятьдесят обменов? давайте предположим, что в лучшем случае обмен с одним поставщиком писать и тестировать 1 неделю и ставка программиста 3000р/час. Умножили? И это я еще про поддержку и администрирование всего этого зоопарка не вспоминал.

Есть другие варианты? Мой ответ: написать один обмен!

Мы должны придумать себе 51-го поставщика и написать обмен с ним. Это должен быть идеальный для нас, для наших процессов поставщик. Этот поставщик должен иметь общие черты всех поставщиков, отличаясь от них в деталях.

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

  1. Функциональность, нужная нам, но которую некоторые поставщики будут неготовы обеспечить
  2. Функциональность которую поставщики предоставляют, но она нам не нужна.
  3. Функциональность реализованная кардинально разными методами у разных поставщиков.

Придумывая своего идеального поставщика, я перелопатил документацию поставщиков к их API и выработал 4 основных метода, при помощи которых я разработал API своего идеального поставщика.

Метод 1: Обобщение

Обобщение - это основной принцип разработки какой угодно функциональности. Обмен с поставщиками не исключение.
Например, один поставщик может использовать статусы заказов "принят", "в работе", "отгружен", "отказан". Другой "в работе менеджера", "в работе на складе", "в работе транспортной компании", "закрыт успешно", "отменен". Еще у одного поставщика я видел 27 разных статусов. Серьезно, я специально их посчитал. Понятно, что в нашей системе весь этот зоопарк нам не нужен. Мы обобщим статусы до минимально необходимого нам набора: "новый", "в работе поставщика", "отгружен поставщиком", "проблема".
Далее останется просто сопоставить каждый элемент справочника каждого поставщика с элементом нашего справочника. Естественно, заказы некоторым поставщикам никогда не не получат, например, статус "проблема", потому, что у поставщика не будет соответствующего статуса.

Метод 2: Разделение

Обобщить можно не все. Иногда приходится разделять.
Например, если один поставщик принимает заказ целиком (все строки заказа в одном XML), а другой по принципу корзины интернет-магазина (добавить товар в корзину - добавить товар в корзину - заказать корзину) то написать такое каким-то "общим" образом не получится.
В этом случае обмен с нашим идеальным 51-м поставщиком таки должен разделиться. т.е. он должен опционально уметь отправлять заказ и одним и другим методом. У меня это называется "метод отправки заказа" и имеет он два варианта значения: "заказ целиком" и "построчно".
А еще есть настройка "метод проверки статуса" и он имеет уже три варианта: "запрос по заказу - возврат по заказу", "запрос по заказу - возврат построчно" и "запрос построчно - возврат построчно".
Но увлекаться разделением сильно не стоит, поскольку каждое дробление ведет к усложнению системы. И чего точно не стоит делать - это допускать древовидное разделение. Старайтесь все свести к плоским настройкам. Если дробление функциональности по одному признаку будет зависеть от дробления по другому - вы закопаетесь в настройках и вместо элегантной простоты получите ад настроек.

Метод 3: Отсечение

Метод отсечения интуитивно понятен и применяется в тех случаях, когда функциональность поставщика превосходит ту, которая необходима вам.
Например, поставщик может предоставлять возможность редактировать заказ до какого-то определенного момента (например, до передачи в набор).
Но нам это не особо интересно и все остальные поставщики такой возможности не имеют, соответственно нам нужно просто сказать, что мы не будем пользоваться такой возможностью.
Нужно четко обозначить границы автоматизации. Все что выходит за их рамки должно быть исключено из рассмотрения. Игнорируйте аргументы "это дополнительное удобство": если с остальными поставщиками можно обойтись без этого - значит и с этим можно.

Метод 4: Умолчание

Метод умолчания является обратной крайностью метода отсечения. В данном случае, проблема заключается в том, что граница автоматизации включает в себя функциональность, которую не поддерживает поставщик. Например, возврат статуса заказа. Некоторые поставщики могут этого не поддерживать.
В этом случае не стоить городить во всех последующих алгоритмах проверку на то, считать ли статус заказа актуальным или игнорировать его, потому, что поставщик не умеет его возвращать. Гораздо проще поставить "заглушку", которая будет считать такие заказы уже находящимися в последнем статусе.

Таким образом, проанализировав ваши потребности и возможности - вы можете начертить границы автоматизации. Это и будет завершением этапа проектирования API вашего идеального 51-го поставщика. Т.е., если вдаваться в технику - узлов в плане обмена все равно будет 50, по количеству реальных поставщиков, но код выгрузки/загрузки данных будет один и тот же и будет формировать XML для всех 50 поставщиков в формате 51-го поставщика.

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

О том, как из одного обмена с идеальным поставщиком сделать 50 обменов с реальными - читайте в следующей статье.

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

См. также

SALE! 10%

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

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

50722 45650 руб.

04.08.2015    166019    329    276    

373

SALE! 15%

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 руб.

12.06.2017    140954    793    295    

415

SALE! 10%

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

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

35000 31500 руб.

15.12.2021    23655    163    51    

121

SALE! 10%

Перенос данных 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 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

50722 45650 руб.

15.04.2019    71927    180    149    

122

SALE! 10%

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

43889 39500 руб.

25.02.2015    170920    302    256    

377

SALE! 10%

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

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

48278 43450 руб.

03.12.2020    36352    92    64    

88

SALE! 10%

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

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

35000 31500 руб.

23.07.2020    50576    218    69    

177

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

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

15300 руб.

18.02.2016    186632    587    509    

524
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. TODD22 19 09.04.18 10:32 Сейчас в теме
ставка программиста 3000р/час

Можно узнать где такие щедрые ставки, в каком городе?
А то смотрел буквально час назад вакансии программистов от 350 руб до 1200 руб максимум что предлагают.
5. gradi 5 09.04.18 12:24 Сейчас в теме
(1)
Можно узнать где такие щедрые ставки, в каком городе?

В одной из компаний, где я работал, именно такой ценник выставлялся заказчику. Понятно, что до исполнителя доходила несколько иная сумма.
2. shuhard 09.04.18 10:36 Сейчас в теме
и ставка программиста 3000р/час

читать дальше бессмысленно
3. VmvLer 09.04.18 10:50 Сейчас в теме
ни о чем, статья "попахивает" разводом или это просто неудачный пиар
4. straus 09.04.18 11:15 Сейчас в теме
ставка программиста 3000р/час

У Вас поставщики наркоту поставляют, что программист за $50 в час вам обмены пилит?
formica32; +1 Ответить
6. genayo 09.04.18 12:28 Сейчас в теме
наиболее вариативной и сложной части обмана

Вы тут кого обманываете :))?
И 50 совершенно различных обменов заказами с различными поставщиками - так не бывает, с прайсами еще может быть, но не с заказами.
7. m-rv 972 09.04.18 13:09 Сейчас в теме
(6)
(6)
Вы тут кого обманываете :))

спасибо )
совершенно различных естественно не бывает, всех можно сгруппировать в 5-7 групп, внутри которых они будут довольно похожи, но все равно не станут идентичными
8. genayo 09.04.18 13:22 Сейчас в теме
(7) И тут встает вопрос - а не правильнее ли сначала преобразовать 5-7 форматов в 1, и только его уже непосредственно грузить (так, кстати, поступают многие крупные компании, сами, либо через EDI - провайдеров)?
10. пользователь 11.04.18 09:18
Сообщение было скрыто модератором.
...
9. МимохожийОднако 142 11.04.18 08:20 Сейчас в теме
Начал статью красиво...И всё...
11. zakidonoff 13.04.18 07:20 Сейчас в теме
Как написать обмен с 50 поставщиками и не сойти с ума.
Метод 1: отрицание.
Метод 2: гнев.
Метод 3: торг.
Метод 4: депрессия.
Метод 5: принятие.
belomorinka; Diego_Iv; +2 Ответить
12. belomorinka 19.09.18 14:57 Сейчас в теме
(11)
Как написать обмен с 50 поставщиками и не сойти с ума.
Метод 1: отрицание.
Метод 2: гнев.
Метод 3: торг.
Метод 4: депрессия.
Метод 5: принятие.

Спасибо)))
13. belomorinka 19.09.18 15:02 Сейчас в теме
Хорошая статья, автору респект за анализ.
Понравилось, что программисты налетели, как коршуны, при оценке в 3000 руб/час - у нас например, такие цены первый га#нобит ломит за час (чуть меньше) - но это на контору падает, а не на человека. Тут как в байке про охранника, которого наняли охранять мост. пришлось нанять еще кадровика, бухгалтера, и т.д. потом посчитали, что расходы большие - и уволили охранника...
Оставьте свое сообщение