Можно ли как-то протестировать и узнать где в коде ошибка отладчиком пробывала нигде не останавливается.
необходимо зарегистрироваться для просмотра ссылки
Перем Маршруты;
Перем Соединение;
Перем Анализатор;
Функция ПреобразоватьСтрокуВУТФ8(Стр)
Длина=СтрДлина(Стр);
Итог="";
Для Н=1 По Длина Цикл
Знак=Сред(Стр,Н,1);
Код=КодСимв(Знак);
Если Код<128 Тогда
Итог=Итог+Знак;
Иначе
Если (Код>=КодСимв("А"))И(Код<=КодСимв("п")) Тогда
Итог=Итог+Симв(208)+Симв(144+Код-КодСимв("А"));
ИначеЕсли (Код>=КодСимв("р"))И(Код<=КодСимв("я")) Тогда
Итог=Итог+Симв(209)+Симв(128+Код-КодСимв("р"));
ИначеЕсли (Знак="ё") Тогда
Итог=Итог+Симв(209)+Симв(145);
ИначеЕсли (Знак="Ё") Тогда
Итог=Итог+Симв(208)+Симв(129);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Итог;
КонецФункции
Функция ПреобразоватьСтрокуИзУТФ8(Стр)
Длина=СтрДлина(Стр);
Итог="";
Для Н=1 По Длина Цикл
Знак=Сред(Стр,Н,1);
Код=КодСимв(Знак);
Если Код<128 Тогда
Итог=Итог+Знак;
ИначеЕсли (Код>=128)И(Код<192) Тогда
Иначе
Н=Н+1;
Знак2=Сред(Стр,Н,1);
Код2=КодСимв(Знак2);
Если Код=208 Тогда
Если Код2=129 Тогда Итог=Итог+"Ё";
Иначе Итог=Итог+Симв(КодСимв("А")+Код2-144);
КонецЕсли;
ИначеЕсли Код=209 Тогда
Если Код2=145 Тогда Итог=Итог+"ё";
Иначе Итог=Итог+Симв(КодСимв("р")+Код2-128);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Итог;
КонецФункции
//*******************************************
Процедура ПАС()
СтрРез = "";
Соединение.ПолучитьКакСтроку(СокрЛП(БазовыйАдрес) + "/config?req=srv", СтрРез);
АдресСервиса = СтрРез;
КонецПроцедуры
Процедура Авторизация()
СтрРез = "";
СтрЗапрос = "type=login&format=xml&email=" + Логин + "&pass="+Пароль;
Соединение.ОтправитьДляОбработки(АдресСервиса + "/DEX_UserAuthorization", СтрЗапрос, 2, СтрРез, 2);
Если Фл = 1 Тогда
РезультатЗагрузки = ПреобразоватьСтрокуИзУТФ8(СтрРез);
Иначе
РезультатЗагрузки = "";
КонецЕсли;
ДокРез = Анализатор.СоздатьДокумент();
ДокРез.ЗагрузитьИзСтроки(СтрРез);
ИДСессии = ДокРез.ВыбратьУзел("//Session_Ident").Текст;
КонецПроцедуры
Функция УжеЗагружен(ВыбДатаМаршрутов, ВыбНомерМаршрута)
Док = ПолучитьПустоеЗначение("Документ.МАРШРУТНЫЙЛИСТ");
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|ОбрабатыватьДокументы Все;
|Период с ДатаМаршрутов по ДатаМаршрутов;
|ТекДок = Документ.МАРШРУТНЫЙЛИСТ.ТекущийДокумент;
|НомМаршрута = Документ.МАРШРУТНЫЙЛИСТ.НомерМаршрута;
|Группировка ТекДок;
|"//}}ЗАПРОС
;
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат Док;
КонецЕсли;
Пока Запрос.Группировка()=1 Цикл
Если (Запрос.НомМаршрута = ВыбНомерМаршрута) И (Запрос.ТекДок.ПометкаУдаления() <> 1) Тогда
Док = Запрос.ТекДок;
Возврат Док;
КонецЕсли;
КонецЦикла;
Возврат Док;
КонецФункции // гл
//*******************************************
Процедура ИзменениеСпМЛ(зн)
Если зн=1 тогда
Конт = "";
ОткрытьПодбор("Журнал.Транспорт",,Конт);
//УстановитьИнтервал (ДатаДок, ДатаДок,1);
ИначеЕсли зн=2 тогда
Стр = ВыбМЛ.ТекущаяСтрока();
Если стр>0 тогда
ВыбМЛ.УдалитьЗначение(Стр);
КонецЕсли;
ИначеЕсли зн=3 тогда
ВыбМЛ.УдалитьВсе();
КонецЕсли;
КонецПроцедуры
//*******************************************
Процедура ОбработкаПодбора(Эл,Конт)
Если Эл.Вид()="МАРШРУТНЫЙЛИСТ" Тогда
Если ВыбМЛ.Принадлежит(Эл.ТекущийДокумент()) = 1 Тогда
Сообщить("Этот Документ уже присутствует в списке");
СтатусВозврата(0);
Возврат;
КонецЕсли;
ВыбМЛ.ДобавитьЗначение(Эл.ТекущийДокумент(), "МЛ № "+Эл.ТекущийДокумент().НомерДок+ "("+Эл.ТекущийДокумент().ДатаДок+")"+Эл.ТекущийДокумент().Менеджер);
КонецЕсли;
КонецПроцедуры
//*******************************************
Процедура ЗаполнитьПоБыбМЛиОтправить()
ДокЗапрос = Анализатор.СоздатьДокумент();
ArrayOfDEX_Import = ДокЗапрос.СоздатьПодчиненныйЭлемент("ArrayOfDEX_Import");
ТТ.Очистить();
ТТ.НоваяКолонка("МаршрутныйЛист", "Строка", 25, ," Документ");
ТТ.НоваяКолонка("АвтомобильВодитель", "Строка", 30,,"Автомобиль/Водитель");
ТТ.НоваяКолонка("Клиент", "Строка",50,,"Клиент (тип)");
ТТ.НоваяКолонка("Заявка");
ТТ.НоваяКолонка("НомерЗаявки");
ТТ.НоваяКолонка("Вес","Число", 10,3);
ТТ.НоваяКолонка("Пробег","Число", 10,2);
ТТ.НоваяКолонка("Приезд", "Строка", 10);
ТТ.НоваяКолонка("Время","Число", 10,0);
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|ОбрабатыватьДокументы Проведенные;
|Период с ДатаМаршрутов по ДатаМаршрутов;
|ТекДок = Документ.МАРШРУТНЫЙЛИСТ.ТекущийДокумент;
|Водитель = Документ.МАРШРУТНЫЙЛИСТ.Водитель;
|Экспедитор = Документ.МАРШРУТНЫЙЛИСТ.Экспедитор;
|НомерЗаявкиТА=Документ.МАРШРУТНЫЙЛИСТ.НомерЗаявкиТА;
|Клиент = Документ.МАРШРУТНЫЙЛИСТ.Клиент;
|Заявка = Документ.МАРШРУТНЫЙЛИСТ.Заявка;
|Вес = Документ.МАРШРУТНЫЙЛИСТ.Заявка.Вес;
|Группировка ТекДок;
|Группировка Клиент без групп;
|Группировка НомерЗаявкиТА;
|Условие(ТекДок в ВыбМЛ);
|"//}}ЗАПРОС
;
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Пока Запрос.Группировка("ТекДок")=1 Цикл
Пока Запрос.Группировка("Клиент")=1 Цикл
Пока Запрос.Группировка("НомерЗаявкиТА")=1 Цикл
ТТ.НоваяСтрока();
ТТ.Клиент =Запрос.Клиент.Наименование;
ТТ.НомерЗаявки=Запрос.НомерЗаявкиТА;
ТТ.МаршрутныйЛист = ""+Запрос.ТекДок.НомерДок+ " от "+Запрос.ТекДок.ДатаДок;
ТТ.АвтомобильВодитель = ""+Запрос.ТекДок.Автомобиль.Наименование+" / "+Запрос.ТекДок.Водитель.Наименование;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Пока Запрос.Группировка("ТекДок")=1 Цикл
Пока Запрос.Группировка("Клиент")=1 Цикл
DEX_Import = ArrayOfDEX_Import.СоздатьПодчиненныйЭлемент("DEX_Import");
Comp_Id = DEX_Import.СоздатьПодчиненныйЭлемент("Comp_Id");
Comp_Id.Значение = Запрос.Клиент.КодСоответствия;
Comp_Name = DEX_Import.СоздатьПодчиненныйЭлемент("Comp_Name");
Comp_Name.Текст =Запрос.Клиент. Наименование;
Address = DEX_Import.СоздатьПодчиненныйЭлемент("Address");
Address.Текст =Запрос.Клиент.ПочтовыйАдрес;
lat = DEX_Import.СоздатьПодчиненныйЭлемент("lat");
lat.Значение =Число(Запрос.Клиент.Широта); // Широта, если известна
lng = DEX_Import.СоздатьПодчиненныйЭлемент("lng");
lng.Значение =Число(Запрос.Клиент.Долгота); // Долгота, если известна
TimeWork_Beg = DEX_Import.СоздатьПодчиненныйЭлемент("TimeWork_Beg");
TimeWork_Beg.Текст = СокрЛП(Запрос.Клиент.ВремяРаботыНачало);
TimeWork_End = DEX_Import.СоздатьПодчиненныйЭлемент("TimeWork_End");
TimeWork_End.Текст = СокрЛП(Запрос.Клиент.ВремяРаботыКонец);
TimeBreak_Beg = DEX_Import.СоздатьПодчиненныйЭлемент("TimeBreak_Beg");
TimeBreak_Beg.Текст =Сред((Запрос.Клиент.ВремяОбедаНачало), 12,5);
TimeBreak_End = DEX_Import.СоздатьПодчиненныйЭлемент("TimeBreak_End");
TimeBreak_End.Текст = Сред((Запрос.Клиент.ВремяОбедаКонец), 12,5);
Unload_Time = DEX_Import.СоздатьПодчиненныйЭлемент("Unload_Time");
Unload_Time.Значение = СокрЛП(Запрос.ТекДок.ОрганизационоеВремя);
// НомерЗаявкиТА="НЕТ"+"-"+(Запрос.Клиент.КодСоответствия+ДатаМаршрутов);
Request_Num = DEX_Import.СоздатьПодчиненныйЭлемент("Request_Num");
Request_Num.Текст = Запрос.ТекДок.НомерЗаявкиТА;
QtyW = DEX_Import.СоздатьПодчиненныйЭлемент("QtyW");
QtyW.Значение = Запрос.Вес;
CompGroup_Id = DEX_Import.СоздатьПодчиненныйЭлемент("CompGroup_Id");
CompGroup_Id.Значение = Запрос.Клиент.Маршрут.КодСоответствия;
CompGroup_Name = DEX_Import.СоздатьПодчиненныйЭлемент("CompGroup_Name");
CompGroup_Name.Текст =Запрос.Клиент. Маршрут.Наименование;
КонецЦикла;
КонецЦикла;
СтрРез = "";
//"c:\response.xml";
//Текст = СоздатьОбъект("Текст");
//Текст.ДобавитьСтроку("Session_Ident="+ИДСессии+"&Date_Data="+Формат(ДатаМаршрутов, "ДДДММГГГГ")+"&format=xml&DTRoutes=<?xml version='1.0'?>");
///Текст.ДобавитьСтроку(ПреобразоватьСтрокуВУТФ8(ДокЗапрос.ЭлементДокумента.ПредставлениеXML));
//
//ИмяФайлаЗапроса = "c:\query.txt";
//Текст.Записать(ИмяФайлаЗапроса);
//
ПараметрыЗапроса = "Session_Ident="+ИДСессии+
"&Date_Data="+Формат(ДатаМаршрутов, "ДДДММГГГГ")+"&format=xml&Comps=<?xml version=""1.0""?>" +
ПреобразоватьСтрокуВУТФ8(ДокЗапрос.ЭлементДокумента.ПредставлениеXML);
Соединение.ОтправитьДляОбработки(АдресСервиса + "/DEX_Import_Request_JSON", ПараметрыЗапроса, 2, СтрРез, 1);
РезультатЗагрузки = ПреобразоватьСтрокуИзУТФ8(СтрРез);
КонецПроцедуры //**************************************
Процедура ВыгрузитьИПровестиМаршруты()
// ДокЗапрос = Анализатор.СоздатьДокумент();
// ДокЗапрос1 = Анализатор.СоздатьДокумент();
ТТ.Очистить();
ТТ.НоваяКолонка("МаршрутныйЛист", "Строка", 25, ," Документ");
ТТ.НоваяКолонка("АвтомобильВодитель", "Строка", 30,,"Автомобиль/Водитель");
ТТ.НоваяКолонка("Клиент", "Строка",50,,"Клиент (тип)");
ТТ.НоваяКолонка("Заявка");
ТТ.НоваяКолонка("НомерЗаявки");
ТТ.НоваяКолонка("Вес","Число", 10,3);
ТТ.НоваяКолонка("Пробег","Число", 10,2);
ТТ.НоваяКолонка("Приезд", "Строка", 10);
ТТ.НоваяКолонка("Время","Число", 10,0);
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|ОбрабатыватьДокументы Проведенные;
|Период с ДатаМаршрутов по ДатаМаршрутов;
|ТекДок = Документ.МАРШРУТНЫЙЛИСТ.ТекущийДокумент;
|Водитель = Документ.МАРШРУТНЫЙЛИСТ.Водитель;
|Экспедитор = Документ.МАРШРУТНЫЙЛИСТ.Экспедитор;
|НомерЗаявкиТА=Документ.МАРШРУТНЫЙЛИСТ.НомерЗаявкиТА;
|НомерСтроки=Документ.МАРШРУТНЫЙЛИСТ.ТекущийДокумент.НомерСтроки;
|Клиент = Документ.МАРШРУТНЫЙЛИСТ.Клиент;
|Заявка = Документ.МАРШРУТНЫЙЛИСТ.Заявка;
|Вес = Документ.МАРШРУТНЫЙЛИСТ.Заявка.Вес;
|ОрганизационоеВремя = Документ.МАРШРУТНЫЙЛИСТ.ОрганизационоеВремя;
|Группировка ТекДок;
|Группировка Клиент без групп;
|Группировка НомерЗаявкиТА;
|Условие(ТекДок в ВыбМЛ);
|"//}}ЗАПРОС
;
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Пока Запрос.Группировка("ТекДок")=1 Цикл
Пока Запрос.Группировка("Клиент")=1 Цикл
Пока Запрос.Группировка("НомерЗаявкиТА")=1 Цикл
ТТ.НоваяСтрока();
ТТ.Клиент =Запрос.Клиент.Наименование;
ТТ.НомерЗаявки=Запрос.НомерЗаявкиТА;
ТТ.МаршрутныйЛист = ""+Запрос.ТекДок.НомерДок+ " от "+Запрос.ТекДок.ДатаДок;
ТТ.АвтомобильВодитель = ""+Запрос.ТекДок.Автомобиль.Наименование+" / "+Запрос.ТекДок.Водитель.Наименование;
ТТ.Заявка=Запрос.Заявка;
КонецЦикла;
КонецЦикла;
КонецЦикла;
ДокЗапрос = Анализатор.СоздатьДокумент();
ArrayOfDEX_Import_Routes = ДокЗапрос.СоздатьПодчиненныйЭлемент("ArrayOfDEX_Import_Routes");
//newAttr = ДокЗапрос.createAttribute("xmlns:xsd");
//newAttr.value = "http://www.w3.org/2001/XMLSchema";
//ArrayOfDEX_Import_Routes.setAttributeNode(newAttr);
//
//newAttr = ДокЗапрос.createAttribute("xmlns:xsi");
//newAttr.value = "http://www.w3.org/2001/XMLSchema-instance";
//ArrayOfDEX_Import_Routes.setAttributeNode(newAttr);
Пока Запрос.Группировка("ТекДок")=1 Цикл
DEX_Import = ArrayOfDEX_Import_Routes.СоздатьПодчиненныйЭлемент("DEX_Import_Routes");
Route_Num = DEX_Import.СоздатьПодчиненныйЭлемент("Route_Num");
Route_Num.Текст = Запрос.ТекДок.НомерДок;
Auto_Id = DEX_Import.СоздатьПодчиненныйЭлемент("Auto_Id");
Auto_Id.Значение = Число(Запрос.ТекДок.Автомобиль.Код);
Driver_Id= DEX_Import.СоздатьПодчиненныйЭлемент("Driver_Id");
Driver_Id.Значение = Число(Запрос.ТекДок.Водитель.Код);
Dispatcher_Id= DEX_Import.СоздатьПодчиненныйЭлемент("Dispatcher_Id");
Dispatcher_Id.Значение = Число(Запрос.ТекДок.Экспедитор.Код);
RouteTime_B= DEX_Import.СоздатьПодчиненныйЭлемент("RouteTime_B");
// RouteTime_B.Текст = СокрЛП(Запрос.ТекДок.Выезд);
RouteTime_B.Текст = СокрЛП("08:00");
НомерСтроки2=Запрос.ТекДок.Итог("НомерСтроки3");
Pos_Id = DEX_Import.СоздатьПодчиненныйЭлемент("Pos_Id");
Pos_Id.Значение = Число(НомерСтроки2);
Источник="НомерМаршрута-"+Route_Num.Значение+"- Авто "+Auto_Id.Значение+" Водитель- "+Driver_Id.Значение+" Экспедитор- "+Dispatcher_Id.Значение+
" Выезд- "+RouteTime_B.Текст+ " номерСтроки- "+ Pos_Id.Значение;
Сообщить(Источник);
КонецЦикла;
ДокЗапрос1 = Анализатор.СоздатьДокумент();
ArrayOfDEX_Import_Comps = ДокЗапрос1.СоздатьПодчиненныйЭлемент("ArrayOfDEX_Import_Comps");
//newAttr = ДокЗапрос1.createAttribute("xmlns:xsd");
//newAttr.value = "http://www.w3.org/2001/XMLSchema";
//ArrayOfDEX_Import_Comps.setAttributeNode(newAttr);
//
//newAttr = ДокЗапрос1.createAttribute("xmlns:xsi");
//newAttr.value = "http://www.w3.org/2001/XMLSchema-instance";
//ArrayOfDEX_Import_Comps.setAttributeNode(newAttr);
Пока Запрос.Группировка("ТекДок")=1 Цикл
Пока Запрос.Группировка("Клиент")=1 Цикл
Пока Запрос.Группировка("НомерЗаявкиТА")=1 Цикл
////////по маршрутному листу
DEX_Import1 = ArrayOfDEX_Import_Comps.СоздатьПодчиненныйЭлемент("DEX_Import_Comps");
Route_Num = DEX_Import1.СоздатьПодчиненныйЭлемент("Route_Num");
//Если ПустоеЗначение(Route_Num.Текст)=0 Тогда
//
// Route_Num.Текст="";
//Иначе;
//
Route_Num.Текст = Запрос.ТекДок.НомерДок;
//
//КонецЕсли;
//
Pos_Id = DEX_Import1.СоздатьПодчиненныйЭлемент("Pos_Id");
Pos_Id.Значение =Запрос.НомерСтроки;
Comp_Id = DEX_Import1.СоздатьПодчиненныйЭлемент("Comp_Id");
Comp_Id.Значение = Запрос.Клиент.КодСоответствия;
CompType_Id = DEX_Import1.СоздатьПодчиненныйЭлемент("CompType_Id");
CompType_Id.Значение = Число(0);
Comp_Name =DEX_Import1.СоздатьПодчиненныйЭлемент("Comp_Name");
Comp_Name.Текст =Запрос.Клиент.Наименование;
Address = DEX_Import1.СоздатьПодчиненныйЭлемент("Address");
Address.Текст =Запрос.Клиент.ПочтовыйАдрес;
Unload_Time = DEX_Import1.СоздатьПодчиненныйЭлемент("Unload_Time");
Unload_Time.Значение = Число(Запрос.ОрганизационоеВремя);
Request_Num = DEX_Import.СоздатьПодчиненныйЭлемент("Request_Num");
Request_Num.Текст = Запрос.НомерЗаявкиТА;
QtyW = DEX_Import.СоздатьПодчиненныйЭлемент("QtyW");
QtyW.Значение =Число( Запрос.Вес);
ProductGroup_Id = DEX_Import.СоздатьПодчиненныйЭлемент("ProductGroup_Id");
ProductGroup_Id.Значение = 0; // Группа товаров
Источник1="Список накладных"+"НомерМаршрута-"+Route_Num.Значение+" Клиент- "+Comp_Id.Значение +" Типточки- "+CompType_Id.Значение+" КлиентНаимен- "+Comp_Name.Текст+
" Адрес- "+Address.Текст+ " номерСтроки- "+ Pos_Id.Значение+ " номерЗаявки- "+ Request_Num.Текст+" вес- "+ QtyW.Значение +" орг.вермя- "+ Unload_Time.Значение;
Сообщить(Источник1);
КонецЦикла;
КонецЦикла;
КонецЦикла;
СтрРез = "";
ПараметрыЗапроса ="Session_Ident="+ИДСессии+
"&Date_Data="+Формат(ДатаМаршрутов, "ДДДММГГГГ")+"&Add_Template=0&TSM_Calc=1&Remove=1&SyncComps=1&format=xml&Routes=<?xml version=""1.0""?>"+
ПреобразоватьСтрокуИзУТФ8(ДокЗапрос.ЭлементДокумента.ПредставлениеXML)+
"&Comps=<?xml version=""1.0""?>"+ПреобразоватьСтрокуИзУТФ8(ДокЗапрос1.ЭлементДокумента.ПредставлениеXML);
Соединение.ОтправитьДляОбработки(АдресСервиса + "/DEX_Import_Routes_JSON", ПараметрыЗапроса, 2, СтрРез, 1);
РезультатЗагрузки = ПараметрыЗапроса;
ОтветЗагрузки = ПреобразоватьСтрокуИзУТФ8(СтрРез);
КонецПроцедуры //**************************************
Процедура ВыгрузитьКонтрагентов()
ТТ.Очистить();
ДокЗапрос = Анализатор.СоздатьДокумент();
ArrayOfDEX_Import = ДокЗапрос.СоздатьПодчиненныйЭлемент("ArrayOfDEX_Import");
// Цикл по выборке
// Для примера используем один эдемент
Запрос=СоздатьОбъект("Запрос");
ТекстЗапроса="
|ПЕРИОД С ДатаМаршрутов По ДатаМаршрутов;
|Клиент = Справочник.Контрагенты.ТекущийЭлемент;
|Группировка Клиент без групп упорядочить по Клиент.Наименование;
|";
СписокКонтрагентов = СоздатьОбъект("СписокЗначений");
Если глФильтрПоСправочнику("Контрагенты",0,0,ВыбКатегорияКонтрагентов,0,0,СписокКонтрагентов,ТекстЗапроса,0,0,"Клиент,,,СписокКонтрагентов,,,,,")=0 Тогда
Возврат;
КонецЕсли;
Если Запрос.Выполнить(ТекстЗапроса)=0 тогда
Предупреждение("Запрос по Партиям не выполнился!");
Возврат;
КонецЕсли;
Пока Запрос.Группировка("Клиент")=1 Цикл
DEX_Import = ArrayOfDEX_Import.СоздатьПодчиненныйЭлемент("DEX_Import");
Comp_Id = DEX_Import.СоздатьПодчиненныйЭлемент("Comp_Id");
Comp_Id.Значение = Запрос.Клиент.КодСоответствия;
Comp_Name = DEX_Import.СоздатьПодчиненныйЭлемент("Comp_Name");
Comp_Name.Текст =Запрос.Клиент. Наименование;
Address = DEX_Import.СоздатьПодчиненныйЭлемент("Address");
Address.Текст =Запрос.Клиент.ПочтовыйАдрес;
lat = DEX_Import.СоздатьПодчиненныйЭлемент("lat");
lat.Значение =Число(Запрос.Клиент.Широта1); // Широта, если известна
lng = DEX_Import.СоздатьПодчиненныйЭлемент("lng");
lng.Значение =Число(Запрос.Клиент.Долгота1); // Долгота, если известна
TimeWork_Beg = DEX_Import.СоздатьПодчиненныйЭлемент("TimeWork_Beg");
TimeWork_Beg.Текст = СокрЛП(Запрос.Клиент.ВремяРаботыНачало);
TimeWork_End = DEX_Import.СоздатьПодчиненныйЭлемент("TimeWork_End");
TimeWork_End.Текст = СокрЛП(Запрос.Клиент.ВремяРаботыКонец);
TimeBreak_Beg = DEX_Import.СоздатьПодчиненныйЭлемент("TimeBreak_Beg");
TimeBreak_Beg.Текст =Сред((Запрос.Клиент.ВремяОбедаНачало), 12,5);
TimeBreak_End = DEX_Import.СоздатьПодчиненныйЭлемент("TimeBreak_End");
TimeBreak_End.Текст = Сред((Запрос.Клиент.ВремяОбедаКонец), 12,5);
// Unload_Time = DEX_Import.СоздатьПодчиненныйЭлемент("Unload_Time");
// Unload_Time.Значение = СокрЛП(Запрос.ТекДок.ОрганизационоеВремя);
//
НомерЗаявкиТА2=(Запрос.Клиент.КодСоответствия+ДатаМаршрутов);
Request_Num = DEX_Import.СоздатьПодчиненныйЭлемент("Request_Num");
Request_Num.Текст = НомерЗаявкиТА2;
CompGroup_Id = DEX_Import.СоздатьПодчиненныйЭлемент("CompGroup_Id");
CompGroup_Id.Значение = Запрос.Клиент.Маршрут.КодСоответствия;
CompGroup_Name = DEX_Import.СоздатьПодчиненныйЭлемент("CompGroup_Name");
CompGroup_Name.Текст =Запрос.Клиент. Маршрут.Наименование;
КонецЦикла;
СтрРез = "";
//"c:\response.xml";
//Текст = СоздатьОбъект("Текст");
//Текст.ДобавитьСтроку("Session_Ident="+ИДСессии+"&Date_Data="+Формат(ДатаМаршрутов, "ДДДММГГГГ")+"&format=xml&Comps=<?xml version='1.0'?>");
//Текст.ДобавитьСтроку(ПреобразоватьСтрокуВУТФ8(ДокЗапрос.ЭлементДокумента.ПредставлениеXML));
//
//ИмяФайлаЗапроса = "c:\query.txt";
//Текст.Записать(ИмяФайлаЗапроса);
ПараметрыЗапроса = "Session_Ident="+ИДСессии+
"&Date_Data="+Формат(ДатаМаршрутов, "ДДДММГГГГ")+"&format=xml&Comps=<?xml version=""1.0""?>" +
ПреобразоватьСтрокуВУТФ8(ДокЗапрос.ЭлементДокумента.ПредставлениеXML);
Соединение.ОтправитьДляОбработки(АдресСервиса + "/DEX_Import_Request_JSON", ПараметрыЗапроса, 2, СтрРез, 1);
РезультатЗагрузки = ПреобразоватьСтрокуИзУТФ8(СтрРез);
ОтветЗагрузки = ПреобразоватьСтрокуИзУТФ8(СтрРез);
КонецПроцедуры //**************************************
Процедура ПолучитьМаршруты()
//очищаем таблицу значений
ТТ.Очистить();
ТТ.НоваяКолонка("МаршрутныйЛист", "Строка", 25, ," Документ");
ТТ.НоваяКолонка("АвтомобильВодитель", "Строка", 30,,"Автомобиль/Водитель");
ТТ.НоваяКолонка("Клиент", "Строка",50,,"Клиент (тип)");
ТТ.НоваяКолонка("Заявка");
ТТ.НоваяКолонка("НомерЗаявки");
ТТ.НоваяКолонка("Вес","Число", 10,3);
ТТ.НоваяКолонка("Пробег","Число", 10,2);
ТТ.НоваяКолонка("Приезд", "Строка", 10);
ТТ.НоваяКолонка("Время","Число", 10,0);
СтрРез = "";
Соединение.ПолучитьКакСтроку(АдресСервиса + "/DEX_Export_Response_JSON?Session_Ident="+ИДСессии+"&Date_Data="+Формат(ДатаМаршрутов, "ДДДММГГГГ")+"&format=xml"+"&AllComps=1&CompInfo=1", СтрРез);
Если Фл = 1 Тогда
РезультатЗагрузки = ПреобразоватьСтрокуИзУТФ8(СтрРез);
Иначе
РезультатЗагрузки = "";
КонецЕсли;
Результат = СтрРез;
XMLParser = СоздатьОбъект("Msxml2.DOMDocument");
XMLParser.async = 0;
XMLParser.loadXML(СтрРез);
РежимСоединения = XMLParser.selectNodes("//ErrorResponse").item(0).Text;
Если XMLParser.selectNodes("//ErrorResponse").item(0).Text <> "OK" Тогда
Предупреждение("Ошибка. Данные не загружены.");
Возврат;
Иначе
Если Фл = 0 Тогда
РезультатЗагрузки = XMLParser.selectNodes("//ErrorResponse").item(0).Text;
КонецЕсли;
КонецЕсли;
// нужно перебирать маршруты и создавать новые Документы
ТЗМаршрутов = СоздатьОбъект("ТаблицаЗначений");
ТЗМаршрутов.НоваяКолонка("НомерМаршрута");
ТЗМаршрутов.НоваяКолонка("АвтоИд");
ТЗМаршрутов.НоваяКолонка("КолвоТочек");
ТЗМаршрутов.НоваяКолонка("ВодительИд");
ТЗМаршрутов.НоваяКолонка("ЭкспедиторИд");
ТЗМаршрутов.НоваяКолонка("ВремяНач");
ТЗМаршрутов.НоваяКолонка("ВремяОкон");
ТЗМаршрутов.НоваяКолонка("ВремяДвиженияМин");
ТЗМаршрутов.НоваяКолонка("ПробегМетр");
Док = СоздатьОбъект("Документ.МАРШРУТНЫЙЛИСТ");
Док1 = СоздатьОбъект("Документ.МАРШРУТНЫЙЛИСТ");
ДокЗаявка = СоздатьОбъект("Документ.РасходнаяНакладная");
СпрМашин = СоздатьОбъект("Справочник.Автомобили");
СпрВодители = СоздатьОбъект("Справочник.ВодительЭкспедиторМенеджер");
СпрКлиентов = СоздатьОбъект("Справочник.Контрагенты");
SelNodes = XMLParser.selectNodes("//DEX_Routes");
Для ххх = 0 По SelNodes.Length - 1 Цикл
nodeNode = SelNodes.Item(ххх);
Если nodeNode.childNodes.length > 0 Тогда
ТЗМаршрутов.НоваяСтрока();
Для хх = 0 По nodeNode.childNodes.length - 1 Цикл
Если nodeNode.childNodes(хх).nodeName = "Route_Num" Тогда
ТЗМаршрутов.НомерМаршрута = Число(nodeNode.childNodes(хх).Text);
ИначеЕсли nodeNode.childNodes(хх).nodeName = "Auto_Id" Тогда
ТЗМаршрутов.АвтоИд = Число(nodeNode.childNodes(хх).Text);
ИначеЕсли nodeNode.childNodes(хх).nodeName = "Count_Comps" Тогда
ТЗМаршрутов.КолвоТочек = Число(nodeNode.childNodes(хх).Text);
ИначеЕсли nodeNode.childNodes(хх).nodeName = "Driver_Id" Тогда
ТЗМаршрутов.ВодительИд = Число(nodeNode.childNodes(хх).Text);
ИначеЕсли nodeNode.childNodes(хх).nodeName = "Dispatcher_Id" Тогда
ТЗМаршрутов.ЭкспедиторИд = Число(nodeNode.childNodes(хх).Text);
ИначеЕсли nodeNode.childNodes(хх).nodeName = "RouteTime_B" Тогда
ТЗМаршрутов.ВремяНач = Число(nodeNode.childNodes(хх).Text);
ИначеЕсли nodeNode.childNodes(хх).nodeName = "RouteTime_E" Тогда
ТЗМаршрутов.ВремяОкон = Число(nodeNode.childNodes(хх).Text);
ИначеЕсли nodeNode.childNodes(хх).nodeName = "Travel_Duration" Тогда
ТЗМаршрутов.ВремяДвиженияМин = Число(nodeNode.childNodes(хх).Text);
ИначеЕсли nodeNode.childNodes(хх).nodeName = "distance" Тогда
ТЗМаршрутов.ПробегМетр = Число(nodeNode.childNodes(хх).Text);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
ТекМаршрут = 0;
SelNodes2 = XMLParser.selectNodes("//DEX_Comps");
Для ххх = 0 По SelNodes2.Length - 1 Цикл
nodeNode2 = SelNodes2.Item(ххх);
Если nodeNode2.childNodes.length > 0 Тогда
Если Число(nodeNode2.selectNodes ("//Route_Num").item(ххх).Text) <> ТекМаршрут Тогда
ТТ.НоваяСтрока();
ТекМаршрут = Число(nodeNode2.selectNodes ("//Route_Num").item(ххх).Text);
Попытка
Док.Записать();
Исключение
КонецПопытки;
//проверка если уже импортирован маршрут
ТекДокМаршрут = УжеЗагружен (ДатаМаршрутов, ТЗМаршрутов.НомерМаршрута);
Если ПустоеЗначение(ТекДокМаршрут) = 1 Тогда
Док.Новый();
Док.ДатаДок= ДатаМаршрутов;
Док.Записать();
Иначе
Если Вопрос("Маршрут № "+ТекМаршрут+" уже записан (Маршрутный лист № "+ТекДокМаршрут.Номердок+"). ПЕРЕЗАПИСАТЬ?", "Да+Нет") = "Да" Тогда
Если Док1.НайтиПономеру(ТекДокМаршрут.НомерДок,ДатаМаршрутов) = 1 Тогда
Док = Док1;
Если Док.Проведен()=1 Тогда
Док.СделатьНеПроведенным();
КонецЕсли;
Док.УдалитьСтроки();
Док.Записать();
КонецЕсли;
КонецЕсли;
КонецЕсли;
Попытка
Док.Записать();
Сообщить("Записан документ "+ Док);
Исключение
КонецПопытки;
Если ПустоеЗначение(Док.номердок) = 0 Тогда
Док.ДатаДок= ДатаМаршрутов;
Док.Автор = ИмяПользователя();
Док.Комментарий = "Автозагрузка";
Док.НомерМаршрута = ТЗМаршрутов.НомерМаршрута;
стр = 0;
Если ТЗМаршрутов.НайтиЗначение(ТекМаршрут, стр,"НомерМаршрута") = 1 Тогда
ТЗМаршрутов.ПолучитьСтрокуПоНомеру(стр);
Если СпрМашин.НайтиПоКоду(ТЗМаршрутов.АвтоИд) <> 1 Тогда
Сообщить("Не найден автомобиль с кодом "+ ТЗМаршрутов.АвтоИд);
Иначе
Док.Автомобиль = СпрМашин.ТекущийЭлемент();
КонецЕсли;
Если СпрВодители.НайтиПоКоду(ТЗМаршрутов.ВодительИд) <> 1 Тогда
Сообщить("Не найден водитель с кодом "+ ТЗМаршрутов.ВодительИд);
Иначе
Док.Водитель = СпрВодители.ТекущийЭлемент();
КонецЕсли;
Если СпрВодители.НайтиПоКоду(ТЗМаршрутов.ЭкспедиторИд) <> 1 Тогда
Сообщить("Не найден экспедитор с кодом "+ ТЗМаршрутов.ЭкспедиторИд);
Иначе
Док.Экспедитор = СпрВодители.ТекущийЭлемент();
КонецЕсли;
Док.ДатаВыезда = ДатаМаршрутов;
Док.ДатаВозвр = ДатаМаршрутов;
Док.Выезд = Число(""+Сред(ТЗМаршрутов.ВремяНач,9,2) + "." + Сред(ТЗМаршрутов.ВремяНач,11,2) );
Док.Возвр = Число(""+Сред(ТЗМаршрутов.ВремяОкон,9,2) + "." + Сред(ТЗМаршрутов.ВремяОкон,11,2) );
КолвоМин = ТЗМаршрутов.ВремяОкон - ТЗМаршрутов.ВремяНач;
Док.ВсегоВРаботеВ = КолвоМин/100;
Док.ТочекМаршрута = ТЗМаршрутов.КолвоТочек;
Док.ПробегПлан = ТЗМаршрутов.ПробегМетр/1000;
Док.Длительность = КолвоМин / 100;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ПустоеЗначение(Док.номердок) = 0 Тогда
Док.НоваяСтрока();
ТекКлиент = Число(nodeNode2.selectNodes ("//Comp_Id").item(ххх).Text);
Если СпрКлиентов.НайтиПоРеквизиту("КодСоответствия",ТекКлиент,1) = 0 Тогда
// Сообщить("Контрагент с кодом соответствия "+ ТекКлиент+" не найден.");
Сообщить("Контрагент с кодом соответствия "+ ТекКлиент+" не найден. Будет создан.");
СпрКлиентов.Новый();
СпрКлиентов.Наименование = ПреобразоватьСтрокуИзУТФ8(СокрЛП(nodeNode2.selectNodes ("//Comp_Name").item(ххх).Text));
СпрКлиентов.ПочтовыйАдрес = ПреобразоватьСтрокуИзУТФ8(СокрЛП(nodeNode2.selectNodes ("//Address").item(ххх).Text));
СпрКлиентов.КодСоответствия = Число(nodeNode2.selectNodes ("//Comp_Id").item(ххх).Text);
СпрКлиентов.Широта = Число(nodeNode2.selectNodes ("//lat").item(ххх).Text);
СпрКлиентов.Долгота = Число(nodeNode2.selectNodes ("//lng").item(ххх).Text);
Если Число(nodeNode2.selectNodes ("//CompType_Id").item(ххх).Text) = 1 Тогда
СпрКлиентов.НеИспользуется = 1;
КонецЕсли;
СпрКлиентов.Записать();
КонецЕсли;
Док.Клиент = СпрКлиентов.ТекущийЭлемент();
ТипСклад = "Склад";
Если Число(nodeNode2.selectNodes ("//CompType_Id").item(ххх).Text) = 0 Тогда
ТипСклад = "";
ТекЗаявка = ПреобразоватьСтрокуИзУТФ8(СокрЛП(nodeNode2.selectNodes ("//Request_Num").item(ххх).Text));
Если ТекЗаявка <> "" Тогда
Если ДокЗаявка.НайтиПоНомеру(ТекЗаявка,ДатаМаршрутов)=0 Тогда
Сообщить("Не найден документ № "+ ТекЗаявка);
Иначе
Док.Заявка = ДокЗаявка.ТекущийДокумент();
Док.СуммаЗаявки = Док.Заявка.Итог("СуммаСНДС");
Док.Деньги = Док.Заявка.Итог("Деньги");
Док.Доход = Док.Заявка.Итог("Доход");
КонецЕсли;
КонецЕсли;
КонецЕсли;
Док.Вес = Число(nodeNode2.selectNodes ("//QtyW").item(ххх).Text);
Док.Приезд = Сред((nodeNode2.selectNodes ("//Time_Arrival").item(ххх).Text ), 12,5); //выбираем только время;
Док.ВрВыгДв = Число(nodeNode2.selectNodes ("//Unload_Time").item(ххх).Text) + Число(nodeNode2.selectNodes ("//Travel_Time").item(ххх).Text);
Док.НомерЗаявкиТА = Число(nodeNode2.selectNodes ("//Request_Num").item(ххх).Text);
Док.ПробегПланТ = Число(nodeNode2.selectNodes ("//distance").item(ххх).Text)/1000;
//*******
Док.ИтогоДоход=Формат(Док.Итог("Доход"),"Ч12.2");
Док.ИтогоДеньги=Формат(Док.Итог("Деньги"),"Ч12.2");
//*******
Док.Записать();
ТТ.НоваяСтрока();
ТТ.АвтомобильВодитель = ""+Док.Автомобиль.Наименование+" / "+Док.Водитель.Наименование;
ТТ.МаршрутныйЛист = ""+Док.НомерДок+ " от "+Док.ДатаДок+ "("+Док.НомерМаршрута+")";
Если ТипСклад = "Склад" Тогда
ТТ.Клиент = ""+Док.Клиент+" ("+ТипСклад+")";
Иначе
ТТ.Клиент = ""+Док.Клиент;
КонецЕсли;
ТТ.НомерЗаявки= Док.НомерЗаявкиТА;
ТТ.Заявка = Док.Заявка;
ТТ.Вес = Док.Вес;
ТТ.Приезд = Док.Приезд;
ТТ.Время = Док.ВрВыгДв;
ТТ.Пробег = Док.ПробегПланТ;
ТТ.НомерЗаявки =Док.Заявка.НомерДок;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Попытка
Док.Записать();
Исключение
КонецПопытки;
КонецПроцедуры
Процедура ПриВыбореЗакладки(Выб)
Если Выб=1 Тогда
Форма.ИспользоватьСлой("Основной,Общий");
иначеесли Выб=2 тогда
Форма.ИспользоватьСлой("ТекстЗагрузки,Общий");
КонецЕсли;
конецпроцедуры
Процедура ПриОткрытии()
ФлЗагрузитьВнешнююКомпоненту = 0;
Если ЗагрузитьВнешнююКомпоненту("C:\Users\Public\CARS\v7plus.dll") = 1 Тогда
ФлЗагрузитьВнешнююКомпоненту = 1;
ИначеЕсли ЗагрузитьВнешнююКомпоненту("C:\v7plus.dll") = 1 Тогда
ФлЗагрузитьВнешнююКомпоненту = 1;
КонецЕсли;
Если ФлЗагрузитьВнешнююКомпоненту = 0 Тогда
Сообщить("Не удалось обнаружить компоненту v7plus.dll!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
Попытка
Соединение = СоздатьОбъект("Addin.V7HttpReader");
Соединение.КоличествоПопытокАвторизации = 3;
Исключение
Сообщить("Не удалось создать объект Addin.V7HttpReader!");
СтатусВозврата(0);
Возврат;
КонецПопытки;
Попытка
Анализатор = СоздатьОбъект("AddIn.XMLParser");
Исключение
Сообщить("Не удалось создать объект Addin.XMLParser!");
СтатусВозврата(0);
Возврат;
КонецПопытки;
Форма.ИспользоватьЗакладки(1);
Форма.Закладки.ДобавитьЗначение(1,"Основная");
Форма.Закладки.ДобавитьЗначение(2,"Текст Загрузки" );
// Форма.Закладки.ДобавитьЗначение(3,"Запрос");
// Форма.Закладки.ДобавитьЗначение(4,"Отладка");
Форма.ИспользоватьСлой("Основной,Общий");
КонецПроцедуры
БазовыйАдрес = "http://ant-logistics.com";
//Логин = "import@rambler.ru";
//Пароль = "123456";
Логин = "innainna84@mail.ru";
Пароль = "123";
ДатаМаршрутов = ТекущаяДата() + 1;
Фл =1;