Профессиональные решения для 1С 8.2 Среда, 13.12.2017, 08:26
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Поделиться ссылкой


Главная » 2013 » Октябрь » 7 » Яндекс Карты (Yandex Maps) в 1С
00:17
Яндекс Карты (Yandex Maps) в 1С
Уважаемая мной компания Yandex предоставляет пользователям очень качественный и при этом бесплатный сервис по использованию географических карт в интернет-сайтах и приложениях. При этом документация на API является открытой, что позволяет широкому кругу программистов использовать карты в своих разработках http://api.yandex.ru/maps/doc/intro/concepts/intro.xml 
Предлагаю вашему вниманию демо-обработку, которая по адресу, набранному в строке, показывает расположение объекта на карте, при этом масштаб карты можно изменять ползунковым регулятором. Если встраивать функционал, к примеру в справочник контрагентов, то в качестве адресной строки вы можете передавать адрес контрагента. Для работы обработки требуется выход в интернет, что в современных условиях не должно быть проблемой даже в мобильном варианте использования программы. Координаты контрагентов хранить не требуется, мы узнаем их у Яндекса по запросу. Обратите внимание, что поиск по адресу имеет интеллект, несмотря на ошибку, допущенную в слове Москва (написано Моска), Yandex находит правильное местоположение объекта.
Код 1С приведен ниже и его функционал достаточно очевиден:

Перем ШД;
Функция ПолучитьКоординаты(Знач ТекАдрес)
     Попытка   
         URL="http://psearch-maps.yandex.ru/1.x/?text="+СокрЛП(Адрес);
         Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl");
         Скрипт.language = "vbscript";
         xml = Новый COMОбъект("Microsoft.XMLHTTP");
         xml.Open("GET", url, 0);
         xml.Send();
         Stream = Новый COMОбъект("ADODB.Stream");
         Stream.Mode = 3;
         Stream.Type = 1;
         Stream.Open();
         Скрипт.AddObject("Stream", Stream);
         Скрипт.AddObject("xml", xml);
         Скрипт.Eval("Stream.Write(xml.responseBody)");
         ИмяФ=ПолучитьИмяВременногоФайла("xml");
         Stream.SaveToFile(ИмяФ, 2);
         ОбъектХМЛ=Новый ЧтениеXML;
         ОбъектХМЛ.ОткрытьФайл(ИмяФ);
         Пока ОбъектХМЛ.Прочитать() Цикл
             ТекИмя=ОбъектХМЛ.Имя;
             Если ОбъектХМЛ.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
                 Если ТекИмя="pos" Тогда
                     Пока ОбъектХМЛ.Прочитать() Цикл
                         Если ОбъектХМЛ.ТипУзла =ТипУзлаXML.Текст Тогда
                             ШД=ОбъектХМЛ.Значение;
                             Прервать;
                         КонецЕсли;
                     КонецЦикла;
                     Прервать;
                 КонецЕсли;
             КонецЕсли;
         КонецЦикла;
         ОбъектХМЛ.Закрыть();
     Исключение
     КонецПопытки;
     Возврат ШД;
КонецФункции
Процедура АдресОткрытие(Элемент, СтандартнаяОбработка)
     СтандартнаяОбработка=ложь;
     Если ПустаяСтрока(Адрес) Тогда
         Возврат;
     КонецЕсли;
     ШД=ПолучитьКоординаты(Адрес);
     Если ПустаяСтрока(ШД) Тогда
         Предупреждение("Адрес не найден или произошла ошибка!",10);
         Возврат;
     КонецЕсли;
     ШД=СтрЗаменить(ШД," ",",");
     Масштаб=18-ЭтаФорма.ЭлементыФормы.ПолосаРегулирования1.Значение;   
     ПоказатьКарту(Масштаб,ШД);
КонецПроцедуры
Процедура ПриОткрытии()
     ШД="";
     //начальный адрес для демо-примера
     Адрес="Моска Ленинский проспект 59";
     ЭтаФорма.ЭлементыФормы.ПолосаРегулирования1.Значение=5;
КонецПроцедуры
Процедура ПоказатьКарту(Знач Масштаб,Знач ШД)
 URL="http://static-maps.yandex.ru/1.x/?ll="+ШД+"&size=520,335&z="+Масштаб+"&l=map&pt="+ШД+",pm2wtm";
     ЭтаФорма.ЭлементыФормы.ПолеHTMLДокумента1.Перейти(URL);
КонецПроцедуры
Процедура ПолосаРегулирования1ПриИзменении(Элемент)
     Масштаб=18-ЭтаФорма.ЭлементыФормы.ПолосаРегулирования1.Значение;
     Если Не ПустаяСтрока(ШД) Тогда
         ПоказатьКарту(Масштаб,ШД);
     КонецЕсли;
КонецПроцедуры
 
Код 1С добавлен на сайт при помощи оригинальной обработки
  
Вид формы на картинке:
На основе данного примера вы можете создать аналогичные и более сложные решения.  Обработка находится в каталоге файлов в разделе обработки  YandexMaps.epf
 
Просмотров: 5215 | Добавил: Programmer1C | Рейтинг: 0.0/0
Всего комментариев: 1
1  
Обратите внимание, что поиск по адресу имеет интеллект, несмотря на ошибку, допущенную в слове Москва (написано Моска), Yandex находит правильное местоположение объекта.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Календарь
«  Октябрь 2013  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031
Архив записей
Друзья сайта
  • Создать сайт
  • Современная Ароматерапия
  • Биодобавки из США
  • Заработок для web-мастера

  • Рейтинг@Mail.ru
    www.professional-1c.ru © 2017
    Бесплатный хостинг uCoz