Построение многоугольника на карте Яндекс API по координатам из справочника 1С

1. Kuklachel 28.05.13 10:53 Сейчас в теме
Добрый день. Есть такая задача. На форме 1С отображать карту с контуром здания по координатам заранее внесенным в справочник. В макете я пишу такой скрипт JS:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>

    <script src="http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU" type="text/javascript"></script>
         
		 <style type="text/css">
         html, body, #map {
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
        }
		  </style>
<script type="text/javascript">
var myMap;
var myPolygon;
var myButton;

// Дождёмся загрузки API и готовности DOM.
ymaps.ready(init);

function init () {

    myMap = new ymaps.Map('map', {
        center:[55.74131, 37.52620], 
        zoom:16
    });
         myMap.behaviors.enable('scrollZoom');
	     myMap.controls.add(
	     new ymaps.control.ZoomControl()
         );
		 myMap.controls.add('typeSelector');
         
         //второй контур
		 function AddPolygon(Name, Descr, Cont, Att, Latt, Params) {
		 
		 myPolygon = new ymaps.Polygon([
        [
                [Att, Latt], 
		],
    ], {
        balloonContent: Name,
        hintContent: Descr
    }, {
        fillColor: 'FF3030',
        strokeColor: '#CD2626',
        opacity: 0.5,
        strokeWidth: 1.5,
        strokeStyle: 'solid'
    });
         myMap.geoObjects.add(myPolygon);
	     //myPolygon.options.set("zIndex",750)
         return myPolygon;
		 }
		 function AddGroup(Name, Descr, Cont, Latt, Att, Params)	{
		
    	}
	 //Создаем кнопку
 	 myButton = new ymaps.control.Button('<b>Редактировать контур<b>');
     
	 myButton.events
     .add('click', function () {})
     .add('select', function () {myPolygon.editor.startEditing();})
     .add('deselect', function () {myPolygon.editor.stopEditing();});
     
	 myMap.controls.add(myButton);
}
</script>
</head>

<body>
    <div id="map"></div>
</body>

</html>
Показать


Далее, в модуле формы:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) 
	
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
	
	Макет = ОбработкаОбъект.ПолучитьМакет("Макет");
	ТекстHTML = Макет.ПолучитьТекст();

КонецПроцедуры

&НаСервере
Функция ПолучитьТБЗ(Параметр1 = Неопределено)

	тбз.Загрузить(Справочники.КоординатыОбъектов.НайтиПоНаименованию(Параметр1).Координаты.Выгрузить());
	
	Возврат Истина;

КонецФункции 


&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ПолучитьТБЗ("КоординатыОбъектов");
	Для Каждого Поле Из ТБЗ Цикл
		
		Широта = Поле.Широта;
		Долгота = Поле.Долгота;
		
		Элементы.ТекстHTML.Документ.parentWindow.eval("AddPolygon(""" + Формат(Широта, "ЧРД=.; ЧГ=0") + ", " + Формат(Долгота, "ЧРД=.; ЧГ=0") + ")");
		
	КонецЦикла;

КонецПроцедуры
Показать

Вроде все верно. До этого я писал обработку с простановкой маркеров на карте, по координатам из табличной части формы, у меня все отлично работало. Но здесь выдает ошибку "Метод объекта не обнаружен (eval)"! Помогите, пожалуйста, может кто-то сталкивался с данной проблемой.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Rovan 22 28.05.13 11:10 Сейчас в теме
я вот так делал

КодХТМЛ = "
|<!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"">
....
|<body onload = ""javascript:showA()"">
| <div id=""YMapsID"" style=""width:800px;height:600px""></div>
|</form>
|</body>
|
|</html>";

ЭлементыФормы.Карта.УстановитьТекст(КодХТМЛ);
3. Kuklachel 28.05.13 11:26 Сейчас в теме
(2) Rovan, Вы имеете ввиду, что обращались к скрипту JS в модуле формы?
4. Kuklachel 28.05.13 12:02 Сейчас в теме
5. Rovan 22 28.05.13 12:16 Сейчас в теме
В модуле формы создаю HTML-строку, которую передаю на выполнение в ЭлементыФормы Карта
(как у тебя в самом верху)
6. Kuklachel 28.05.13 14:44 Сейчас в теме
(5) Rovan, И так не получается. А у тебя получилось вывести именно многоугольник? Просто с метками у меня работает.
7. Kuklachel 28.05.13 16:42 Сейчас в теме
(5) Rovan, Я решил сделать по другому. Во внешней обработке вывожу карту, в табличной части формы задаю координаты и нажимаю кнопку, но даже в этом случае появляется ошибка:"значение свойства AddPolygon или является null, или оно не определено, или не является объектом Function"

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
       ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    
    Макет = ОбработкаОбъект.ПолучитьМакет("Макет");
    ТекстHTML = Макет.ПолучитьТекст();
    
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
    
    Для каждого Реквизит Из Объект.КоординатыОбъектов Цикл
        
    ИмяМетки       = "Дом";
    ОписаниеМетки  = "Организация";
    Широта  = Реквизит.Широта;
    Долгота = Реквизит.Долгота;
    
    Элементы.ТекстHTML.Документ.parentWindow.eval(
    "AddPolygon(""" + ИмяМетки + """, """ + ОписаниеМетки + """, " + Формат(Широта, "ЧРД=.; ЧГ=0") + ", " + Формат(Долгота, "ЧРД=.; ЧГ=0") + ")");
             
    КонецЦикла;
КонецПроцедуры
Показать
Оставьте свое сообщение

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