Версия для печати темы (https://pro1c.org.ua/index.php?s=61f02cee5ee00767bc192ec67dd3ef9e&showtopic=29853)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ прекращена работа программы 1c v7 starter program multi-user
Автор: inna.innainna84 18.05.16, 12:03
При работе с этим отчетом вылетаю из базы не сразу а через какое-то время.
Можно ли как-то протестировать и узнать где в коде ошибка отладчиком пробывала нигде не останавливается.
КодПерем Маршруты;
Перем Соединение;
Перем Анализатор;
Функция ПреобразоватьСтрокуВУТФ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;
Автор: Sharzem 18.05.16, 12:36
А это "чудо" у Вас, это лично мое мнение, летать корректно не будет, даже если все исправите.
Аргументирую тем что используете объект "Addin.V7HttpReader" создающийся "глючной" v7plus.dll.
Лучше всего строить POST-запросы используя объект "WinHttp.WinHttpRequest.5.1".
По-поводу отлатки: Повставляйте в процедуры (их у Вас немного), что-то типа:
Процедура Название процедуры()
Сообщить ("Начато выполнение Название процедуры","i");
///Ваш код
Сообщить ("Выполнено Название процедуры","i");
КонецПроцедуры
Автор: inna.innainna84 18.05.16, 15:22
Sharzem @ Сегодня, 13:36 ,
Извените пожалуйста вы можете на этой процедуре сделать наглядный пример?
Процедура ВыгрузитьКонтрагентов()
ТТ.Очистить();
ДокЗапрос = Анализатор.СоздатьДокумент();
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(СтрРез);
КонецПроцедуры //**************************************
Автор: Sharzem 19.05.16, 7:07
inna.innainna84 @ Вчера, 15:22 ,
Начинаем заниматься удаленно телепатией.
Скорее всего, перед Вами стоит задача сформировать данные в формате json, в кодировке UTF-8 с последующей их отправкой в теле POST-запроса по адресу.
Вам это нужно или что-то иное ?
Никогда не вел обмен с тем сайтом, но думаю что именно так Вы будете ему кидать свои данные.
Угадал ?
Автор: inna.innainna84 19.05.16, 7:42
Sharzem @ Сегодня, 8:07 ,
Да. Это они предложили этот вариант через v7plus.dll.
Автор: Sharzem 19.05.16, 8:11
inna.innainna84 @ Сегодня, 7:42 ,
Ну что же:
1. Сначала постройте правильный запрос по маршрутам, а то у Вас там чепуха.
2. Нужно описание формата для построения данных в формате json, на основании описания создавайте ТЗ и заполните ее из запроса.
3. Не забывайте о правилах, создайте новую тему, так как это уже совершенно другая проблема (Правила).
Выведем потихоньку Вас на нужный маршрут, только долго это все будет.
Автор: inna.innainna84 19.05.16, 9:20
Sharzem @ Сегодня, 9:11 http://pro1c.org.ua/index.php?act=findpost&pid=112607
Параметры в теле запроса:
Session_Ident=1B1CFA8D-FA4B-43FD-BFFB-64C6627DB357&Date_Data=02.08.2014&Routes=[{"”}]
Результат:
{
"ErrorResponse":
{
"error": 0,
"msg": null
}
}
Автор: Sharzem 19.05.16, 9:48
Цитата(inna.innainna84 @ 19.05.16, 9:20)
Скажите какую из процедур вы считаете "чепухой"
ВыгрузитьКонтрагентов() - то что Вы указали в теме.
ТекстЗапроса="
|ПЕРИОД С ДатаМаршрутов По ДатаМаршрутов; //Какой период если ссылки на документы нет ?
|Клиент = Справочник.Контрагенты.ТекущийЭлемент;
|Группировка Клиент без групп упорядочить по Клиент.Наименование; //Запрос без счетчика или функции выполнится только при выгрузке в ТЗ, но ее нет
|";
СписокКонтрагентов = СоздатьОбъект("СписокЗначений");
//1. ВыбКатегорияКонтрагентов - не объявленая переменная, ранее в глобальных я ее не видел
//2. У Вас функция в глобальном модуле формирует ТекстЗапроса ? - СОМНЕВАЮСЬ
Если глФильтрПоСправочнику("Контрагенты",0,0,ВыбКатегорияКонтрагентов,0,0,СписокКонтрагентов,ТекстЗапроса,0,0,"Клиент,,,СписокКонтрагентов,,,,,")=0 Тогда
Возврат;//Не указаны причины прекращения Процедуры, откуда Вы будете знать почему не работает
КонецЕсли;
Если Запрос.Выполнить(ТекстЗапроса)=0 тогда
Предупреждение("Запрос по Партиям не выполнился!");//// Какие партии ????
Возврат;
КонецЕсли;
Цитирую сам себя: "Сначала постройте правильный запрос по маршрутам..."
Я так понимаю, что в запросе должны присутствовать Документы "Маршрутный лист" или еще как он там называется и исходя из выборки за период, Вы отдаете на сайт информацию.
Вы технический специалист или Пользователь ?
Почему не обратитесь к своему человеку который Вам это все писал ?
Это форум, тут на Ваши вопросы дадут ответы, но никто Вам не гарантирует что они Вас удовлетворят на 100 %, далее, Вы все делаете сами и решения тоже принимаете сами.
Автор: inna.innainna84 19.05.16, 10:28
Да я поняла. Эта процедура выгружает информацию из справочника, не через документ. В принципе эта процедура не нужна.
Меня больше интересует ваше мнение о Процедуре ВыгрузитьИПровестиМаршруты(),
Автор: Sharzem 19.05.16, 11:08
Только что просмотрел я вашу процедуру ВыгрузитьИПровестиМаршруты() и все остальные...
Что могу сказать ?
Аяяяй, и оно даже открывается в режиме Предприятия, даже Отладчиком прошли...., только вот:
Цитата(inna.innainna84 @ 18.05.16, 12:03)
При работе с этим отчетом вылетаю из базы не сразу а через какое-то время
Не заработает и даже не откроется Ваш так называемый "отчет".
Извините, но это
Автор: inna.innainna84 19.05.16, 11:25
Sharzem @ Сегодня, 12:08 ,
Блин я не знаю что делать , скажите что нужно менять процедуры и запросы по этому документу ,или же нужно менять v7plus.dll. на WinHttp.WinHttpRequest.5.1
Автор: Sharzem 19.05.16, 12:01
inna.innainna84 @ Сегодня, 11:25 ,
Сейчас, поправлю кину назад, попробуете.
Что такое в запросе ВыбМЛ ?
|Условие(ТекДок в ВыбМЛ);
Автор: inna.innainna84 19.05.16, 12:31
Sharzem @ Сегодня, 13:01 http://pro1c.org.ua/index.php?act=findpost&pid=112626,
Это множественный список - выбор документа маршрутный лист
Автор: Sharzem 19.05.16, 14:24
Ловите, исправил одни ошибки намножил другие.
Запрос 1 С теперь должен норм. выполниться, xml будет сохранен и 1 С не вылетит.
У xml, мне кажется неправильная структура, поэтому сможете его посмотреть, оно сообщит о месте сохранения.
Убрал в запросе Группировку НомерЗаявкиТА, она не нужна.
Post-запрос не трогал, посмотрите как отработает (оно сообщит). Если что напишите.
Процедура ВыгрузитьИПровестиМаршруты()
ТТ.Очистить();
ТТ.НоваяКолонка("МаршрутныйЛист", "Строка", 25, ," Документ");
ТТ.НоваяКолонка("АвтомобильВодитель", "Строка", 30,,"Автомобиль/Водитель");
ТТ.НоваяКолонка("Клиент", "Строка",50,,"Клиент (тип)");
ТТ.НоваяКолонка("Заявка");
ТТ.НоваяКолонка("НомерЗаявки");
ТТ.НоваяКолонка("Вес","Число", 10,3);
ТТ.НоваяКолонка("Пробег","Число", 10,2);
ТТ.НоваяКолонка("Приезд", "Строка", 10);
ТТ.НоваяКолонка("Время","Число", 10,0);
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|ОбрабатыватьДокументы Проведенные;
|Период с ДатаМаршрутов по ДатаМаршрутов;
|ТекДок = Документ.МАРШРУТНЫЙЛИСТ.ТекущийДокумент;
|Водитель = Документ.МАРШРУТНЫЙЛИСТ.Водитель;
|Экспедитор = Документ.МАРШРУТНЫЙЛИСТ.Экспедитор;
|НомерЗаявкиТА=Документ.МАРШРУТНЫЙЛИСТ.НомерЗаявкиТА;
|НомерСтроки=Документ.МАРШРУТНЫЙЛИСТ.ТекущийДокумент.НомерСтроки;
|Клиент = Документ.МАРШРУТНЫЙЛИСТ.Клиент;
|Заявка = Документ.МАРШРУТНЫЙЛИСТ.Заявка;
//|Вес = Документ.МАРШРУТНЫЙЛИСТ.Заявка.Вес;
//|ОрганизационоеВремя = Документ.МАРШРУТНЫЙЛИСТ.ОрганизационоеВремя;
|Группировка Клиент без групп;
|Группировка ТекДок;
//|Группировка НомерЗаявкиТА;
|Условие(ТекДок в ВыбМЛ);
|";
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
лпСписокСообщенийRoutes = СоздатьОбъект("СписокЗначений");
лпСписокСообщенийComps = СоздатьОбъект("СписокЗначений");
Routes = Анализатор.СоздатьДокумент();
ArrayOfDEX_Import_Routes = Routes.СоздатьПодчиненныйЭлемент("ArrayOfDEX_Import_Routes");
Comps = Анализатор.СоздатьДокумент();
ArrayOfDEX_Import_Comps = Comps.СоздатьПодчиненныйЭлемент("ArrayOfDEX_Import_Comps");
Пока Запрос.Группировка(1) = 1 Цикл //Клиент
Пока Запрос.Группировка(2)=1 Цикл//"ТекДок"
//Переменные
лпДокумент = Запрос.ТекДок;
лпАвтомобиль = лпДокумент.Автомобиль;
лпВодитель = лпДокумент.Водитель;
лпНомерЗаявкиТА = Запрос.НомерЗаявкиТА;
лпНомерСтроки3 = лпДокумент.Итог("НомерСтроки3");//???
лпЗаявка = Запрос.Заявка;
лпВес = лпЗаявка.Вес;
лпНомерДок = лпДокумент.НомерДок;
лпДатаДок = лпДокумент.ДатаДок;
лпАвтомобильКод = лпАвтомобиль.Код;
лпВодительКод = лпВодитель.Код;
лпДиспетчерКод = лпДокумент.Экспедитор.Код;
лпВыезд = СокрЛП("08:00");
лпНомерСтроки = Запрос.НомерСтроки;
лпКодСоответствия= Запрос.Клиент.КодСоответствия;
лпТипТочки = 0;
лпКлиентИмя = СокрЛП(Запрос.Клиент.Наименование);
лпКлиентПочта = СокрЛП(Запрос.Клиент.ПочтовыйАдрес);
лпОрганизВремя = Число(лпДокумент.ОрганизационоеВремя);
//==========================Таблица Значений=================================================
ТТ.НоваяСтрока();
ТТ.Клиент = лпКлиентИмя;
ТТ.НомерЗаявки = лпНомерЗаявкиТА;
ТТ.МаршрутныйЛист = ""+лпНомерДок+ " от "+лпДатаДок;
ТТ.АвтомобильВодитель = ""+СокрЛП(лпАвтомобиль.Наименование)+" / "+СокрЛП(лпВодитель.Наименование);
ТТ.Заявка = лпЗаявка;
//==========================ДокЗапрос=================================================
DEX_Import = ArrayOfDEX_Import_Routes.СоздатьПодчиненныйЭлемент("DEX_Import_Routes");
DEX_Import.СоздатьПодчиненныйЭлемент("Route_Num").Текст = СокрЛП(ПреобразоватьСтрокуВУТФ8(лпНомерДок));
DEX_Import.СоздатьПодчиненныйЭлемент("Auto_Id").Значение = Число(ПреобразоватьСтрокуВУТФ8(лпАвтомобильКод));
DEX_Import.СоздатьПодчиненныйЭлемент("Driver_Id").Значение = Число(ПреобразоватьСтрокуВУТФ8(лпВодительКод));
DEX_Import.СоздатьПодчиненныйЭлемент("Dispatcher_Id").Значение = Число(ПреобразоватьСтрокуВУТФ8(лпДиспетчерКод));
DEX_Import.СоздатьПодчиненныйЭлемент("RouteTime_B").Текст = СокрЛП(ПреобразоватьСтрокуВУТФ8("08:00"));
DEX_Import.СоздатьПодчиненныйЭлемент("Pos_Id").Значение = Число(ПреобразоватьСтрокуВУТФ8(лпНомерСтроки3));
лпСообщение = "НомерМаршрута-"+лпНомерДок+" Авто- "+лпАвтомобильКод+" Водитель- "+лпВодительКод+" Экспедитор- "+
лпДиспетчерКод+" Выезд- "+лпВыезд+" номерСтроки- "+лпНомерСтроки3;
лпСписокСообщенийRoutes.ДобавитьЗначение(лпСообщение);
//==========================ДокЗапрос1=================================================
DEX_Import1 = ArrayOfDEX_Import_Comps.СоздатьПодчиненныйЭлемент("DEX_Import_Comps");
DEX_Import1.СоздатьПодчиненныйЭлемент("Route_Num").Текст = СокрЛП(ПреобразоватьСтрокуВУТФ8(лпНомерДок));
DEX_Import1.СоздатьПодчиненныйЭлемент("Pos_Id").Значение = СокрЛП(ПреобразоватьСтрокуВУТФ8(лпНомерСтроки));
DEX_Import1.СоздатьПодчиненныйЭлемент("Comp_Id").Значение = СокрЛП(ПреобразоватьСтрокуВУТФ8(лпКодСоответствия));
DEX_Import1.СоздатьПодчиненныйЭлемент("CompType_Id").Значение = Число(ПреобразоватьСтрокуВУТФ8(лпТипТочки));
DEX_Import1.СоздатьПодчиненныйЭлемент("Comp_Name").Текст = СокрЛП(ПреобразоватьСтрокуВУТФ8(лпКлиентИмя));
DEX_Import1.СоздатьПодчиненныйЭлемент("Address").Текст = СокрЛП(ПреобразоватьСтрокуВУТФ8(лпКлиентПочта));
DEX_Import1.СоздатьПодчиненныйЭлемент("Unload_Time").Значение = Число(ПреобразоватьСтрокуВУТФ8(лпОрганизВремя));
DEX_Import.СоздатьПодчиненныйЭлемент("Request_Num").Текст = СокрЛП(ПреобразоватьСтрокуВУТФ8(лпНомерЗаявкиТА));
DEX_Import.СоздатьПодчиненныйЭлемент("QtyW").Значение = Число(ПреобразоватьСтрокуВУТФ8(лпВес));
DEX_Import.СоздатьПодчиненныйЭлемент("ProductGroup_Id").Значение = Число(ПреобразоватьСтрокуВУТФ8(лпТипТочки));
лпСообщение = "Список накладных-"+"НомерМаршрута- "+лпНомерДок+" Клиент- "+лпКодСоответствия+" Типточки- "+лпТипТочки+
" КлиентНаимен- "+лпКлиентИмя+" Адрес- "+лпКлиентПочта+" номерСтроки- "+лпНомерСтроки+ " номерЗаявки- "+лпНомерЗаявкиТА+
" вес- "+лпВес+" орг.вермя- "+лпОрганизВремя;
лпСписокСообщенийComps.ДобавитьЗначение(лпСообщение);
КонецЦикла;
КонецЦикла;
лпИмяФайлаОбменаRoutes = КаталогВременныхФайлов()+"Routes_"+Формат(ДатаМаршрутов,"ДГГГГММДД")+".xml";
лпИмяФайлаОбменаComps = КаталогВременныхФайлов()+"Comps_"+Формат(ДатаМаршрутов,"ДГГГГММДД")+".xml";
Routes.Записать(лпИмяФайлаОбменаRoutes);
Comps.Записать(лпИмяФайлаОбменаComps);
лпРазмерСписка = лпСписокСообщенийRoutes.РазмерСписка();
Сообщить("Данные Routes :","!!!");
Для лпНомерСтроки = 1 По лпРазмерСписка Цикл
лпСтрока = лпСписокСообщенийRoutes.ПолучитьЗначение(лпНомерСтроки);
Сообщить(лпСтрока,"i");
КонецЦикла;
лпРазмерСписка = лпСписокСообщенийComps.РазмерСписка();
Сообщить("Данные Routes :","!!!");
Для лпНомерСтроки = 1 По лпРазмерСписка Цикл
лпСтрока = лпСписокСообщенийComps.ПолучитьЗначение(лпНомерСтроки);
Сообщить(лпСтрока,"i");
КонецЦикла;
Сообщить("Файл сохранен "+лпИмяФайлаОбменаRoutes);
Сообщить("Файл сохранен "+лпИмяФайлаОбменаComps);
СтрРез = "";
ПараметрыЗапроса ="Session_Ident="+ИДСессии+
"&Date_Data="+Формат(ДатаМаршрутов, "ДДДММГГГГ")+"&Add_Template=0&TSM_Calc=1&Remove=1&SyncComps=1&format=xml&Routes=<?xml version=""1.0""?>"+
ПреобразоватьСтрокуВУТФ8(Routes.ЭлементДокумента.ПредставлениеXML)+
"&Comps=<?xml version=""1.0""?>"+ПреобразоватьСтрокуВУТФ8(Comps.ЭлементДокумента.ПредставлениеXML);
//ПреобразоватьСтрокуИзУТФ8(Routes.ЭлементДокумента.ПредставлениеXML)+
//"&Comps=<?xml version=""1.0""?>"+ПреобразоватьСтрокуИзУТФ8(Comps.ЭлементДокумента.ПредставлениеXML);
ОтветЗагрузки = "";
Попытка
Соединение.ОтправитьДляОбработки(АдресСервиса + "/DEX_Import_Routes_JSON", ПараметрыЗапроса, 2, СтрРез, 1);
РезультатЗагрузки = ПараметрыЗапроса;
ОтветЗагрузки = ПреобразоватьСтрокуИзУТФ8(СтрРез);
Исключение
Предупреждение("Не удалось выполнить метод ОтправитьДляОбработки !");
Сообщить(ОписаниеОшибки(),"!!!");
КонецПопытки;
Если ПустаяСтрока(ОтветЗагрузки) = 0 Тогда
лпКолСтрок = СтрКоличествоСтрок(ОтветЗагрузки);
Для лпНомерСтроки = 1 По лпКолСтрок Цикл
лпСтрока = СокрЛП(СтрПолучитьСтроку(ОтветЗагрузки, лпНомерСтроки))
Сообщить(лпСтрока,"i");
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Автор: Sharzem 19.05.16, 15:44
В догонку Функция Выполняющая сам запрос:
Функция ОтправитьПостЗапрос(прАдрес,прФайл)
Если ПустаяСтрока(прФайл) = 1 Тогда
Возврат 0;
КонецЕсли;
WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
MSScript = СоздатьОбъект("MSScriptControl.ScriptControl");
MSScript.language="javascript";
MSScript.AddObject("WinHttp",WinHttp);
MSScript.Eval("WinHttp.Option(2)=1251");
MSScript.Eval("WinHttp.Option(4)=13056");//intSslErrorIgnoreFlags
MSScript.Eval("WinHttp.Option(6)=true");//blnEnableRedirects
MSScript.Eval("WinHttp.Option(12)=true");//blnEnableHttpsToHttpRedirects
WinHttp.Open("POST", прАдрес, 0);
WinHttp.SetRequestHeader("Accept-Language", "ru");
WinHttp.SetRequestHeader("Accept-Charset", "utf-8");
WinHttp.SetRequestHeader("Content-Language", "ru");
WinHttp.SetRequestHeader("Content-Charset", "utf-8");
WinHttp.SetRequestHeader("Content-type", "application/xml; charset=utf-8;");
Попытка
WinHttp.Send(прФайл);
Если WinHttp.Status = 200 Тогда
Сообщить("Ответ: " + WinHttp.ResponseText);
Возврат 1;
Иначе
Сообщить("Ошибка сервера: " + WinHttp.Status + " " + WinHttp.ResponseText + " " + WinHttp.StatusText, "!");
Возврат 0;
КонецЕсли;
Исключение
Сообщить(ОписаниеОшибки(), "!!!");
Возврат 0;
КонецПопытки;
КонецФункции
Возможно имеются какие-то мелкие ошибки. Опять таки опишите проблемы, если таковы будут.
Автор: inna.innainna84 19.05.16, 17:06
Sharzem @ Сегодня, 16:44 ,
Отчет работает, если будет отключать 1с напишу.
Вот единственное я не пойму почему- то не правильно преобразовуются текстовые значения вместо букв иероглифы, это ошибка была изначально.
DEX_Import1.СоздатьПодчиненныйЭлемент("Route_Num").Текст = СокрЛП(ПреобразоватьСтрокуВУТФ8(лпНомерДок));
DEX_Import1.СоздатьПодчиненныйЭлемент("Comp_Name").Текст = СокрЛП(ПреобразоватьСтрокуВУТФ8(лпКлиентИмя));
DEX_Import1.СоздатьПодчиненныйЭлемент("Comp_Name").Текст = СокрЛП(ПреобразоватьСтрокуВУТФ8(лпКлиентИмя));
DEX_Import.СоздатьПодчиненныйЭлемент("Request_Num").Текст = СокрЛП(ПреобразоватьСтрокуВУТФ8(лпНомерЗаявкиТА));
А что означает "Получаемая строка превысит допустимые размеры" и не отправляет эти данные на сайт?
Автор: Sharzem 19.05.16, 17:50
1. Это не ошибка. Иероглифы это текст в UTF-8.
2. Воспользуйтесь Функцией ОтправитьПостЗапрос(прАдрес,прФайл) и все будет норм.
В модуле процедуры после строк:
///Получаемая строка превысит допустимые размеры - это в сообщении, строка более 450 символов
// нужно здесь закоментировать, поскольку не влазит в окно сообщений
// лпРазмерСписка = лпСписокСообщенийRoutes.РазмерСписка();
// Сообщить("Данные Routes :","!!!");
// Для лпНомерСтроки = 1 По лпРазмерСписка Цикл
// лпСтрока = лпСписокСообщенийRoutes.ПолучитьЗначение(лпНомерСтроки);
// Сообщить(лпСтрока,"i");
// КонецЦикла;
// лпРазмерСписка = лпСписокСообщенийComps.РазмерСписка();
// Сообщить("Данные Routes :","!!!");
// Для лпНомерСтроки = 1 По лпРазмерСписка Цикл
// лпСтрока = лпСписокСообщенийComps.ПолучитьЗначение(лпНомерСтроки);
// Сообщить(лпСтрока,"i");
// КонецЦикла;
Сообщить("Файл сохранен "+лпИмяФайлаОбменаRoutes);
Сообщить("Файл сохранен "+лпИмяФайлаОбменаComps);
//ДОБАВЛЯЕМ
// АдресСервиса - Это глобальная переменная ?
//Если да то:
Если ФС.СуществуетФайл(лпИмяФайлаОбменаRoutes) = 0 или ФС.СуществуетФайл(лпИмяФайлаОбменаComps) = 0 Тогда
Предупреждение("Ошибка соранения отчета !",10);
Возврат;
КонецЕсли;
лпАдресСервиса = АдресСервиса+"/DEX_Import_Routes_JSON";
Если ОтправитьПостЗапрос(лпАдресСервиса,лпИмяФайлаОбменаRoutes) = 1 Тогда
Если ОтправитьПостЗапрос(лпАдресСервиса,лпИмяФайлаОбменаComps) = 1 Тогда
Предупреждение("Все отправлено, хлопаем в ладошки !",10)
КонецЕсли;
Иначе
Предупреждение ("Вилы в запросе, нужно еще смотреть что не так !",10);
КонецЕсли;
Возврат;
///Весь модуль ниже не актуален
Кстати, для просмотра текста в UTF-8 есть класный редактор "Notepad++".
Тем более что иногда нужно смотреть текст в UTF-8 (без Bom) - незаменимая вещь в определении наличия или отсутствия Bom.
Думаю что рассматриваемый Post-запрос умрет и Вы начнете все же обмениваться в формате Joison, он удобней для таких вещей.
Нужно Вам только поплотней с специалистами которые Вам рекомендуют существующий обмен пообщаться, у ни он 100 % реализован.
Автор: inna.innainna84 19.05.16, 22:57
Автор: Sharzem 20.05.16, 10:32
Вот это нужно закоментировать:
//СтрРез = "";
//
// ПараметрыЗапроса ="Session_Ident="+ИДСессии+
// "&Date_Data="+Формат(ДатаМаршрутов, "ДДДММГГГГ")+"&Add_Template=0&TSM_Calc=1&Remove=1&SyncComps=1&format=xml&Routes=<?xml version=""1.0""?>"+
// ПреобразоватьСтрокуВУТФ8(Routes.ЭлементДокумента.ПредставлениеXML)+
// "&Comps=<?xml version=""1.0""?>"+ПреобразоватьСтрокуВУТФ8(Comps.ЭлементДокумента.ПредставлениеXML);
//
// ОтветЗагрузки = "";
// Попытка
// Соединение.ОтправитьДляОбработки(АдресСервиса + "/DEX_Import_Routes_JSON", ПараметрыЗапроса, 2, СтрРез, 1);
// РезультатЗагрузки = ПараметрыЗапроса;
// ОтветЗагрузки = ПреобразоватьСтрокуИзУТФ8(СтрРез);
// Исключение
// Предупреждение("Не удалось выполнить метод ОтправитьДляОбработки !");
// Сообщить(ОписаниеОшибки(),"!!!");
// КонецПопытки;
// Если ПустаяСтрока(ОтветЗагрузки) = 0 Тогда
// лпКолСтрок = СтрКоличествоСтрок(ОтветЗагрузки);
// Для лпНомерСтроки = 1 По лпКолСтрок Цикл
// лпСтрока = СокрЛП(СтрПолучитьСтроку(ОтветЗагрузки, лпНомерСтроки));
// Сообщить(лпСтрока,"i");
// КонецЦикла;
// КонецЕсли;
Строки:
Если (ФС.СуществуетФайл(лпИмяФайлаОбменаRoutes) = 0) или (ФС.СуществуетФайл(лпИмяФайлаОбменаComps) = 0) Тогда
Предупреждение("Ошибка сохранения отчета !",10);
Возврат;
КонецЕсли;
//Нужно перенести после строк:
Routes.Записать(лпИмяФайлаОбменаRoutes);
Comps.Записать(лпИмяФайлаОбменаComps);
Sharzem @ Сегодня, 10:14
,
Функция ОтправитьПостЗапрос(лпАдресСервиса,лпИмяФайлаОбменаRoutes) работать не будет, поскольку в АдресСервиса не те данные.
Во как накуралесил ...
Рассматривал одну процедуру, поскольку не ознакомился с полным текстом из 1 поста.
Туточки пока тупик и куча вопросов...
Предлагаю на мыло Sharzem@yandex.ru кинуть саму обработку и тех.описание по работе с сервисом.
Если будете сбрасывать и боитесь за конфиденциальность пароли, личные данные, адреса в обработке замените символами ххххх, чтобы я понял что это не переменные.
Извините, но более дальше помочь не могу.
Автор: inna.innainna84 20.05.16, 10:41
Sharzem @ Сегодня, 11:14 ,
А зачем это комментировать? это же необходимо для работы с сайтом
ПараметрыЗапроса ="Session_Ident="+ИДСессии+
// "&Date_Data="+Формат(ДатаМаршрутов, "ДДДММГГГГ")+"&Add_Template=0&TSM_Calc=1&Remove=1&SyncComps=1&format=xml&Routes=<?xml version=""1.0""?>"+
// ПреобразоватьСтрокуВУТФ8(Routes.ЭлементДокумента.ПредставлениеXML)+
// "&Comps=<?xml version=""1.0""?>"+ПреобразоватьСтрокуВУТФ8(Comps.ЭлементДокумента.ПредставлениеXML);
Автор: Sharzem 20.05.16, 10:42
Sharzem @ Сегодня, 10:32 ,
Информация для Администрации сайта:
Предложение Автору темы выслать обработку на свой адрес прошу расценивать как добровольное предложение помощи не имеющего под собой коммерческого характера или преследования других целей для получения в свою пользу каких либо выгод.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua