Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Передача координат объекта из 1С в JavaScript (https://javascript.ru/forum/events/38359-peredacha-koordinat-obekta-iz-1s-v-javascript.html)

Kuklachel 29.05.2013 16:05

Передача координат объекта из 1С в JavaScript
 
Добрый день. Я создаю обработку в 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(Att, Latt, Name, Descr) {
               
                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);
                myMap.setBounds(myPolygon.geometry.getBounds());
            //myPolygon.options.set("zIndex",750)
        return myPolygon;
                }
                function AddGroup(Att, Latt, Name, Descr)        {
               
            }
        //Создаем кнопку
          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(Команда)
       
        Для каждого Реквизит Из Объект.КоординатыОбъектов Цикл
               
        ИмяМетки      = "Дом";
        ОписаниеМетки  = "Организация";
        Широта  = Реквизит.Широта;
        Долгота = Реквизит.Долгота;
       
        Элементы.ТекстHTML.Документ.parentWindow.eval(
                "AddPolygon(""" + ИмяМетки + """, """ + ОписаниеМетки + """, " + Формат(Широта, "ЧРД=.; ЧГ=0") + ", " + Формат(Долгота, "ЧРД=.; ЧГ=0") + ")");
       
               
        КонецЦикла;
КонецПроцедуры

Карта отображается, ввожу координаты, нажимаю кнопку и вылетает ошибка, сначала IE "значение свойства AddPolygon или является null, или оно не определено, или не является объектом Function", а потом и 1С "Ошибка при вызове метода контекста (eval)"

keen 03.06.2013 18:56

Цитата:

Сообщение от Kuklachel (Сообщение 253382)
Код:

        Элементы.ТекстHTML.Документ.parentWindow.eval(
                "AddPolygon(""" + ИмяМетки + """, """ + ОписаниеМетки + """, " + Формат(Широта, "ЧРД=.; ЧГ=0") + ", " + Формат(Долгота, "ЧРД=.; ЧГ=0") + ")");


попробуй вывести отдельно эти строки, которые передаёшь в eval - может там неэкранированные русские символы проскакивают, или ещё что.
и попробуй в контексте самой html-страницы вызвать ф-ию AddPolygon с проверенными параметрами - посмотри, будет ли она работать как надо.


Часовой пояс GMT +3, время: 22:57.