Как автоматически загрузить акт или УПД поставщика из системы ЭДО?

Здесь уже много писалось о создании документов в XML формате для передачи покупателям через систему электронного документооборота (ЭДО), эта тема становится всё более актуальной в нынешней ситуации, т.к. этот путь позволяет обезопасить получателя от лишних физических контактов. Но мы в 95% случаев до сих пор обсуждали лишь гипотетическую возможность обратного процесса, т.е. получения документов от поставщика и их автоматическую загрузку в iScala. Мне кажется, пора поднять эту тему :)

Разберём простую ситуацию: получение акта или УПД на услуги. Это позволяет нам не рассматривать такую часть процессов, как запасы, со всеми вытекающими подзадачами, как то соотнесение наших кодов запаса и кодов запаса поставщика, единиц измерения и т.д. и т.п. Согласитесь, услуги на склад приходовать не нужно, поэтому начнём с них, как более простого примера.

Таким образом, задача может быть описана следующим образом:

Дано:

  1. Имеется XML файл, который мы можем сохранить из системы ЭДО в папку на локальном компьютере или сервере
  2. В файле имеется информация о номере счета-фактуры (акта), его дате, сумме с НДС, сумме без НДС, ID отправителя (поставщика) и его ИНН/КПП

Требуется:

  1. Идентифицировать поставщика по его ID в системе ЭДО или по комбинации ИНН/КПП
  2. Определить бухгалтерский счёт, на который относить затраты на оказанные услуги
  3. Определить, на какой счёт относить НДС, если он применим для данного поставщика
  4. На основе вышеописанного автоматически создать счёт-фактуру поставщика и бухгалтерскую проводку к нему

Как сделать:

  1. В карточке поставщика в какое-то свободное поле помещаем его ID в системе ЭДО (комбинация ИНН/КПП представляется мне менее надежным способом идентификации, т.к. иногда карточки поставщиков могут дублироваться)
  2. В карточке поставщика укажем стандартный счёт для затрат и все необходимые учётные измерения
  3. Создадим все необходимые компоненты для автоматической обработки файла: рабочий поток, входной канал для рабочего потока, специальный «быстрый поиск» для запроса информации по поставщику на основе его ID в системе ЭДО
  4. Ну, и так далее, это, в общем-то дело техники

И вот что получим:

Результат обработки XML файла, сохранённого из Диадока

Результат обработки XML файла, сохранённого из Диадока. Если посмотреть подробности, то можно увидеть, как он преобразовывался на разных шагах обработки. Ниже — входящая информация:

Входящая информация из XML файла, сохранённого из Диадока

Ну, вы же понимаете, что это тестовая компания и я подредактировал сам входной файл, чтобы не публиковать конфиденциальную информацию :)

Далее — эта информация преобразовывается и обогащается данными из iScala, для чего отправляется запрос в систему:

информация преобразовывается и обогащается данными из iScala

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

Входящая информация из XML файла, сохранённого из Диадока

Ну, а теперь можно зайти в запросы по поставщику и посмотреть результат в человеческом виде:

Ну, а теперь можно зайти в запросы по поставщику и посмотреть результат в человеческом виде:

И закладка с проводкой (для поставщика не применяется НДС, поэтому строк проводки всего 2):

И закладка с проводкой (для поставщика не применяется НДС, поэтому строк проводки всего 2)

Вот так, мягко, без пережима, без всяких лишних движений мы получили результат. Фактически пользователю нужно лишь сохранить файл из системы ЭДО в нужную папку. А потом посмотреть результат :)