Discussion:
Почта России
(слишком старое сообщение для ответа)
Denis Chernyaev
2017-10-28 17:23:46 UTC
Permalink
Здpавствуй, All!

Мой скромный гений (с) дарит вам.
Процедура получения статуса трека из ПР. Работает.

Функция Логин()
Возврат ".......";
КонецФункции
Функция Пароль()
Возврат ".......";
КонецФункции

//результат
//дата операции
//адрес, где произведена операция
//сама операция
Функция ПолучитьДанныеИзПочтыРоссии(HомерОтправления) Экспорт
Перем табКонечные;

ТаблицаРезультат = Hовый ТаблицаЗначений;
ТаблицаРезультат.Колонки.Добавить("Дата");
ТаблицаРезультат.Колонки.Добавить("АдресОперации");
ТаблицаРезультат.Колонки.Добавить("Операция");
ТаблицаРезультат.Колонки.Добавить("КодОперации");
ТаблицаРезультат.Колонки.Добавить("КодАтрибутаОперации");
ТаблицаРезультат.Колонки.Добавить("КонечнаяОперация");

табКонечные = Hовый ТаблицаЗначений;
табКонечные.Колонки.Добавить("ИД");
табКонечные.Колонки.Добавить("Аттр");

стр = табКонечные.Добавить();
стр.ИД = "2";
стр.Аттр = "1";
стр = табКонечные.Добавить();
стр.ИД = "2";
стр.Аттр = "2";
стр = табКонечные.Добавить();
стр.ИД = "2";
стр.Аттр = "3";
стр = табКонечные.Добавить();
стр.ИД = "2";
стр.Аттр = "4";
стр = табКонечные.Добавить();
стр.ИД = "2";
стр.Аттр = "5";
стр = табКонечные.Добавить();
стр.ИД = "2";
стр.Аттр = "6";
стр = табКонечные.Добавить();
стр.ИД = "2";
стр.Аттр = "7";
стр = табКонечные.Добавить();
стр.ИД = "2";
стр.Аттр = "8";
стр = табКонечные.Добавить();
стр.ИД = "2";
стр.Аттр = "9";
стр = табКонечные.Добавить();
стр.ИД = "2";
стр.Аттр = "10";
стр = табКонечные.Добавить();
стр.ИД = "2";
стр.Аттр = "11";
стр = табКонечные.Добавить();
стр.ИД = "2";
стр.Аттр = "12";
стр = табКонечные.Добавить();
стр.ИД = "5";
стр.Аттр = "1";
стр = табКонечные.Добавить();
стр.ИД = "5";
стр.Аттр = "2";

Попытка
Запрос = Hовый COMОбъект("WinHttp.WinHttpRequest.5.1");
Запрос.Open("POST", "http://tracking.russianpost.ru/rtm34?wsdl", 0);
Запрос.setRequestHeader("Content-Type", "application/soap+xml;
charset=utf-8");
Исключение
Возврат ТаблицаРезультат;
КонецПопытки;
XML =
"<soap:Envelope xmlns:soap=""http://www.w3.org/2003/05/soap-envelope""
xmlns:oper=""http://russianpost.org/operationhistory""
xmlns:data=""http://russianpost.org/operationhistory/data""
xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"">
| <soap:Header/>
| <soap:Body>
| <oper:getOperationHistory>
| <data:OperationHistoryRequest>
| <data:Barcode>" + HомерОтправления + "</data:Barcode>
| <data:MessageType>0</data:MessageType>
| <data:Language>RUS</data:Language>
| </data:OperationHistoryRequest>
| <data:AuthorizationHeader soapenv:mustUnderstand=""1"">
| <data:login>" + Логин() + "</data:login>
| <data:password>" + Пароль() + "</data:password>
| </data:AuthorizationHeader>
| </oper:getOperationHistory>
| </soap:Body>
|</soap:Envelope>";

Попытка
Запрос.Send(XML);
Запрос.WaitForResponse();
Ответ = Запрос.ResponseText;
Исключение

Возврат ТаблицаРезультат;

КонецПопытки;
ЧтениеXML = Hовый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(Ответ);
ПостроительDOM = Hовый ПостроительDOM();
ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);

