Тонкий клиент ошибка конструктора http соединения

1. user1302499 17.01.20 13:11 Сейчас в теме
Делаю подключение

Попытка
		Защита = Новый ЗащищенноеСоединениеOpenSSL();
		Соединение = Новый HTTPСоединение("ws.dpd.ru",,,,,,Защита);	
	Исключение
		Сообщить("Не удалось установить соединение с сервером онлайн-проверки:" 
		+ Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
		Возврат;
	КонецПопытки;
Показать


На локальной базе, все супер, работает, подключается и НаСервере и НаКлиенте

На базе из веб сервиса через тонкий клиент вылетает вечно ошибка

Ошибка при вызове конструктора(HTTPСоединение)
По теме из базы знаний
Найденные решения
15. user1302499 20.01.20 09:35 Сейчас в теме
(14) Вывело ошибку мол в безопасном режиме не будет работать. Убрал безопасный режим

//Попытка
Защита = Новый ЗащищенноеСоединениеOpenSSL();
Соединение = Новый HTTPСоединение("ws.dpd.ru",,,,,,Защита);
//Исключение
Сообщить("Не удалось установить соединение с сервером онлайн-проверки:"
+ Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
Возврат;
//КонецПопытки;

Вывело только "Не удалось установить соединение с сервером онлайн-проверки:"

И соответственно на возврате завершилась. Видимо в этом и была ошибка.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. noprogrammer 237 17.01.20 13:43 Сейчас в теме
(1) В веб клиенте нет "HTTPСоединение" как бы смешно это не звучало... Код который вызывается в вебе необходимо вызывать "НаСервере" тогда ошибки не будет
3. user1302499 17.01.20 13:58 Сейчас в теме
(2) Будет. Ошибка возникает и НаКлиенте и НаСервере. Запускаю через тонкий клиент
4. noprogrammer 237 17.01.20 14:11 Сейчас в теме
(3) Нет, не будет. Давай весь код и откуда запускаешь.
5. user1302499 17.01.20 14:30 Сейчас в теме
(4)
 &НаКлиенте
Процедура МТД_ДМТД_РасчитатьСтоимостьDPDПосле(Команда)
	Попытка
		Защита = Новый ЗащищенноеСоединениеOpenSSL();
		Соединение = Новый HTTPСоединение("ws.dpd.ru",,,,,,Защита);	
	Исключение
		Сообщить("Не удалось установить соединение с сервером онлайн-проверки:" 
		+ Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
		Возврат;
	КонецПопытки;

	
	МТД_РасчетСтоимостиДПД_1();
КонецПроцедуры

&НаСервере
Процедура МТД_РасчетСтоимостиДПД_1()
	Попытка
		//Защита = Новый ЗащищенноеСоединениеOpenSSL();
		Соединение = Новый HTTPСоединение("ws.dpd.ru",,,,,,);		
	Исключение
		Сообщить("Не удалось установить соединение с сервером онлайн-проверки:" 
		+ Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
		Возврат;
	КонецПопытки;
	
	ЗаписьXML = Новый ЗаписьXML;
	ЗаписьXML.УстановитьСтроку();
	
	//инвелоп = "soapenv:Envelope xmlns:soapenv="+""""+"http://schemas.xmlsoap.org/soap/envelope/"+""""+" xmlns:ns="+""""+"http://dpd.ru/ws/calculator/2012-03-20"+"""";
	ЗаписьXML.ЗаписатьНачалоЭлемента("soapenv:Envelope");// xmlns:soapenv=""""http://schemas.xmlsoap.org/soap/envelope/"""" xmlns:ns=""""http://dpd.ru/ws/calculator/2012-03-20""""");
	ЗаписьXML.ЗаписатьАтрибут("xmlns:soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
	ЗаписьXML.ЗаписатьАтрибут("xmlns:ns", "http://dpd.ru/ws/calculator/2012-03-20");//http://dpd.ru/ws/order2/2012-04-04");
	
	ЗаписьXML.ЗаписатьНачалоЭлемента("soapenv:Header");
	ЗаписьXML.ЗаписатьКонецЭлемента();
	
	ЗаписьXML.ЗаписатьНачалоЭлемента("soapenv:Body");

	АдресЗначение = Объект["АдресДоставки" + "Значение"];
	XDTOКонтактная  =  УправлениеКонтактнойИнформациейСлужебный.JSONВКонтактнуюИнформациюПоПолям(АдресЗначение, Перечисления.ТипыКонтактнойИнформации.Адрес);
	АдресОтпр = Новый Структура;
	АдресОтпр = ПредопределенноеЗначение("Справочник.СтруктурныеЕдиницы.ОсновнойСклад").КонтактнаяИнформация[0].Значение;
	XDTOКонтактнаяОтпр  =  УправлениеКонтактнойИнформациейСлужебный.JSONВКонтактнуюИнформациюПоПолям(АдресОтпр, Перечисления.ТипыКонтактнойИнформации.Адрес);
	НастройкаДПД = Справочники.МТД_Константы.НайтиПоРеквизиту("Ключ","ЛКДПД").Значение;
	ЛогинДПД = НастройкаДПД.Логин;
	ПарольДПД =  НастройкаДПД.Пароль;  // ПОТОМ РАСКОМЕНТИТЬ
	ГородОтправления = Справочники.МТД_Константы.НайтиПоРеквизиту("Ключ","НаименованиеГородаОтправления").Значение;
	ИндексПолучателя = Лев(СокрЛП(Объект.АдресДоставки),6); 
	Если ЗначениеЗАполнено(XDTOКонтактная.city) Тогда //(XDTOКонтактная.Состав.Состав.Город) ТОгда
		НАсПУнкт = XDTOКонтактная.city;//XDTOКонтактная.Состав.Состав.Город;
		Если ЗначениеЗаполнено(XDTOКонтактная.locality) Тогда //XDTOКонтактная.Состав.Состав.НаселПункт) Тогда
			НАселПункт =  XDTOКонтактная.locality;//XDTOКонтактная.Состав.Состав.НаселПункт;
			НазваниеНасП = СокрЛП(Лев(НАселПункт,Найти(НАселПункт," ")-1));
			ТипНасП = СокрЛП(Прав(НАселПункт,СтрДлина(НАселПункт)-Стрдлина(НазваниеНасП)-1));
			НаселПункт = ТипНасП + " " + НазваниеНасП;
			
			НасПункт = НасПункт +", "+ НаселПункт;
		КонецЕсли;
	Иначе
		НасПункт = Строка(XDTOКонтактная.locality);
	КонецЕсли;
	
	Если не XDTOКонтактная.area = Неопределено Тогда 
		Район = XDTOКонтактная.area;
	Иначе
		Район = "";
	КонецЕсли;
	
	ЗаписьXML.ЗаписатьНачалоЭлемента("ns:getServiceCost2");
		
			ЗаписьXML.ЗаписатьНачалоЭлемента("request");
			    //авторизация
				ЗаписьXML.ЗаписатьНачалоЭлемента("auth");
				
					ЗаписьXML.ЗаписатьНачалоЭлемента("clientNumber");
					ЗаписьXML.ЗаписатьТекст(ЛогинДПД);//"1008008964");
				    ЗаписьXML.ЗаписатьКонецЭлемента();
					
					ЗаписьXML.ЗаписатьНачалоЭлемента("clientKey");
					ЗаписьXML.ЗаписатьТекст(ПарольДПД);//"439220DA5F607DC9E93FFE412CE10EDFDEE6F862");
				    ЗаписьXML.ЗаписатьКонецЭлемента();
					
				ЗаписьXML.ЗаписатьКонецЭлемента();
				//picup
				ЗаписьXML.ЗаписатьНачалоЭлемента("pickup");
				
					ЗаписьXML.ЗаписатьНачалоЭлемента("index");
					ЗаписьXML.ЗаписатьТекст(XDTOКонтактнаяОтпр.ZIPCode);//"344000");
				    ЗаписьXML.ЗаписатьКонецЭлемента();
					
					ЗаписьXML.ЗаписатьНачалоЭлемента("cityName");
					ЗаписьXML.ЗаписатьТекст(XDTOКонтактнаяОтпр.city);//"Ростов-на-Дону");
					ЗаписьXML.ЗаписатьКонецЭлемента();
					
					//ЗаписьXML.ЗаписатьНачалоЭлемента("regionCode");
					//ЗаписьXML.ЗаписатьТекст("61");
					//ЗаписьXML.ЗаписатьКонецЭлемента();

					//ЗаписьXML.ЗаписатьНачалоЭлемента("countryCode");
					//ЗаписьXML.ЗаписатьТекст("RU");
					//ЗаписьXML.ЗаписатьКонецЭлемента();
					
				ЗаписьXML.ЗаписатьКонецЭлемента();

				//delivery
				ЗаписьXML.ЗаписатьНачалоЭлемента("delivery");
				
					ЗаписьXML.ЗаписатьНачалоЭлемента("index");
					ЗаписьXML.ЗаписатьТекст(XDTOКонтактная.ZIPCode);//"346604");
				    ЗаписьXML.ЗаписатьКонецЭлемента();
					
					ЗаписьXML.ЗаписатьНачалоЭлемента("cityName");
					ЗаписьXML.ЗаписатьТекст(XDTOКонтактная.city);//"Садовый");
				    ЗаписьXML.ЗаписатьКонецЭлемента();
					
					//ЗаписьXML.ЗаписатьНачалоЭлемента("regionCode");
					//ЗаписьXML.ЗаписатьТекст("61");
					//ЗаписьXML.ЗаписатьКонецЭлемента();

					//ЗаписьXML.ЗаписатьНачалоЭлемента("countryCode");
					//ЗаписьXML.ЗаписатьТекст("RU");
					//ЗаписьXML.ЗаписатьКонецЭлемента();
								
				ЗаписьXML.ЗаписатьКонецЭлемента();
				//Если selfPickup = false, значит что прием от двери
							
				//Если selfDelivery = false, значит доставка до двери

				Если Объект.МТД_ВариантыПеревозки = ПредопределенноеЗначение("Перечисление.МТД_ВариантыПеревозки.ДД") Тогда
					ЗаписьXML.ЗаписатьНачалоЭлемента("selfPickup");
					ЗаписьXML.ЗаписатьТекст("false");
					ЗаписьXML.ЗаписатьКонецЭлемента();
					
					ЗаписьXML.ЗаписатьНачалоЭлемента("selfDelivery");
					ЗаписьXML.ЗаписатьТекст("false");
					ЗаписьXML.ЗаписатьКонецЭлемента();
				
				ИНАЧЕЕСЛИ
					Объект.МТД_ВариантыПеревозки = ПредопределенноеЗначение("Перечисление.МТД_ВариантыПеревозки.ДТ") Тогда
					ЗаписьXML.ЗаписатьНачалоЭлемента("selfPickup");
					ЗаписьXML.ЗаписатьТекст("false");
					ЗаписьXML.ЗаписатьКонецЭлемента();
					
					ЗаписьXML.ЗаписатьНачалоЭлемента("selfDelivery");
					ЗаписьXML.ЗаписатьТекст("true");
					ЗаписьXML.ЗаписатьКонецЭлемента();
				ИНАЧЕЕСЛИ	
				    Объект.МТД_ВариантыПеревозки = ПредопределенноеЗначение("Перечисление.МТД_ВариантыПеревозки.ТТ") Тогда
					ЗаписьXML.ЗаписатьНачалоЭлемента("selfPickup");
					ЗаписьXML.ЗаписатьТекст("true");
					ЗаписьXML.ЗаписатьКонецЭлемента();
					
					ЗаписьXML.ЗаписатьНачалоЭлемента("selfDelivery");
					ЗаписьXML.ЗаписатьТекст("true");
					ЗаписьXML.ЗаписатьКонецЭлемента();
				ИНАЧЕЕСЛИ
					Объект.МТД_ВариантыПеревозки = ПредопределенноеЗначение("Перечисление.МТД_ВариантыПеревозки.ТД") Тогда
					ЗаписьXML.ЗаписатьНачалоЭлемента("selfPickup");
					ЗаписьXML.ЗаписатьТекст("true");
					ЗаписьXML.ЗаписатьКонецЭлемента();
					
					ЗаписьXML.ЗаписатьНачалоЭлемента("selfDelivery");
					ЗаписьXML.ЗаписатьТекст("false");
					ЗаписьXML.ЗаписатьКонецЭлемента();
				КонецЕсли;	

				//вес
				ЗаписьXML.ЗаписатьНачалоЭлемента("weight");
				ЗаписьXML.ЗаписатьТекст(СтрЗаменить(Строка(Объект.Вес),",","."));
				ЗаписьXML.ЗаписатьКонецЭлемента();
				
				//объем
				ЗаписьXML.ЗаписатьНачалоЭлемента("volume");
				ЗаписьXML.ЗаписатьТекст(СтрЗаменить(Строка(Объект.Объем),",","."));
				ЗаписьXML.ЗаписатьКонецЭлемента();
				
				Если Объект.ЗонаТариф.Наименование = "DPD OPTIMUM" Тогда
					ЗаписьXML.ЗаписатьНачалоЭлемента("serviceCode");
					ЗаписьXML.ЗаписатьТекст(Строка("PCL")); 
					ЗаписьXML.ЗаписатьКонецЭлемента();
				ИНАЧЕЕСЛИ Объект.ЗонаТариф.Наименование = "DPD EXPRESS" ТОГДА
					ЗаписьXML.ЗаписатьНачалоЭлемента("serviceCode");
					ЗаписьXML.ЗаписатьТекст(Строка("NDY")); 
					ЗаписьXML.ЗаписатьКонецЭлемента();
				ИНАЧЕЕСЛИ Объект.ЗонаТариф.Наименование = "DPD CLASSIC" ТОГДА
					ЗаписьXML.ЗаписатьНачалоЭлемента("serviceCode");
					ЗаписьXML.ЗаписатьТекст(Строка("CUR")); 
					ЗаписьXML.ЗаписатьКонецЭлемента();
				КонецЕсли;
				
				ЗаписьXML.ЗаписатьНачалоЭлемента("declaredValue");
				ЗаписьXML.ЗаписатьТекст(Строка(Объект.ОбъявленнаяЦенность));
				ЗаписьXML.ЗаписатьКонецЭлемента();
								
				//ЗаписьXML.ЗаписатьКонецЭлемента();
			ЗаписьXML.ЗаписатьКонецЭлемента(); //request
		ЗаписьXML.ЗаписатьКонецЭлемента(); // ns:getServiceCost2	
	ЗаписьXML.ЗаписатьКонецЭлемента();  //soapenv:Body
ЗаписьXML.ЗаписатьКонецЭлемента();  //soap:Envelope
		ТекстXML = ЗаписьXML.Закрыть();
		Сообщить(ТекстXML);
			
		// отправить запрос
		Если ПустаяСтрока(ТекстXML) Тогда
			ТекстВозврат = "";
		КонецЕсли;
		WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
		WinHttp.SetTimeouts(100000,100000,100000,100000);
		
		WinHttp.Option(2,"utf-8");                   		
		//WinHttp.Open("POST","http://wstest.dpd.ru/services/calculator2?wsdl"); ;	  // тестовая
		WinHttp.Open("POST","http://ws.dpd.ru/services/calculator2?wsdl");// рабочая
		
		WinHttp.setRequestHeader("Content-Type","text/xml; charset=utf-8");
		
		//Сообщить("Начало - " + ТекущаяДата());
		//Сообщить("URL: " + "http://wstest.dpd.ru/services/calculator2?wsdl");
		
		//Попытка   
			WinHttp.Send(ТекстXML);
			//Сообщить("Завершение - " + ТекущаяДата());
			Если WinHttp.Status = 200 Тогда
				//Сообщить("Ответ: " + WinHttp.StatusText);
				//ТекстВозврат = WinHttp.ResponseText;
			Иначе
				Сообщить("Ошибка сервера: " + WinHttp.Status + " " + WinHttp.ResponseText + " " + WinHttp.StatusText, СтатусСообщения.Важное);
				Ошибка = Стрнайти(WinHttp.ResponseText,"<faultstring>");
				ТекстОшибки = прав(WinHttp.ResponseText,СтрДлина(WinHttp.ResponseText) -Ошибка-12);
				КонецЦены = СтрНайти(ТекстОшибки,">");//17
				Ошибка = Лев(ТекстОшибки, КонецЦены-14); 
				Если Ошибка = "Невозможна услуга, удовлетворяющая запросу" Тогда
					Сообщить("Ошибка: Возможно в выбранном населенном пункте отсутствует терминал приема посылок DPD. Попробуйте другой способ доставки.");
				КонецЕсли;
				Возврат;
			КонецЕсли;
			Ответ = WinHttp.ResponseText ;
			//Сообщить(Ответ);
			НАчалоСуммы = Стрнайти(Ответ,"<cost>"); //267
			ПравСЦеной = прав(Ответ,СтрДлина(Ответ) -НАчалоСуммы-5);
			КонецЦены = СтрНайти(ПравСЦеной,">");//17
			Цена = Лев(ПравСЦеной,КонецЦены-7);
			Попытка
				Объект.СтоимостьДоставки = Число(Цена);
			Исключение
			КонецПопытки;
			
			Дней = Стрнайти(ПравСЦеной,"<days>"); //18
			ПравДней = прав(ПравСЦеной,СтрДлина(ПравСЦеной) -Дней-5);
			КонецДней = СтрНайти(ПравДней,">");  //9
			Дней = Лев(ПравДней,КонецДней-7);
			Попытка
				Объект.МТД_ДнейДПД = Число(Дней);
			Исключение
			Конецпопытки;

КонецПроцедуры
Показать
6. noprogrammer 237 17.01.20 14:44 Сейчас в теме
(5) Зачем совсем весь код то :) нужен был код только начало процедур где идет создание СоединениеHTTP и вызов откуда происходит.
7. user1302499 17.01.20 14:55 Сейчас в теме
(6) Кнопку нажимаю и сразу вызывается процедура

&НаКлиенте
Процедура МТД_ДМТД_РасчитатьСтоимостьDPDПосле(Команда)
Попытка
Защита = Новый ЗащищенноеСоединениеOpenSSL();
Соединение = Новый HTTPСоединение("ws.dpd.ru",,,,,,Защита);
Исключение
Сообщить("Не удалось установить соединение с сервером онлайн-проверки:"
+ Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
Возврат;
КонецПопытки;
Показать
8. noprogrammer 237 17.01.20 15:01 Сейчас в теме
(7) Я же сказал, что на "клиенте" нет HTTPСоединение в ВебКлиенте!
Выполняй этот код на сервере
9. user1302499 17.01.20 15:01 Сейчас в теме
(8) Он изначально на сервере был, та же ошибка
10. noprogrammer 237 17.01.20 15:02 Сейчас в теме
(9) покажи код - как ты вызывал его на сервере.
11. user1302499 17.01.20 15:11 Сейчас в теме
&НаСервере
Процедура МТД_РасчетСтоимостиДПД_1()
Попытка
Защита = Новый ЗащищенноеСоединениеOpenSSL();
Соединение = Новый HTTPСоединение("ws.dpd.ru",,,,,,);
Исключение
Сообщить("Не удалось установить соединение с сервером онлайн-проверки:"
+ Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
Возврат;
КонецПопытки;

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
Показать

и т.д.....
12. noprogrammer 237 18.01.20 09:06 Сейчас в теме
(11) Ошибка скорее всего из-за отсутствия "защита" вот тут:
Соединение = Новый HTTPСоединение("ws.dpd.ru",,,,,,);
13. user1302499 20.01.20 08:41 Сейчас в теме
(12) Увы, но нет, ошибка не в этом. Может параметров не хватает?
14. noprogrammer 237 20.01.20 09:03 Сейчас в теме
(13) Если убрать попытку то какая конкретно ошибка выходит?
15. user1302499 20.01.20 09:35 Сейчас в теме
(14) Вывело ошибку мол в безопасном режиме не будет работать. Убрал безопасный режим

//Попытка
Защита = Новый ЗащищенноеСоединениеOpenSSL();
Соединение = Новый HTTPСоединение("ws.dpd.ru",,,,,,Защита);
//Исключение
Сообщить("Не удалось установить соединение с сервером онлайн-проверки:"
+ Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
Возврат;
//КонецПопытки;

Вывело только "Не удалось установить соединение с сервером онлайн-проверки:"

И соответственно на возврате завершилась. Видимо в этом и была ошибка.
16. user1302499 20.01.20 10:36 Сейчас в теме
(14) Спасибо большое. Не думал что ошибку так просто решить можно было)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот