Как написать обмен с 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! 15%

[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    135568    729    291    

391

Перенос данных из Парус 8 в ЗГУ 3

Зарплата Внешние источники данных Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    22619    19    1    

22

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    68851    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    20627    136    38    

94

Перенос данных из УТ 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    46784    199    64    

162

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    231935    125    327    

296

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    67766    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    34440    81    58    

78
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. TODD22 18 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 963 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. МимохожийОднако 141 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 руб/час - у нас например, такие цены первый га#нобит ломит за час (чуть меньше) - но это на контору падает, а не на человека. Тут как в байке про охранника, которого наняли охранять мост. пришлось нанять еще кадровика, бухгалтера, и т.д. потом посчитали, что расходы большие - и уволили охранника...
Оставьте свое сообщение