Возьму небольшую паузу - "отойти" от чудоразработчиков ФСРАР, пользователей с наездами "не по адресу" и
потрындеть... последнее думаю будет полезно всем.
Цитата: jgalt ➤ Если поделитесь - то выставляйте. Можно без описания - по документации от УТМ можно разобраться.А так, я сам свою "обёртку" сочиняю, просто для понимания работы.
Выставлю - "уже" надеюсь в пятницу.
Цитата: jgalt ➤ К посту 58.
Как я понял, УТМ сам обменивается с сервером (отправляет запросы и принимает ответы). Период обмена настраивается в файле c:\TT\transporter\conf\transport.properties по умолчанию 300 секунд.
Так что не будет ничего страшного, если после удаления ответов сервера командами вида: ...
out?refresh=true (выполняется быстро, несколько секунд) и отображать уже неудаленные ответы.
Наверное инфа по настройке УТМ полезна, но пока до таких "нюансов" не дошел.
Что по скорости ответа - думаю это не зависит от настроек, т.к. иногда ЕГАИС обновляет "входящие запросы" за 5 минут, а иногда ответ (обновление инфы) ждал 20 минут
Цитата: akonev ➤ нужно. если "религия позволяет" - с исходниками совсем хорошо будет.
"Религия позволяет", но
1. Хотя это условно (потом буду лабать и интеграцию) "независимая" от "УС Лэнд" программа, но базируется она на исходниках и библиотеках "УС Лэнд" и "неявно" входит в пакет поставки УС, т.е. когда выставлю - будут все исходники
2. Что может дать исходный код на xHarbour программисту на других системах разработки.
Например будет ли полезно?
Код:
* ---------------------------------------------------------------------------
* Закачиваю список входящих запросов по накладным и другим типам подтверж-
* дений переданных через уникальный контекст в возвращаемый массив памяти
* Парсим xml файл (содержимое между тэгами) примерно структуры:
* <?xml version="1.0" encoding="UTF-8" standalone="no"?>
* <A>
* <url></url>
* <url></url>
* <url replyId="ec8cf067-2013-4e6d-b342-9868c845d89f">http://localhost:8080/opt/out/ReplyAP/95</url>
* ....
* <url></url>
* <ver>1</ver>
* </A>
* Существование ХМЛ файла и корректность контекста проверяю до вызова
FUNC aReadListOut(cUnic,cXmlUTF8)
LOCA cStr:="", nI:=0, aZap:={}, oUrl, oDoc:=TXmlDocument():new()
// Читаем в объект содержимое XML файла. Нужно конвертировать содержимое из UTF-8 в OEM кодировку программы
oDoc:read( HB_UTF8TOSTR(MemoRead(cXmlUTF8)) )
// Использую самую простую технику парсинга ХМЛ файла, используя уникальность и однородность тэгов, содержащих необходимую инфу.
oUrl := oDoc:findFirst( "url" )
IF oUrl <> NIL // Существует хотя бы единственная строка с данными тэгами
cStr := czOutStr(oUrl:cData)
IF At( Upper(Alltrim(cUnic)), Upper(cStr) ) > 0 THEN aadd( aZap, cStr )
// Продолжаю искать другие узлы, используя навигацию из исходного документа
DO WHIL TRUE // Обрабатываю все вхождения узлов в документ
oUrl := oDoc:findNext( "url" )
IF oUrl == NIL THEN EXIT // Если закончились - возвращается неопределенный объект, то выход
cStr := czOutStr(oUrl:cData)
IF At( Upper(Alltrim(cUnic)), Upper(cStr) ) > 0 THEN aadd( aZap, cStr )
ENDD
ENDI
RETU aZap
Теперь по "чудо" разработчикам и техническим писателям ФСРАР! Считал накладную, вывел её в форме таблицы и отчета, а затем мне нужно послать подтверждение (или другую реакцию)... и "завис".
1. Читаю инструкцию
Код:
1.8. Получение ТТН
Организация в ЕГАИС осуществляет получение ТТН, отправленных ей с УТМ
организаций-отправителей этих ТТН. Командой (1.5.6) осуществляется опрос входящих
документов. В списке входящих документов будут строки вида:
<url>http://localhost:8080/opt/out/WayBill/102</url> (1.8.1)
<url>http://localhost:8080/opt/out/FORMBREGINFO/103</url>
Эти адреса соответствуют входящим ТТН и уведомлениям о регистрации движения
ТТН. Атрибут replyIdу входящих ТТН не указывается, т. к. эти ТТН были подписаны и
отправлены с другого УТМ. Такие документы требуется сохранить из УТМ в файл
командами:
curl –X GET http://localhost:8080/opt/out/WayBill/102
curl –X GET http://localhost:8080/opt/out/FORMBREGINFO/103 (1.8.2)
а затем удалить:
curl –X DELETE http://localhost:8080/opt/out/WayBill/102 (1.8.3)
curl –X DELETE http://localhost:8080/opt/out/FORMBREGINFO/103
По содержанию входящая ТТН совпадает с файлом вида (1.7.1), который отправил
отправитель этой ТТН. Уведомление о регистрации движения, полученное
грузополучателем, также не отличается от аналогичного документа, пришедшего
отправителю ТТН.
По входящей ТТН требуется сформировать и отправить акт расхождений.
.......
1.9. Отправка акта
Организация-получатель ТТН (1.7.1) должна сформировать и отправить в ЕГАИС подтверждение этой ТТН, если сведения в этой ТТН совпадают с фактом. Сформируйте подтверждающий акт в виде:
.....
<wa:ACTNUMBER>1-1</wa:ACTNUMBER>
<wa:ActDate>2015-02-16</wa:ActDate>
<wa:WBRegId>0000002167</wa:WBRegId>
<wa:Note>Приниаем продукцию</wa:Note>
....
Элемент wa:WBRegId в (1.9.1) содержит идентификатор подтверждаемой ТТН. Этот же идентификатор содержится в элементе wbr:WBRegId документа (1.7.8).
2. Изучаю ответ сервера ЕГАИС - входящие запросы:
Код:
<?xml version="1.0" encoding="UTF-8"?>
-<A>
<url></url>
<url></url>
<url></url>
<url></url>
<url>2</url>
<url></url>
<url></url>
<url></url>
<url replyId="a40c0c76-a453-467b-8cc6-8eef963cda87">http://localhost:8080/opt/out/ReplyAP/94</url>
<url></url>
<url replyId="01bf1cf8-6bcb-4637-a3dc-d5d880c4bf7b">http://localhost:8080/opt/out/Ticket/52</url>
<url></url>
<url></url>
<url></url>
<url replyId="ec8cf067-2013-4e6d-b342-9868c845d89f">http://localhost:8080/opt/out/ReplyAP/95</url>
<url replyId="96f38408-66ac-4394-9a76-442218e5cda9">http://localhost:8080/opt/out/ReplyAP/96</url>
<ver>1</ver>
</A>
3. Кто в лес, кто по дрова... ничто WAYBILL и ни с чем FORMBREGINFO не связано. Начинаю изучать пришедшие файлы такого типа - нумерация запросов никак не связана между собой... Посличал ХМЛ документы, почитат раздел "разработчиков" ФСРАР - нашел взаимосвязь:
В
FORMBREGINFO есть строки - они уникальные:
Код:
<wbr:Identity>350191000004148476</wbr:Identity>
<wbr:WBRegId>0000025764</wbr:WBRegId>
<wbr:WBNUMBER>[SL11115115071] SL11115115071</wbr:WBNUMBER>
<wbr:WBDate>2015-09-17</wbr:WBDate>
Также есть связующая информация в
WAYBILL
Код:
<wb:Identity xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef" xmlns:wb="http://fsrar.ru/WEGAIS/TTNSingle">350191000004148476</wb:Identity>
ИЛИ по рекомендации ФСРАР
<wb:NUMBER>[SL11115115071] SL11115115071</wb:NUMBER>
<wb:Date>2015-09-17</wb:Date>
4. Осознаю алгоритм в моём случае:
1. Прочитать накладную в
WAYBILL и извлечь из неё
wb:Identity
2. Пропарсить
ВСЕ ХМЛ файлы по запросу с
FORMBREGINFO с поиском узла
<wbr:Identity> и если найду, то извлечь содержимое узла
wbr:WBRegId
3. При нахождении соответствия могу
- посылать акты с "кодами регистрации" ТТН
- удалять попарные запросы по "накладным" и "фактам регистрации" (разделам Б)