На одном проекте потребовалось получать координаты выделенной области на яндекс карте, после долгих изучений получилось следующее:
Вид Формы: На карте выделяете объект, нажимаете кнопку Получить координаты выделенной области и заполняется таблица координат
Код инициализации карты и обработчик кнопки получения координат:
Процедура ИнициализироватьКарту() ПутьКФайлу = КаталогВременныхФайлов()+"yamaps.html"; Ф = новый Файл(ПутьКФайлу); Если Ф.Существует() Тогда УдалитьФайлы(ПутьКФайлу); КонецЕсли; Т = новый ТекстовыйДокумент; ТД = ЭтотОбъект.ПолучитьМакет("МакетЯндекс"); Т.УстановитьТекст(ТД.ПолучитьТекст()); Т.Записать(ПутьКФайлу); ЭлементыФормы.Эксплорер.Перейти(ПутьКФайлу); КонецПроцедуры Процедура ВыполнитьСкрипт(Команда) Экспорт ЭлементыФормы.Эксплорер.document.getElementById("WebClientOperation").value = Команда; ЭлементыФормы.Эксплорер.document.getElementById("WebClient").click(); КонецПроцедуры Процедура ПриОткрытии() ИнициализироватьКарту(); КонецПроцедуры Процедура ПолучитьКоординатыНажатие(Элемент) ВыполнитьСкрипт("GetGEO();"); ТекКоординаты=ЭлементыФормы.Эксплорер.document.getElementById("geometry").innerText; ТекКоординаты=СтрЗаменить(ТекКоординаты,"Координаты: [",""); МассивСтроки = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ТекКоординаты, "], [ "); Точки.Очистить(); Для Каждого стр из МассивСтроки Цикл Текстр=СтрЗаменить(стр,"[",""); Текстр=СтрЗаменить(Текстр,"]",""); Текстр=СокрЛП(Текстр); нСтрок=Точки.Добавить(); симвЗапятой=Найти(Текстр,","); нСтрок.Широта=Лев(Текстр,симвЗапятой-1); нСтрок.Долгота=Сред(Текстр,симвЗапятой+2,СтрДлина(Текстр)); КонецЦикла; //Сообщить(ТекКоординаты); КонецПроцедуры
Макет
<!DOCTYPE html"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <style type="text/css"> html { height: 100% } body { height: 100%; margin: 0px; padding: 0px } #map { height: 100% } </style> <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script> <script src="http://yandex.st/jquery/1.6.4/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> var index = 1; var MyMap, route; var clusterer; var PointArray = []; var noclick = false; ymaps.ready(init); function init(){ myMap = new ymaps.Map ("map", { center: [55.75, 37.62], zoom: 10 }), polygon = new ymaps.GeoObject({ geometry: { type: "Polygon", coordinates: [] } }); myMap.behaviors.enable('scrollZoom'); myMap.behaviors.disable('dblClickZoom'); myMap.events.add('click', function (e) { if (!noclick) { // addMarker(e.get('coords')); }else{ noclick = false; } }); myMap.events.add('drag end', function (e) { noclick = true; document.getElementById('CoordX').value = "0"; document.getElementById('CoordY').value = "0"; }); // создадим кластеризатор и запретим приближать карту при клике на кластеры //clusterer = new ymaps.Clusterer({clusterDisableClickZoom: true, synchAdd: true}); //myMap.geoObjects.add(clusterer); myMap.geoObjects.add(polygon); polygon.editor.startDrawing(); $('input').attr('disabled', false); // Обработка нажатия на любую кнопку. $('input').click( function () { // Отключаем кнопки, чтобы на карту нельзя было // добавить более одного редактируемого объекта (чтобы в них не запутаться). $('input').attr('disabled', true); GetGEO(); }); } function addMarker(coordPosition){ myPlacemark = new ymaps.Placemark(coordPosition, { // Свойства // Текст метки iconContent: 'Точка'+index }, { // Опции // Иконка метки будет растягиваться под ее контент preset: 'islands#blueStretchyIcon' }); myMap.geoObjects.add(myPlacemark); document.getElementById('CoordX').value = coordPosition[0].toPrecision(15); document.getElementById('CoordY').value = coordPosition[1].toPrecision(15); index++; } function calcRoute(options){ ymaps.route(options, { // Опции маршрутизатора mapStateAutoApply: true, // автоматически позиционировать карту avoidTrafficJams: false // Учитывать пробки }).then( function (router) { route = router; myMap.geoObjects.add(route); //заполняем и сохраняем инфо про маршрут document.getElementById('RouteInfo').value = "Длина маршрута - " + route.getHumanLength() + ". Время - " + route.getHumanJamsTime(); //генерация события для перехвата в 1С var evt = document.createEventObject(); document.body.fireEvent('ondatasetcomplete', evt); }, function (error) { alert("Возникла ошибка: " + error.message); }); } function calcLine(options){ var poly = new ymaps.Polyline(options, { hintContent: "Маршрут", balloonContent: "Маршрут экспедитора", balloonContentHeader: "", balloonContentBody: "", balloonContentFooter: "" }, { cursor: "pointer", draggable: false, hasBalloon: true, hasHint: true, interactiveZIndex: false, opacity: 1, openBalloonOnClick: true, openEmptyBalloon: false, openEmptyHint: false, openHintOnHover: true, strokeColor: '#E33926', strokeOpacity: 0.8, strokeStyle: '', strokeWidth: 5, syncOverlayInit: false, visible: true }); myMap.geoObjects.add(poly); myMap.setBounds(poly.geometry.getBounds()); } function Reset(){ // Удаляем все геообъекты на карте myMap.geoObjects.removeAll(); PointArray = []; index = 1; } function ChangeCityMSK(){ myMap.panTo([55.75, 37.62], { flying: 1 }); } function ChangeCitySPB(){ myMap.panTo([59.938531, 30.313497], { flying: 1 }); } function ChangeCityKRAS(){ myMap.panTo([45.04, 38.97], { flying: 1 }); } function ChangePlace(k,d){ myMap.panTo([k, d], { flying: 1 }); } function FindAdres(Adres){ Reset(); var myGeocoder = ymaps.geocode(Adres); myGeocoder.then( function (res){ var firstGeoObject = res.geoObjects.get(0); if(firstGeoObject != null){ myMap.panTo( // Координаты нового центра карты firstGeoObject.geometry.getCoordinates(), { /* Опции перемещения: разрешить уменьшать и затем увеличивать зум карты при перемещении между точками */ flying: true } ); myPlacemark = new ymaps.Placemark(firstGeoObject.geometry.getCoordinates(), { // Свойства // Текст метки iconContent: Adres }, { // Опции // Иконка метки будет растягиваться под ее контент preset: 'islands#blueStretchyIcon' }); myMap.geoObjects.add(myPlacemark); }else{ alert("Ничего не найдено");} } ); } function ReverseSearchAdres(CoordX, CoordY, Adres){ Reset(); var CoordPosition = [CoordX, CoordY]; myMap.panTo( // Координаты нового центра карты CoordPosition, { /* Опции перемещения: разрешить уменьшать и затем увеличивать зум карты при перемещении между точками */ flying: true } ); myPlacemark = new ymaps.Placemark(CoordPosition, { // Свойства // Текст метки iconContent: Adres }, { // Опции // Иконка метки будет растягиваться под ее контент preset: 'islands#blueStretchyIcon' }); myMap.geoObjects.add(myPlacemark); } function addToPointArrayM(CoordX, CoordY, TextC, Text){ var CoordPosition = [CoordX, CoordY]; myPlacemark = new ymaps.Placemark(CoordPosition, { // Свойства // Текст метки iconContent: Text }, { // Опции // Иконка метки будет растягиваться под ее контент preset: TextC }); myMap.geoObjects.add(myPlacemark); } function addToPointArrayPointOne(CoordX, CoordY, ID, Text){ var point = new ymaps.GeoObject({ geometry: {type: "Point", coordinates: [CoordX, CoordY>, properties: { clusterCaption: ID, iconContent: ID, hintContent: ID, balloonContent: Text, balloonContentBody: Text } }); myMap.geoObjects.add(point); } function addToPointArray(CoordX, CoordY, ID, Text){ var point = new ymaps.GeoObject({ geometry: {type: "Point", coordinates: [CoordX, CoordY>, properties: { clusterCaption: ID, iconContent: ID, hintContent: ID, balloonContent: Text, balloonContentBody: Text } }); PointArray.push(point); } function drawCluster(){ clusterer.add(PointArray); myMap.geoObjects.add(clusterer); } function createPolygon(ArrayPoint, Name, color) { // Создаем многоугольник myPolygon = new ymaps.Polygon([ // Координаты вершин внешней границы многоугольника. ArrayPoint ], { //Свойства hintContent: Name }, { // Опции. // Цвет заливки (зеленый) fillColor: color, // Цвет границ (синий) strokeColor: '#0000FF', // Прозрачность (полупрозрачная заливка) opacity: 0.6, // Ширина линии strokeWidth: 5, // Стиль линии strokeStyle: 'shortdash' }); myMap.geoObjects.add(myPolygon); } function WebClientClick() { //очистка перед кликом координат, иначе после клика в упр. формах идет считывание координат document.getElementById('CoordX').value = "0"; document.getElementById('CoordY').value = "0"; var WebClientOperation = document.getElementById("WebClientOperation").value; //alert(WebClientOperation); switch (WebClientOperation) { case "0": // ничего не делаем var a = 1; default: // запускаем функцию eval(WebClientOperation); } document.getElementById('WebClientOperation').value = "0"; } function GetGEO(){ polygon.editor.stopEditing(); printGeometry(polygon.geometry.getCoordinates()); } // Выводит массив координат геообъекта в <div id="geometry"> function printGeometry (coords) { $('#geometry').html('Координаты: ' + stringify(coords)); function stringify (coords) { var res = ''; if ($.isArray(coords)) { res = '[ '; for (var i = 0, l = coords.length; i < l; i++) { if (i > 0) { res += ', '; } res += stringify(coords[i]); } res += ' ]'; } else if (typeof coords == 'number') { res = coords.toPrecision(6); } else if (coords.toString) { res = coords.toString(); } return res; } } </script> </head> <body> <div id="geometry"/></div> <div id="map" style="width:100%; height:100%"></div> <input type="hidden" id="CoordX" name="CoordX" value="0"></input> <input type="hidden" id="CoordY" name="CoordY" value="0"></input> <input type="hidden" id="RouteInfo" name="RouteInfo" value=""></input> <input type="hidden" id="WebClientOperation" name="WebClientOperation" value="0"></input> <input type="hidden" id="WebClient" name="WebClient" onclick="WebClientClick();"></input> <!-- <input type="button" value="Завершить редактирование" id="stopEditPolyline"/> --> </body> </html>
Пример о том,как вывести яндекс карту на форму и далее работать с ней:
Основной HTML код карты хранится в макете:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Примеры. Геокодирование.</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="http://api-maps.yandex.ru/1.1/index.xml?key=ANpUFEkFAAAAf7jmJwMAHGZHrcLKDsbEqEVjEUtCmufxQMwAAAAAAAAAAAAvVrubVT4btztbduoIgTLAeFILaQ==" type="text/javascript"></script> <script type="text/javascript"> var router; var myPoints = new Array(); var myRouts = new Array(); var strOpen = "OPEN"; var strKontr = "Kontragent"; var t = new YMaps.Template('<b>$[name]</b><div id="descrID" >$[description]</div>'); YMaps.Templates.add("my#template", t); var KopdinatShirota = 0; var KopdinatDolgota = 0; var UID_Zakaza = ""; /*vstavkaStiley; var map, geoResult; YMaps.jQuery(function () { map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]); map.setCenter(new YMaps.GeoPoint(37.62, 55.75), 12); }); function showAddress (value, contrag, Styles, UID) { var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds()}); YMaps.Events.observe(geocoder, geocoder.Events.Load, function () { if (this.length()) { geoResult = this.get(0); var point = new YMaps.GeoPoint(geoResult._point.__lng, geoResult._point.__lat); var placemark = new YMaps.Placemark(point, {style: Styles}); placemark.name = UID; placemark.description = contrag; myPoints.push(placemark); map.addOverlay(placemark); return placemark; }else { } }); YMaps.Events.observe(geocoder, geocoder.Events.Fault, function (geocoder, error) { alert("Произошла ошибка: " + error); return null; }) } function showAddressCoord (shirota, dolgota, contrag, Styles, UID) { var point = new YMaps.GeoPoint(dolgota, shirota); var placemark = new YMaps.Placemark(point, {style: Styles}); placemark.name = UID; placemark.description = contrag; myPoints.push(placemark); map.addOverlay(placemark); return placemark; } function removeAllOverlays (map) { map.removeAllOverlays(); } function AddRoute(wayPoint1, wayPoint2) { if (myRouts.length>0) {lastRouter = myRouts[myRouts.length-1]; map.removeOverlay(lastRouter)}; var myRouter = new YMaps.Router([wayPoint1, wayPoint2], [], {viewAutoApply: true}); map.addOverlay(myRouter); YMaps.Events.observe(myRouter, myRouter.Events.Success, function (myRouter) { myRouter.getWayPoint(0).setIconContent('Начало маршрута'); myRouter.getWayPoint(1).setIconContent('Конец маршрута'); dlMar = myRouter.getDistance()/1000; document.title = 'Дистанция: '+ dlMar.toFixed(2); }); myRouts.push(myRouter); return true; } function mapRazmer(map, SentrSh, SentrDlg, razmer) { map.setCenter(new YMaps.GeoPoint(SentrSh, SentrDlg), razmer); } function changeStyle(numTochki, imStyle){ var restoreDefault = true; tochka = myPoints[numTochki]; tochka.setOptions({style: imStyle}, restoreDefault); point = tochka.getCoordPoint(); map.setCenter(new YMaps.GeoPoint(point.__lng, point.__lat), 12); map.redraw(); return tochka.description; } </script> </head> <body //~~onload~~> <div id="YMapsID" style="width:100%;height:100%"></div> </form> </body> </html>
Код вывода карты:
//берем HTML-текст из макета и доделываем его //создаем столько стилей, сколько есть различных картинок в папке "icons_" //Загружаем в поле HTML-документа //и позиционируем центр карты на Москву Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) Макет = ПолучитьМакет("Макет"); КодХТМЛ = Макет.ПолучитьТекст(); СтрокаСтиляНачальная = "var BurG = new YMaps.Style(); |BurG.iconStyle = new YMaps.IconStyle(); |BurG.iconStyle.offset = new YMaps.Point(-12, -12); |BurG.iconStyle.href = ""http://www.burgerking.ru/favicon.ico""; |BurG.iconStyle.size = new YMaps.Point(20, 20); |BurG.hideIcon = false; |BurG.balloonContentStyle = new YMaps.BalloonContentStyle(""my#template"");"; СтрокаСтиляИтоговая = ""; // //имяКаталогаКартинок = "D:\!1C\MAPS\icons_"; //КаталогКартинок = Новый Файл(имяКаталогаКартинок); //Если КаталогКартинок.ЭтоКаталог() тогда // списокИменКартинок = новый таблицаЗначений; // списокИменКартинок.Колонки.Добавить("ИмяСтиля"); // списокИменКартинок.Колонки.Добавить("ИмяФайлаКартинки"); // МассивНайденных = НайтиФайлы(имяКаталогаКартинок, "*.gif"); // Для Каждого Файл из МассивНайденных Цикл // // времСтрокаСтиля = СтрокаСтиляНачальная; // времСтрокаСтиля = стрЗаменить(времСтрокаСтиля, "BurG", сокрЛП(Файл.ИмяБезРасширения)); // времСтрокаСтиля = стрЗаменить(времСтрокаСтиля, "C:/icons_/kv2_5_x.gif", "C:/icons_/" + сокрЛП(Файл.Имя)); // // СтрокаСтиляИтоговая = СтрокаСтиляИтоговая + времСтрокаСтиля + символы.ПС; // // КонецЦикла; //конецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВидыОбъектов.Ссылка, | ВидыОбъектов.ПутьКИконке, | ВидыОбъектов.Код |ИЗ | Справочник.ВидыОбъектов КАК ВидыОбъектов |ГДЕ | ВидыОбъектов.ПометкаУдаления = ЛОЖЬ"; Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл времСтрокаСтиля = СтрокаСтиляНачальная; времСтрокаСтиля = стрЗаменить(времСтрокаСтиля, "BurG", "s"+Строка(ВыборкаДетальныеЗаписи.код)); времСтрокаСтиля = стрЗаменить(времСтрокаСтиля, "http://www.burgerking.ru/favicon.ico", сокрЛП(ВыборкаДетальныеЗаписи.ПутьКИконке)); СтрокаСтиляИтоговая = СтрокаСтиляИтоговая + времСтрокаСтиля + символы.ПС; КонецЦикла; СтрокаСтиляИтоговая = СтрокаСтиляИтоговая + СтрокаСтиляНачальная + символы.ПС; КодХТМЛ = стрЗаменить(КодХТМЛ, "/*vstavkaStiley;", СтрокаСтиляИтоговая); путьККаталогуКартинок = СтрЗаменить(КаталогПрограммы(), "\", "/"); КодХТМЛ = СтрЗаменить(КодХТМЛ,"C:/",путьККаталогуКартинок); ЭлементыФормы.Карта.УстановитьТекст(КодХТМЛ); табАдресов = получитьтабАдресов(); табУникальныхАдресов = табАдресов.скопировать(); табУникальныхАдресов.свернуть("Уник"); тзДанных = табАдресов.скопировать(); табАдресов.очистить(); Для Каждого стр из табУникальныхАдресов Цикл Отбор = Новый Структура(); Отбор.Вставить("Уник",стр.Уник); Строки = тзДанных.НайтиСтроки(Отбор); НовСтр = табАдресов.добавить(); НовСтр.уник = стр.уник; Если Строки.Количество() > 0 Тогда для Каждого тздстр из Строки Цикл НовСтр.Адрес = тздстр.Адрес; НовСтр.КД = тздстр.КД; НовСтр.КШ = тздстр.КШ; НовСтр.ВидОбъекта = тздстр.ВидОбъекта; НовСтр.Наименование=Строка(НовСтр.Наименование)+Строка(тздстр.Наименование)+"; "; КонецЦикла; КонецЕсли; КонецЦикла; ЭлементыФормы.табАдресов.СоздатьКолонки(); ВыборМасштаба = "50%"; ВыборРегиона = "Москва"; ЭлементыФормы.Надпись24.Заголовок = "Точек: "+Строка(табАдресов.количество()); КонецПроцедуры // Вывод точек на карту Процедура ОсновныеДействияФормыОсновныеДействияФормыВыполнить(Кнопка) //имя стиля совпадает с именем картинки без расширения Всего=Строка(табАдресов.Количество()); н=0; Для каждого строкаАдреса Из табАдресов Цикл н=н+1; Состояние("Вывод "+Строка(н)+" из "+Всего); ////ЭТО ПРИМЕР ВЫВОДА ТОГО ИЛИ ИНОГО МАРКЕРА В ЗАВИСИМОСТИ ОТ НЕКОЕГО ПАРАМЕТРА //Если строкаАдреса.ДокументПродажи.суммаДокумента <1000 тогда // имяСтиля = "BurG"; //ИначеЕсли строкаАдреса.ДокументПродажи.суммаДокумента <10000 тогда // имяСтиля = "tr2_3_x"; //ИначеЕсли строкаАдреса.ДокументПродажи.суммаДокумента <20000 тогда // имяСтиля = "kv3_4_x"; //ИначеЕсли строкаАдреса.ДокументПродажи.суммаДокумента <50000 тогда // имяСтиля = "tr4_1_x"; //ИначеЕсли строкаАдреса.ДокументПродажи.суммаДокумента <100000 тогда // имяСтиля = "kv5_2_x"; //Иначе // имяСтиля = "cr6_3_x"; //конецЕсли; УИД_Дока = Строка(н); имяСтиля = "s"+Строка(строкаАдреса.ВидОбъекта.код); Попытка Если ЗначениеЗаполнено(строкаАдреса.КД) Тогда ВызовФункции = "showAddressCoord(" + сокрЛП(строкаАдреса.КШ) + ", " + сокрЛП(строкаАдреса.КД) + ", '"+ сокрЛП(строкаАдреса.адрес) + "', " + имяСтиля + ", '" + сокрЛП(строкаАдреса.ВидОбъекта.наименование) + "')"; Иначе ВызовФункции = "showAddress('" + сокрЛП(строкаАдреса.адрес) + "', '" + сокрЛП(строкаАдреса.адрес) + "', " + имяСтиля + ", '" + сокрЛП(строкаАдреса.ВидОбъекта.наименование) + "')"; КонецЕсли; ЭлементыФормы.Карта.Document.parentWindow.eval(ВызовФункции); исключение Сообщить("Точка с адресом " + сокрЛП(строкаАдреса.адрес) + " не может быть отбражена на карте!" ); конецПопытки КонецЦикла; ТочкиНеСозданы = Ложь; ЭлементыФормы.Карта.ПолучитьТекст(); КонецПроцедуры //Изменение масштаба Процедура Кнопка1Нажатие(Элемент) если ЭлементыФормы.ВыборРегиона.значение = "Москва" Тогда СтрокаКоординат = "37.64, 55.76, "; ИначеЕсли ЭлементыФормы.ВыборРегиона.значение = "Тверь" Тогда СтрокаКоординат = "35.90, 56.83, "; ИначеЕсли ЭлементыФормы.ВыборРегиона.значение = "Балашиха" Тогда СтрокаКоординат = "37.97, 55.82, "; Иначе СтрокаКоординат = "37.64, 55.76, "; конецесли; Если ВыборМасштаба = "" тогда возврат; конецесли; числоМасштаба = Число(Лев(ВыборМасштаба, стрдлина(ВыборМасштаба)-1)); числоМасштаба = числоМасштаба + 5; ВыборМасштаба = строка(числоМасштаба) + "%"; ТекущийМасштаб = Строка(Цел((числоМасштаба/125)*(20)+4)); если стрДлина(ТекущийМасштаб) =1 тогда ТекущийМасштаб = "0" + ТекущийМасштаб; конецесли; ЭлементыФормы.Карта.Document.parentWindow.eval("mapRazmer(map," + СтрокаКоординат + ТекущийМасштаб + ")"); КонецПроцедуры
Пример обратного геокодирования - получение координат по адресу:
Процедура ПолучитьКоординаты() Экспорт Яндекс = Новый HTTPСоединение("geocode-maps.yandex.ru",,,,,Истина); ВременныйФайл = КаталогВременныхФайлов() + "Yandex_geocode_" + СокрЛП(Новый УникальныйИдентификатор); Попытка Яндекс.Получить("/1.x/?geocode=" + Адрес + "&results=1", ВременныйФайл); Исключение Сообщить("Ошибка при попытке геокодировать по яндексу адрес: " + Адрес); Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ВременныйФайл); ПостроительDOM = Новый ПостроительDOM; ДокументДОМ = ПостроительDOM.Прочитать(ЧтениеXML); СписокText = ДокументДОМ.ПолучитьЭлементыПоИмени("text"); СписокPos = ДокументДОМ.ПолучитьЭлементыПоИмени("pos"); Если (СписокText.Количество() = 0) ИЛИ (СписокPos.Количество() = 0) Тогда Возврат; КонецЕсли; Для ъ = 0 по СписокText.Количество()-1 Цикл Координаты = СписокPos[Ъ].ТекстовоеСодержимое; Разделитель = Найти(Координаты," "); Широта = Число(Сред(Координаты, Разделитель + 1)); Долгота = Число(Лев(Координаты, Разделитель - 1)); Если Широта = 0 ИЛИ Долгота = 0 Тогда Продолжить; КонецЕсли; КД = Долгота; КШ = Широта; КонецЦикла; КонецПроцедуры
Обработка вырванная из конфигурации: YandexMap.rar
Можно ее использовать как макет для создания обработки под свои требования.
Пример автоматизации в котором это использовалось.