Система электронных паспортов (ELPTS) - кто сталкивался?
Приветсвую.
Недавно возникла необходимость для учета транспонтных стедств (например для тех, кто знаимается производством) в некой Системе Электронных Паспортов. Нечто похожее на систему ЧестныйЗнак с их кодами маркировки...
В общем у меня имеется задача наладить связь между 1С и этой системой. Т.к. работа веб-кабинете epts - это долгий и непродуктивный труд с копированием/вводом кучицифр и названий...
На в целом можно найти документацию, при должном упорстве и связью с тех-поддержкой даже некие файлы.xml-примеры (в виде xsd-схем), тех.документацию по их формированию, описание веб-сервиса (ссылки на тестовую площадку)..
Вроде бы.. при наличии веб-сервиса и получения wsdl-схемы процесс должен быть очень прост: подключился, сформировал фабрику-xdto, заполнил все теги для нужно тебе операции, и получил ответ-результат... однако после долгих мучей так и не смог заполнить все теги - фабрика создается криво, некоторые теги не определяются, а результирующая xml-ка отличается от примера (как раз там. где не определяется, а соответсвенно и не заполняется нужный тег).
Второй вариант - по xsd-схемам (которые любезно предоставлены в закрытом разделе тех.поддержки, что странно..) можно обойтись без веб-сервиса и сформировать нужную xml-ку, а потом её уже перелсать через веб-запрос, получить ответ... но и тут средствами 1С файл создается какой-то кривой.. обрезанный. Да, теги (что не определялись в первом варианте через web-сервис по схеме wsdl) заполняются, но структура результирующего файла совершенно отличается от примера, который требуется для передачи в запрос.
Остается третий вариант - присать от и до файл xml вручную, как в блокноте. Ну либо чуть проще взять файл-пример и подменять значения тегов на свои, что в прицнипе сути не меняет...
В любом случае, остается необходимость (в 2м и 3м) передачи файла через HTTPСоединение на сервер ELTPS, а там отдельная история с авторизацией, защищенным соединением и цифровыми подписями... в этом я не слишком силен и, к сожалению.
Сама тех.подержка отвечает с интервалом в 2-6 часов в стиле "Документацию можете найти по ссылке...", "Попробуйте выполнить всё, согласно примерам" и т.п. Хоть по их словам, с их системой "работает большое множество партёнов на базе 1С", мне как-то слабо в это верится: нерабочае wsdl-описание, ни слова про 1С в документации, ни вметяемых ответов от техподдержки...
Кто-нибудь уже сталкивался с реализацией взаимодействием 1С с ELPTS? Получилось ли наладить процесс хоть как-то? Кто может поделиться опытом?
Недавно возникла необходимость для учета транспонтных стедств (например для тех, кто знаимается производством) в некой Системе Электронных Паспортов. Нечто похожее на систему ЧестныйЗнак с их кодами маркировки...
В общем у меня имеется задача наладить связь между 1С и этой системой. Т.к. работа веб-кабинете epts - это долгий и непродуктивный труд с копированием/вводом кучицифр и названий...
На в целом можно найти документацию, при должном упорстве и связью с тех-поддержкой даже некие файлы.xml-примеры (в виде xsd-схем), тех.документацию по их формированию, описание веб-сервиса (ссылки на тестовую площадку)..
Вроде бы.. при наличии веб-сервиса и получения wsdl-схемы процесс должен быть очень прост: подключился, сформировал фабрику-xdto, заполнил все теги для нужно тебе операции, и получил ответ-результат... однако после долгих мучей так и не смог заполнить все теги - фабрика создается криво, некоторые теги не определяются, а результирующая xml-ка отличается от примера (как раз там. где не определяется, а соответсвенно и не заполняется нужный тег).
Второй вариант - по xsd-схемам (которые любезно предоставлены в закрытом разделе тех.поддержки, что странно..) можно обойтись без веб-сервиса и сформировать нужную xml-ку, а потом её уже перелсать через веб-запрос, получить ответ... но и тут средствами 1С файл создается какой-то кривой.. обрезанный. Да, теги (что не определялись в первом варианте через web-сервис по схеме wsdl) заполняются, но структура результирующего файла совершенно отличается от примера, который требуется для передачи в запрос.
Остается третий вариант - присать от и до файл xml вручную, как в блокноте. Ну либо чуть проще взять файл-пример и подменять значения тегов на свои, что в прицнипе сути не меняет...
В любом случае, остается необходимость (в 2м и 3м) передачи файла через HTTPСоединение на сервер ELTPS, а там отдельная история с авторизацией, защищенным соединением и цифровыми подписями... в этом я не слишком силен и, к сожалению.
Сама тех.подержка отвечает с интервалом в 2-6 часов в стиле "Документацию можете найти по ссылке...", "Попробуйте выполнить всё, согласно примерам" и т.п. Хоть по их словам, с их системой "работает большое множество партёнов на базе 1С", мне как-то слабо в это верится: нерабочае wsdl-описание, ни слова про 1С в документации, ни вметяемых ответов от техподдержки...
Кто-нибудь уже сталкивался с реализацией взаимодействием 1С с ELPTS? Получилось ли наладить процесс хоть как-то? Кто может поделиться опытом?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Нет, отложил в долгий ящик.
Для 1С у них нет нормальной интеграции. При классическом использовании веб-сервиса возникают ошибки с некорретной wsdl-схемой (не верное описание некоторых тегов). Ответ тех.поддержки был такой, что да, ошибки есть некоторые, не критичные (по-их мнению) и решать это они не собираются, т.к. уже кто-то ("большое количество пользователей") наладил обмен и внесение изменений в эту схему может вызвать у них проблемы.
Для 1С у них нет нормальной интеграции. При классическом использовании веб-сервиса возникают ошибки с некорретной wsdl-схемой (не верное описание некоторых тегов). Ответ тех.поддержки был такой, что да, ошибки есть некоторые, не критичные (по-их мнению) и решать это они не собираются, т.к. уже кто-то ("большое количество пользователей") наладил обмен и внесение изменений в эту схему может вызвать у них проблемы.
(9) Вообщем удалось подписать и отправить XML, но не собирал XSD - Вернее не удалось каноникализировать потом, по wsdl тоже не удалось, итог я через SUAPUI беру необходимые XML заполняю, подписываю стандартным БСП методом и все работает
XML в макет нужно положить
Кому нужно(код написан на коленке):
XML в макет нужно положить
Кому нужно(код написан на коленке):
&НаКлиенте
Процедура Тест2(Команда)
текстXML_ = ЗаполнениеМакетаСтатус();
XMLИсходный =текстXML_;
ФорматироватьXML(текстXML_);
КонвертXML =текстXML_;
ТекстЗапроса=КонвертXML;
// Компонента = КомпонентаПодписи();
ПараметрыXMLDSig=ЭлектроннаяПодписьКлиент.ПараметрыXMLDSig();
ПараметрыXMLDSig.XPathSignedInfo = "(//. | //@* | //namespace::*)[ancestor-or-self::*[local-name()='SignedInfo']]";
ПараметрыXMLDSig.XPathПодписываемыйТег = "(//. | //@* | //namespace::*)[not(ancestor-or-self::ds:Signature)]";
ПараметрыXMLDSig.ИмяАлгоритмаПодписи = "GR 34.10-2012 256";
ПараметрыXMLDSig.OIDАлгоритмаПодписи = "1.2.643.7.1.1.3.2";
ПараметрыXMLDSig.ИмяАлгоритмаХеширования = "GR 34.11-2012 256";
ПараметрыXMLDSig.OIDАлгоритмаХеширования = "1.2.643.7.1.1.2.2";
ПараметрыXMLDSig.АлгоритмПодписи ="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256";
ПараметрыXMLDSig.АлгоритмХеширования = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256";
СтруктураПодписи = Новый Структура("КонвертSOAP,ПараметрыXMLDSig");
//ПараметрыКонверта=Неопределено;
// ПараметрыКонверта = ЭлектроннаяПодписьКлиент.ПараметрыКонвертаXML();
// ПараметрыКонверта.СообщениеXML = ТекстЗапроса ;
СтруктураПодписи.КонвертSOAP = ТекстЗапроса;//ЭлектроннаяПодписьКлиент.КонвертXML(ПараметрыКонверта);
СтруктураПодписи.ПараметрыXMLDSig = ПараметрыXMLDSig;
ОписаниеДанных = Новый Структура;
ОписаниеДанных.Вставить("Операция", "ПодписаниеДанных");
ОписаниеДанных.Вставить("ЗаголовокДанных", "Подписание хмл файла - " );
ОписаниеДанных.Вставить("Данные", СтруктураПодписи);
ОписаниеОповещения = Новый ОписаниеОповещения("ОбработатьРезультатПодписи", ЭтотОбъект);
ЭлектроннаяПодписьКлиент.Подписать( ОписаниеДанных, Неопределено, ОписаниеОповещения)
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьРезультатПодписи(РезультатПодписи, ДополнительныеПараметры=Неопределено) Экспорт
Если не РезультатПодписи.Успех Тогда
ОТвет ="Ошибка при подписании";
Для каждого Элемент Из РезультатПодписи.Данные.ПараметрыXMLDSig Цикл
ОТвет =ОТвет+Символы.ПС + Элемент.Ключ + " = " + Элемент.Значение;
КонецЦикла;
// Сообщить("Ошибка при подписании: " + РезультатПодписи.ОписаниеОшибки);
Возврат;
КонецЕсли;
// Сохраняем подписанный документ
ПодписанныйXML = РезультатПодписи.СвойстваПодписи.Подпись; // ПодписанныйXML = РезультатПодписи.Данные.КонвертSOAP ;
XMLПодпись="<?xml version=""1.0"" encoding=""UTF-8""?>" + Символы.ПС + ПодписанныйXML;
КонецПроцедуры
Функция ЗаполнениеМакетаСтатус()
Обработка = РеквизитФормыВЗначение("Объект");
МакетТекст = Обработка.ПолучитьМакет("status4").ПолучитьТекст();
//[MessageID]
//[Mnemonic]
//[HumanReadableName]
//[SendingTimestamp]
//[VIN]
МакетТекст=СтрЗаменить(МакетТекст,"[MessageID]",Новый УникальныйИдентификатор());
МакетТекст=СтрЗаменить(МакетТекст,"[Mnemonic]","***************");
МакетТекст=СтрЗаменить(МакетТекст,"[HumanReadableName]","************");
МакетТекст=СтрЗаменить(МакетТекст,"[SendingTimestamp]",ДатуВTimestamp(ТекущаяДата()));
МакетТекст=СтрЗаменить(МакетТекст,"[VIN]","ALEDALVSEPTEM1749");
Возврат МакетТекст;
КонецФункции
Функция ДатуВTimestamp(пДата = Неопределено)
Возврат Формат(ТекущаяДата(), "ДФ=yyyy-MM-ddThh:mm:ss.000+03:00");
//Возврат Формат(Число(?(ТипЗнч(пДата) = Тип("Дата"), пДата, ТекущаяДата())-Дата("19700101")),"ЧН=0; ЧГ=0");
КонецФункции
Процедура ФорматироватьXML(ТекстXML)
ТекстXML = СтрЗаменить(ТекстXML, символ(13)+символ(10),символ(10));
ТекстXML = СтрЗаменить(ТекстXML, символ(13),символ(10));
ТекстXML = СтрЗаменить(ТекстXML, "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""no""?>", "");
ТекстXML = СтрЗаменить(ТекстXML, "<?xml version=""1.0"" encoding=""UTF-8""?>", "");
КонецПроцедуры
ПоказатьПрикрепленные файлы:
новый 37.txt
У меня удалось на текущий момент написать обмен. Но есть огромная проблема с электронным подписанием исходящей XMLки. Необходимо подписывать целиком весь soap конверт. Типовая БСПшная подпись не работает так.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
