Имя: Пароль:
1C
1С v8
Яндекс карты: HTTPСоединение с сайтом работает на 8.2, но не работает на 8.1
0 skorm
 
03.07.13
15:09
Доброго времени суток!

Столкнулся с такой проблемой: есть обработка на 8.2, которая получает координаты (широту и долготу) по адресу. Работает на ура в обычном приложении под 8.2, но метод "получить()" объекта "HTTPСоединение" не хочет работать под 8.1.

Кто в теме, помогите пжлст!
1 skorm
 
03.07.13
15:10
Вот код:

(идентичный на 8.2 и 8.1)

Перем _КаталогВременныхФайлов;
Перем ПроксиСервер;

Процедура КнопкаСформироватьНажатие(Кнопка)
   // Вставить содержимое обработчика.
   ПроксиСервер = Новый ИнтернетПрокси;
   ПроксиСервер.Пользователь = "vvk";
   ПроксиСервер.Пароль       = "Dhtq-07!";
   
   Яндекс = Новый HTTPСоединение("geocode-maps.yandex.ru",,"vvk","Dhtq-07!",ПроксиСервер);
   
   Для Каждого Строка Из ТаблицаАдресов Цикл
       
       Если Строка.Представление = "" тогда
           Продолжить;
       КонецЕсли;
       
       Строка.Широта = 0;
       Строка.Долгота = 0;
       
       Адрес = Строка.Представление;
       
       ВременныйФайл = _КаталогВременныхФайлов + "Yandex_geocode_81";
       Попытка
           Яндекс.Получить("/1.x/?geocode=" + Адрес + "&results=10", ВременныйФайл);
       Исключение
           Сообщить("Ошибка при попытке геокодировать по яндексу адрес: " + Адрес);
           Сообщить(ОписаниеОшибки());
           Возврат;
       КонецПопытки;
       
       /////
       ЧтениеXML = Новый ЧтениеXML;
       ЧтениеXML.ОткрытьФайл(ВременныйФайл);
       
       ПостроительDOM            = Новый ПостроительDOM;
       ДокументДОМ            = ПостроительDOM.Прочитать(ЧтениеXML);
       
       СписокText                = ДокументДОМ.ПолучитьЭлементыПоИмени("text");
       СписокPos                = ДокументДОМ.ПолучитьЭлементыПоИмени("pos");
       СписокPrecision         = ДокументДОМ.ПолучитьЭлементыПоИмени("precision");
           
       Если (СписокText.Количество() = 0) ИЛИ (СписокPos.Количество() = 0) Тогда
           Продолжить;    
       КонецЕсли;
       
       
               
       Если СокрЛП(СписокPrecision[0].ТекстовоеСодержимое) = "exact"
           ИЛИ СокрЛП(СписокPrecision[0].ТекстовоеСодержимое) = "number" Тогда
           
           Строка.Точность = "координаты успешно получены";
           
           Координаты = СписокPos[0].ТекстовоеСодержимое;
           Разделитель = Найти(Координаты," ");
                       
           Строка.Широта = Число(Сред(Координаты, Разделитель + 1));
           Строка.Долгота = Число(Лев(Координаты, Разделитель - 1));
           
       Иначе    
           
           Строка.Точность = "не удалось получить координаты по адресу";
           
       КонецЕсли;    
               
       /////
       
   КонецЦикла;
   
КонецПроцедуры

Процедура ПриОткрытии()
   // Вставить содержимое обработчика.
   НоваяСтрока = ТаблицаАдресов.Добавить();
   НоваяСтрока.Представление = "г.Томск, Фрунзе проспект, д. 1";
       
КонецПроцедуры

_КаталогВременныхФайлов = "C:\temp\";
2 skorm
 
03.07.13
15:11
Не то, вот правильный:

Перем _КаталогВременныхФайлов;
Перем ПроксиСервер;

Процедура КнопкаСформироватьНажатие(Кнопка)
   // Вставить содержимое обработчика.
   ПроксиСервер = Новый ИнтернетПрокси;
   ПроксиСервер.Пользователь = "vvk";
   ПроксиСервер.Пароль       = "Dhtq-07!";
   
   Яндекс = Новый HTTPСоединение("geocode-maps.yandex.ru",,,,ПроксиСервер);
   
   Для Каждого Строка Из ТаблицаАдресов Цикл
       
       Если Строка.Представление = "" тогда
           Продолжить;
       КонецЕсли;
       
       Строка.Широта = 0;
       Строка.Долгота = 0;
       
       Адрес = Строка.Представление;
       
       ВременныйФайл = _КаталогВременныхФайлов + "Yandex_geocode_81";
       Попытка
           Яндекс.Получить("/1.x/?geocode=" + Адрес + "&results=10", ВременныйФайл);
       Исключение
           Сообщить("Ошибка при попытке геокодировать по яндексу адрес: " + Адрес);
           Сообщить(ОписаниеОшибки());
           Возврат;
       КонецПопытки;
       
       /////
       ЧтениеXML = Новый ЧтениеXML;
       ЧтениеXML.ОткрытьФайл(ВременныйФайл);
       
       ПостроительDOM            = Новый ПостроительDOM;
       ДокументДОМ            = ПостроительDOM.Прочитать(ЧтениеXML);
       
       СписокText                = ДокументДОМ.ПолучитьЭлементыПоИмени("text");
       СписокPos                = ДокументДОМ.ПолучитьЭлементыПоИмени("pos");
       СписокPrecision         = ДокументДОМ.ПолучитьЭлементыПоИмени("precision");
           
       Если (СписокText.Количество() = 0) ИЛИ (СписокPos.Количество() = 0) Тогда
           Продолжить;    
       КонецЕсли;
       
       
               
       Если СокрЛП(СписокPrecision[0].ТекстовоеСодержимое) = "exact"
           ИЛИ СокрЛП(СписокPrecision[0].ТекстовоеСодержимое) = "number" Тогда
           
           Строка.Точность = "координаты успешно получены";
           
           Координаты = СписокPos[0].ТекстовоеСодержимое;
           Разделитель = Найти(Координаты," ");
                       
           Строка.Широта = Число(Сред(Координаты, Разделитель + 1));
           Строка.Долгота = Число(Лев(Координаты, Разделитель - 1));
           
       Иначе    
           
           Строка.Точность = "не удалось получить координаты по адресу";
           
       КонецЕсли;    
               
       /////
       
   КонецЦикла;
   
КонецПроцедуры

Процедура ПриОткрытии()
   // Вставить содержимое обработчика.
   НоваяСтрока = ТаблицаАдресов.Добавить();
   НоваяСтрока.Представление = "г.Томск, Фрунзе проспект, д. 1";
       
КонецПроцедуры

_КаталогВременныхФайлов = "C:\temp\";
3 vs1c
 
03.07.13
16:17
"не хочет работать под 8.1" - как это выглядит (ошибки, сообщения)?
4 oleg_km
 
03.07.13
16:21
действительно, в каком месте ошибка? У меня точно такой же УРЛ: geocode-maps.yandex.ru/1.x/?&geocode=
5 ИС-2
 
naïve
03.07.13
16:27
что будет, есди 8.2 запустить в режиме совместимости? Может фаервол, что-то блокирует
6 skorm
 
05.07.13
08:35
Решил задачу по-другому - из 8.1 цепляюсь к 8.2 посредством COM-соединения
7 vs1c
 
05.07.13
19:07
Ну, что - молодец!
8 artems
 
05.07.13
19:48
Странно что под 8.1 не работает