Вывод расположения контрагентов из 1С 8 на карту google map используя ПолеHTMLДокумента |
Написал Валецкий Станислав | |
24.02.2010 | |
Сегодня на сайтах очень популярным является вывод информации о расположении объектов на карту google или yandex. Т.к. в 1С 8 существует такой объект как "ПолеHTMLДокумента", то реализовать такую возможность оказалось несложно. В качестве применения данной функции можно рассмотреть, например, вывод адреса или группы адресов контрагентов на карту. Для реализации данной возможности потребовались небольшие знания web программирования. Результат получился довольно интересный. //Первым делом на форме добавляем объект "ПолеHTMLДокумента". //В него мы будет собственно выводить карту с нашими объектами. //Далее формируем таблицу адресов, которые необходимо вывести //адрес - искомый адрес //описание - всплывающая подсказа на этом объекте ТаблицаАдресов = Новый ТаблицаЗначений; ТаблицаАдресов.Колонки.Добавить("Адрес"); ТаблицаАдресов.Колонки.Добавить("Описание"); //заполняем таблицу объектов //для удобства вынесем это в отдельную функцию Выборка = Справочники.Контрагенты.Выбрать(); Пока Выборка.Следующий() Цикл ТаблицаАдресов = ДобавитьАдресВТаблицу(ТаблицаАдресов,Выборка.Адрес,Выборка.Наименование); Конеццикла; //вызываем процедуру формирования карты ВыводТаблицыОбъектовНаКартуGoogleMaps(ТаблицаАдресов,"Тест вывода"); Функция ДобавитьАдресВТаблицу(ТаблицаАдресов,Адрес,Описание) НоваяСтрока = ТаблицаАдресов.Добавить(); НоваяСтрока.Адрес = Адрес; НоваяСтрока.Описание = Описание; Возврат ТаблицаАдресов; Конецфункции //Процедура выводит таблицу с адресами принятую на вход на карту google map Процедура ВыводТаблицыОбъектовНаКартуGoogleMaps(ТаблицаАдресов, ЗаголовокФормы = "") //масштаб отображения карты МасштабКарты = 12; //ключ карты, которые нужно получить на сайте google //использовать можно ключ для любого домена apikey ="ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA"; // формируем HTML текст, который и выводит карту ТекстДокумента = " | <meta http-equiv="" content="" text="" charset="UTF-8"> | | <script src=""https://maps.google.com/maps?file=api&key="" type=""text/javascript""></script> | <script type=""text/javascript""> | | var map = null; | var geocoder = null; | var marker = null; | | function initialize() { | if (GBrowserIsCompatible()) { | map = new GMap2(document.getElementById(""map_canvas"")); | geocoder = new GClientGeocoder(); | var customUI = map.getDefaultUI(); | customUI.maptypes.hybrid = false; | map.setUI(customUI);"; Для Каждого Адр Из ТаблицаАдресов Цикл ТекстДокумента = ТекстДокумента + " | showAddress(""" + Адр.Адрес + """,""" + Адр.Описание + """);"; Конеццикла; ТекстДокумента = ТекстДокумента + " | } | } | | function showAddress(address,comment) { | if (geocoder) { | geocoder.getLatLng( | address, | function(point) { | if (!point) { | alert(address + "" не найден""); | } else { | map.setCenter(point," + МасштабКарты + "); | var markerOptions = { title:comment }; | var marker = new GMarker(point,markerOptions); | map.addOverlay(marker); | } | } | ); | } | } | </script></meta>"; ЭлементыФормы.ПолеHTMLДокумента.УстановитьТекст(ТекстДокумента); КонецПроцедуры |