Построение многоугольника на карте Яндекс API по координатам из справочника 1С
Добрый день. Есть такая задача. На форме 1С отображать карту с контуром здания по координатам заранее внесенным в справочник. В макете я пишу такой скрипт JS:
Далее, в модуле формы:
Вроде все верно. До этого я писал обработку с простановкой маркеров на карте, по координатам из табличной части формы, у меня все отлично работало. Но здесь выдает ошибку "Метод объекта не обнаружен (eval)"! Помогите, пожалуйста, может кто-то сталкивался с данной проблемой.
<!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)"! Помогите, пожалуйста, может кто-то сталкивался с данной проблемой.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
я вот так делал
КодХТМЛ = "
|<!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>";
ЭлементыФормы.Карта.УстановитьТекст(КодХТМЛ);
КодХТМЛ = "
|<!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>";
ЭлементыФормы.Карта.УстановитьТекст(КодХТМЛ);
(5) Rovan, Я решил сделать по другому. Во внешней обработке вывожу карту, в табличной части формы задаю координаты и нажимаю кнопку, но даже в этом случае появляется ошибка:"значение свойства AddPolygon или является null, или оно не определено, или не является объектом Function"
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
Макет = ОбработкаОбъект.ПолучитьМакет("Макет");
ТекстHTML = Макет.ПолучитьТекст();
КонецПроцедуры
&НаКлиенте
Процедура Команда1(Команда)
Для каждого Реквизит Из Объект.КоординатыОбъектов Цикл
ИмяМетки = "Дом";
ОписаниеМетки = "Организация";
Широта = Реквизит.Широта;
Долгота = Реквизит.Долгота;
Элементы.ТекстHTML.Документ.parentWindow.eval(
"AddPolygon(""" + ИмяМетки + """, """ + ОписаниеМетки + """, " + Формат(Широта, "ЧРД=.; ЧГ=0") + ", " + Формат(Долгота, "ЧРД=.; ЧГ=0") + ")");
КонецЦикла;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот