Подключение к Web-сервису ECOD для обмена документами в формате EDI (провайдер Корус)

06.06.13

Интеграция - WEB-интеграция

Подробное описание подключения из 1С 8.2 к Web-сервису ECOD для одностороннего обмена электронными документами в формате EDI (провайдер Корус).

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
ПодключениеКWebСервисуКорус.epf
.epf 14,63Kb
78 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Была поставлена задача – принимать заказы от крупной сети в электронном виде. Сеть работает следующим образом – рассылает всем заказы (ORDERS) через провайдера Корус в формате EDI, а подтверждений обратно не принимает. Соответственно, обмен идет только в одну сторону. Ну, ещё желательно было сэкономить на модуле сопряжения, который Корус предлагает купить, и коннектиться к ним непосредственно из 1С.

После заполнения всех необходимых бумаг и получения GLN своей организации, наконец–то мне выдали описание формата обмена и способа подключения к Web–сервису.

Уже в процессе работы созрели 2 варианта технической реализации обмена – тот, который рекомендует Корус (по протоколу SOAP) и который позволяет платформа 8.2 (через XDTO). Опишу ОБА способа реализации.

Первый способ (рекомендованный Корусом).

Для обмена через протокол SOAP, необходимо установить Soap Toolkit 3 с сайта Майкрософт. Он может там быть доступен для скачивания в разобранном виде (файлы с расширением .msm), тогда лучше поискать дистрибутив в виде инсталлятора. Также желательно установить финишное обновление SOAPDSK3.0–KB827257–x86.exe, которое лежит на том же Майкрософте, но уже в виде инсталлятора. Для 64-битных систем всё должно тоже штатно установиться. Протокол слегка устаревший, но Корус пока другого не предлагает….

Следующий шаг – добавление сертификатов в файл Cacert.pem из каталога bin программы. На всякий случай, добавил и корневые сертификаты, выданные Thawte, и сертификаты сайта, на котором живёт Web–сервис. Способ добавления сертификатов подробно описан в литературе, не буду на нём заострять внимание.

Пример реально работающего кода:

// Необходимо установить Soap Toolkit 3 и обновление к нему
// В папку bin программы 1С 8.2 добавить отредактированный файл cacert.pem с сертификатами Web-сервиса
//
Процедура ПолучитьЗаказыПокупателяMSSOAP(ДатаНачала, ДатаКонца, Login="Ваш логин", Password="Ваш пароль", Partner_ID="GLN Партнера") Экспорт

   
ИмяСервиса = "https://www.ecod.pl/webserv2/EDIservice.asmx?WSDL";

    Попытка
       
oSOAPClient = Новый COMОбъект("MSSOAP.SoapClient30");
    Исключение
       
#Если Клиент Тогда
       
Сообщить(ОписаниеОшибки());
       
#КонецЕсли
       
Возврат;
    КонецПопытки;

    Попытка
       
Инициализация = oSOAPClient.mssoapinit(ИмяСервиса, "", "", "");
    Исключение
       
#Если Клиент Тогда
       
Сообщить(ОписаниеОшибки());
       
#КонецЕсли
       
Возврат;
    КонецПопытки;

    Попытка
       
Подключение = oSOAPClient.Relationships(Login, Password, "5000");
       
СтрокаХML = Подключение.item(1).text;
       
КодОшибкиПодключения = Подключение.item(0).text;
    Исключение
       
#Если Клиент Тогда
       
Сообщить(ОписаниеОшибки());
       
#КонецЕсли
       
Возврат;
    КонецПопытки;

    Если
КодОшибкиПодключения <> "00000000" Тогда
       
#Если Клиент Тогда
       
Сообщить("Код ошибки подключения = " + КодОшибкиПодключения);
       
#КонецЕсли
       
Возврат;
    КонецЕсли;

   
ДатаНачалаECOD = ПривестиДатуКВидуECOD(ДатаНачала);
   
ДатаКонцаECOD = ПривестиДатуКВидуECOD(ДатаКонца);

   
// Возвращает массив tracking-id документов, доставленных пользователю ECOD
   
Попытка
       
Доставка = oSOAPClient.ListMBEx(Login, Password, Partner_ID, "ORDER", "RU1", "XML", "P",
                       
ДатаНачалаECOD, ДатаКонцаECOD, "", "", "N", "5000");
       
СтрокаДоставки = Доставка.item(1).text;
       
КодОшибкиДоставки = Доставка.item(0).text;
    Исключение
       
#Если Клиент Тогда
       
Сообщить(ОписаниеОшибки());
       
#КонецЕсли
       
Возврат;
    КонецПопытки;

    Если
КодОшибкиДоставки <> "00000000" Тогда
       
#Если Клиент Тогда
       
Сообщить("Код ошибки идентификации документов = " + КодОшибкиДоставки);
       
#КонецЕсли
       
Возврат;
    КонецЕсли;

   
// Теперь соберём массив идентификаторов документов tracking-id
   
МассивИдентификаторов = ПолучитьМассивИдентификаторовДокументовECOD(СтрокаДоставки);

   
// Теперь для каждого идентификатора получим документ
   
Для Каждого Элемент Из МассивИдентификаторов Цикл
        Попытка
           
Документ = oSOAPClient.Receive(Login, Password, Partner_ID, "ORDER", Элемент, "XML", "R", "5000");
           
СтрокаДокументаXML = Документ.item(1).text;
           
КодОшибкиДокументаXML = Документ.item(0).text;
            Если
КодОшибкиДокументаXML <> "00000000" Тогда
               
#Если Клиент Тогда
               
Сообщить("Код ошибки доставки документа " + Элемент + " = " + КодОшибкиДокументаXML);
               
#КонецЕсли
               
Продолжить;
            КонецЕсли;
           
СформироватьЗаказПокупателяECODИзСтрокиXML(СтрокаДокументаXML);
        Исключение
           
#Если Клиент Тогда
           
Сообщить(ОписаниеОшибки());
           
#КонецЕсли
           
Продолжить;
        КонецПопытки;
    КонецЦикла;

КонецПроцедуры

Второй способ (использование возможностей платформы 8.2).

Известно, что 1С 8.2 тоже умеет работать с неродственными ей объектами, для этого нужно использовать объект Фабрика XDTO. В тексте процедуры показан динамический способ создания описания объектов Web–сервиса, подключения к нему и управления входящими документами.

Добавление сертификатов также обязательно и в этом случае.

 

Полный текст кода:

 

Процедура ПолучитьЗаказыПокупателяXDTO(ДатаНачала, ДатаКонца, Login="Ваш логин", Password="Ваш пароль", Partner_ID="GLN Партнера") Экспорт

   
Определение = Новый WSОпределения("https://www.ecod.pl/webserv2/EDIservice.asmx?WSDL");
   
Прокси = Новый WSПрокси(Определение, "http://www.comarch.com/", "EDIWebService", "EDIWebServiceSoap12");

   
Фабрика = Прокси.ФабрикаXDTO;

   
Запрос = Фабрика.Создать(Фабрика.Тип("http://www.comarch.com/", "Relationships"));
   
Запрос.Name = Login;
   
Запрос.Password = Password;
   
Запрос.Timeout = "5000";

   
РезультатRelationships = Прокси.Relationships(Запрос.Name, Запрос.Password, Запрос.Timeout);
   
// Возвращает документ XML, если операция выполнена успешно

   
КодОшибкиПодключения = РезультатRelationships.Res;
    Если
КодОшибкиПодключения <> "00000000" Тогда
       
#Если Клиент Тогда
       
Сообщить("Код ошибки подключения = " + КодОшибкиПодключения);
       
#КонецЕсли
       
Возврат;
    КонецЕсли;

   
Запрос = Фабрика.Создать(Фабрика.Тип("http://www.comarch.com/", "ListMBEx"));
   
Запрос.Name = Login;
   
Запрос.Password = Password;
   
Запрос.PartnerIln = Partner_ID;
   
Запрос.DocumentType = "ORDER";
   
Запрос.DocumentVersion = "RU1";
   
Запрос.DocumentStandard = "XML";
   
Запрос.DocumentTest = "P";
   
Запрос.DateFrom

Вступайте в нашу телеграмм-группу Инфостарт

См. также

WEB-интеграция Анализ продаж Системный администратор Программист Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

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

60000 руб.

07.05.2019    43911    76    45    

32

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.

42700 руб.

03.08.2020    25057    39    26    

29

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Расширение для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

24000 руб.

02.02.2021    23721    72    52    

44

WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена по API между конфигурацией 1С:Альфа-Авто 6 и порталом LogicStar. Позволяет работать с несколькими обменами LogicStar разных брендов (CHERY, OMODA, JAECOO, EXEED, TENET) в одной информационной базе в ручном и автоматическом режиме. Поддерживается выгрузка заказ-нарядов, реализаций товаров и товарных остатков.

20740 руб.

13.05.2025    2547    4    0    

7

WEB-интеграция Программист Бизнес-аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

17568 руб.

20.12.2024    7016    30    4    

30
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Alex_Japanese_Student 460 06.06.13 19:39 Сейчас в теме
доводилось с корусом работать, через их интерфейс и с их обработками. В целом работало все, один раз понять и настроить, а дальше все было гуд
2. aspirator23 342 16.06.13 16:39 Сейчас в теме
К сожалению сколько провайдеров столько форматов. Метро работает по другому, Гиперглобус по третьему.
Уж лучше 1с формат для обмена документами.
3. miroha 27.10.13 18:04 Сейчас в теме
Нас тоже крупный покупатель обязал перейти на EDI рекомендовал корус. Сначала был шок, зачем платить за каждый отправленный документ? ведь полно способов сделать это бесплатно. Для нас это сумма сотни тысяч рублей, причем сервера корус не всегда доступны и являлись узким местом в нашем обмене.

Купили у них пакет с внедрением, в итоге внедряли все сами и полностью переписали их программу для хранения данные в базе, а не файловой помойке, которая в их конфигурации тормозит. Техническая поддержка ужасная, специалисты плохо разбираться в конфигурации и все сводиться к пустой болтовне в почте между менеджерами, руководителями и программистами. Когда разобрались в принципах обмена перешли на другого более доступного по ценам провайдера. Дешевле всего стать самому провайдером или найти другой способ обмена.
msvd; gfoods; Dilovar9; partner1c; +4 Ответить
4. MICK77 15 20.12.13 18:29 Сейчас в теме
(3) miroha, Если не великая тайна и не в качестве рекламы на кого перешли? А то тоже выбираем сейчас из 4-х.
5. 10ra 06.05.14 15:30 Сейчас в теме
этот кусок кода лишний т.к. уже поменяли статус при получении XML (Receive...Запрос.ChangeDocumentStatus = "R";)
        
        Запрос = Фабрика.Создать(Фабрика.Тип("http://www.comarch.com/", "ChangeDocumentStatus"));
        Запрос.Name = Login;
        Запрос.Password = Password;
        Запрос.TrackingId = Элемент;
        Запрос.Status = "R";   // Меняем статус на прочтённый

        РезультатStatus = Прокси.ChangeDocumentStatus(Запрос.Name, Запрос.Password, Запрос.TrackingId, Запрос.Status);
        КодОшибкиStatus = РезультатStatus.Res;
        Если КодОшибкиStatus <> "00000000" Тогда
            #Если Клиент Тогда
            Сообщить("Код ошибки изменения статуса документа " + Элемент + " = " + КодОшибкиStatus);
            #КонецЕсли
        КонецЕсли;
Показать


+ почитать Техническая спецификация EDIservice
Прикрепленные файлы:
ws-edi.doc
6. vbelyaev 03.08.14 14:56 Сейчас в теме
Товарищи, меня чё-т в гугле забанили походу. Не могу найти как добавить сертификаты в cacert.pem.

Пните в нужном направлении пожалуйста)))
21. bobo93 06.10.16 12:56 Сейчас в теме
(6) vbelyaev,
Здравствуйте.
Вы не розобрались с вопросом?

"Товарищи, меня чё-т в гугле забанили походу. Не могу найти как добавить сертификаты в cacert.pem.

Пните в нужном направлении пожалуйста)))"
7. Ulus 294 10.09.14 06:33 Сейчас в теме
Хорошая статья.
Грамотно!

8. Ulus 294 10.09.14 06:38 Сейчас в теме
А мы взяли Адаптер 1С от коруса.
начали внедрять.
Но оказалось, что в серийном Адаптере нету документа "Приложение к уведомлению об отгрузки".
Это новый документ, для поставщиков алкогольной продукции.
И все ... Корус нас завтраками кормит. В службу поддержки, вставайте в очереь и.т.п.
Ужасный сервис у них.
Сейчас пробую стрести с них формат файла этого электронного документа.
Сделаем сами.

P.s. кому интересно рекомендую Е-Ком. Четко, быстро, качественно. Не реклама. Просто работаем с несколькими провайдерами.
10. Antonio 7 03.02.15 12:50 Сейчас в теме
(8) Ulus, позвольте спросить как организовывали обмен с несколькими провайдерами? Сейчас тоже оптимизируем затраты на провайдеров, и возникла необходимость использовать несколько провайдеров.
9. Pim 190 10.01.15 16:48 Сейчас в теме
Никто не делал обратную выгрузку (выгрузку подтверждений) на сайт?
11. itcmsch71 08.07.15 05:21 Сейчас в теме
Спасибо Вам большое - статья очень помогла
Вначале пользовались адаптером Коруса (купили пакет с внедрением) - но после некоторого времени общения с ними - нервы не выдержали - стряс с них пакет спецификаций и оттолкнувшись от статьи написал свой обмен - причем теперь работаем без участия операторов - те только оформляют первичные документы.
Если кому интересно - могу отдать.......
Да, еще - установка сертификатов не понадобилась......
Так работает
Shooroopik111; asrgroup; Oleg_Anat; Pipapalamm; gfoods; +5 Ответить
12. gfoods 11.07.15 12:28 Сейчас в теме
(11) itcmsch71,
Было бы очень любопытно посмотреть Вашу работу. Сам готовлюсь уйти от *%^#нутого Коруса, сил нет больше их поделками пользоваться.
Если готовы показать, то пришлите ссылку в личку.
Спасибо.
13. binex 280 20.07.15 18:05 Сейчас в теме
(11) itcmsch71, поясните пожалуйста, что значит "теперь работаем без участия операторов"?
Какие сообщения внедрили?
15. Pipapalamm 25.11.15 11:08 Сейчас в теме
(11) itcmsch71, Очень хотелось бы посмотреть на ваш обмен. Сам обдумываю уход от Корусовских "Адаптер+Коннектор".
Буду очень благодарен за конфигурацию.
Заранее спасибо!
16. Oleg_Anat 01.12.15 09:50 Сейчас в теме
(11) itcmsch71, очень заинтересовал сделанный вами обмен. Мы сейчас только начинаем работать с этой системой, вот обдумываю варианты передачи данных. Вариант корусовских адаптера и коннектора - теперь не рассматриваю - после прочтения отзывов в данной статье об их техподдержке и сервисе. Если можете поделится вашей разработкой - буду очень благодарен, заранее огромное спасибо!
17. serg1785 18.04.16 12:40 Сейчас в теме
(11) itcmsch71, заинтересовала ваша разработка - если есть возможность - поделитесь. Спасибо!
20. bsv69 24.08.16 14:41 Сейчас в теме
(11) itcmsch71, Добрый день. Если можно, вышлите обработку обмена. Спасибо.
23. Shooroopik111 132 20.09.17 17:37 Сейчас в теме
Ребят
(11)
Поделитесь?
24. taasha25 13 06.03.18 16:04 Сейчас в теме
(11) Здравствуйте! Буду благодарна, если поделитесь разработкой. Спасибо!
25. taasha25 13 28.04.18 09:00 Сейчас в теме
(11) Здравствуйте! Можете поделиться обработкой выгрузки Приложения к уведомлению об отгрузке? Заранее спасибо!
14. АЛьФ 10.09.15 14:53 Сейчас в теме
На попытке сменить статус документа отваливается с ошибкой:

Результат = ПолучитьСОАП().ChangeDocumentStatus(
{W:\...\EDI.ERT(358)}: Client: Client:Incorrect number of parameters supplied for SOAP request HRESULT=0x80070057: Параметр задан неверно.
 - Client:Unspecified client error. HRESULT=0x80070057: Параметр задан неверно.


Кто-нибудь сталкивался? Я чего-то недопонял или проблема на их стороне?

Ой, чуть не забыл.

Вызов такой:

	Результат = ПолучитьСОАП().ChangeDocumentStatus(
								Идентификатор,
								Пароль,
								тзДокументы.идДокумента,
								НовыйСтатусДокумента);
18. katanovich 17.06.16 16:07 Сейчас в теме
Добрый день!
Выдает во втором варианте:
КодОшибкиПодключения = 000000001.
Логин/Пароль верные. Где можно посмотреть расшифровку ошибки?
19. asrgroup 20.06.16 09:47 Сейчас в теме
Неправильный пароль или логин. Логин надо брать из настроек ТТКонектора (обычно GLN + "ЕС")
22. кольщик 29.04.17 10:28 Сейчас в теме
А для 1с 7.7 есть какое-нибудь похожее описание??
26. Teut_Vlad 197 04.09.18 15:51 Сейчас в теме
Что за НайтиОбъектПоЗначениюСвойства?
Для отправки сообщения требуется регистрация/авторизация