СписокСобытий = ДокументDOM.ПолучитьЭлементыПоИмени("ns3:historyRecord");

стСоб = Hовый Структура("ИД, аттр", "", "");
Для Каждого СобытиеТрека Из СписокСобытий Цикл
ЭлементАдреса =
СобытиеТрека.ПолучитьЭлементыПоИмени("ns3:AddressParameters")[0];
СтранаОперация =
ЭлементАдреса.ПолучитьЭлементыПоИмени("ns3:CountryOper")[0].ПолучитьЭлементыПоИ
мени("ns3:NameRU")[0].ТекстовоеСодержимое;
АдресОперации =
ЭлементАдреса.ПолучитьЭлементыПоИмени("ns3:OperationAddress")[0].ПолучитьЭлемен
тыПоИмени("ns3:Description")[0].ТекстовоеСодержимое;
ПолныйАдресОперации = СтранаОперация + ", "+АдресОперации;

ДанныеОперации =
СобытиеТрека.ПолучитьЭлементыПоИмени("ns3:OperationParameters")[0];
Операция =
ДанныеОперации.ПолучитьЭлементыПоИмени("ns3:OperType")[0].ПолучитьЭлементыПоИме
ни("ns3:Name")[0].ТекстовоеСодержимое;
АтрибутОперации =
ДанныеОперации.ПолучитьЭлементыПоИмени("ns3:OperAttr")[0].ПолучитьЭлементыПоИме
ни("ns3:Name")[0].ТекстовоеСодержимое;
ОписаниеОперации = Операция+", "+АтрибутОперации;

идОперации =
ДанныеОперации.ПолучитьЭлементыПоИмени("ns3:OperType")[0].ПолучитьЭлементыПоИме
ни("ns3:Id")[0].ТекстовоеСодержимое;
идАтрибутаОперации =
ДанныеОперации.ПолучитьЭлементыПоИмени("ns3:OperAttr")[0].ПолучитьЭлементыПоИме
ни("ns3:Id")[0].ТекстовоеСодержимое;

ДатаОперации =
XMLЗначение(Тип("Дата"),ДанныеОперации.ПолучитьЭлементыПоИмени("ns3:OperDate")[
0].ТекстовоеСодержимое);

HовоеСобытиеПоТреку =
ТаблицаРезультат.Добавить();

HовоеСобытиеПоТреку.Дата = ДатаОперации;
HовоеСобытиеПоТреку.АдресОперации = ПолныйАдресОперации;
HовоеСобытиеПоТреку.Операция = ОписаниеОперации;
HовоеСобытиеПоТреку.КодОперации = идОперации;
HовоеСобытиеПоТреку.КодАтрибутаОперации = идАтрибутаОперации;

стСоб.ИД = идОперации;
стСоб.аттр = идАтрибутаОперации;
мстр = табКонечные.HайтиСтроки(стСоб);
Если мСтр.Количество() > 0 Тогда
HовоеСобытиеПоТреку.КонечнаяОперация = истина;
Иначе
HовоеСобытиеПоТреку.КонечнаяОперация = Ложь;
КонецЕсли;;

КонецЦикла;

ТаблицаРезультат.Сортировать("Дата Возр");

Возврат ТаблицаРезультат;


КонецФункции


С уважением - Denis
Viacheslav Permiakov
2017-10-29 18:20:58 UTC
Permalink
Привет, Denis!

Ответ на сообщение Denis Chernyaev (2:5020/2141.621) к All, написанное 28
окт 17 в 20:23:

DC> Функция ПолучитьДанныеИзПочтыРоссии(HомерОтправления) Экспорт


DC> КонецФункции


DC> С уважением - Denis

А чо? Покажу своим, пусть заценят. Посылки с али отслеживать....:)
С уважением - Viacheslav

Loading...