Denis Chernyaev
2017-10-28 17:23:46 UTC
Зд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
Мой скромный гений (с) дарит вам.
Процедура получения статуса трека из ПР. Работает.
Функция Логин()
Возврат ".......";
КонецФункции
Функция Пароль()
Возврат ".......";
КонецФункции
//результат
//дата операции
//адрес, где произведена операция
//сама операция
Функция ПолучитьДанныеИзПочтыРоссии(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