Имя: Пароль:
1C
1С v8
Перестали работать Яндекс.Карты
0 IdoL2k
 
17.02.16
12:03
В самописной системе был реализован механизм работы с Яндекс.Картами - отображение точек и маршрутов на карте, сохранение координат в 1С.
В один прекрасный момент 16.02.2016 механизм перестал работать.
На сайте Яндекс.Карт пишут, что было выполнено переключение ссылки api-maps.yandex.ru/2.0 и api-maps.yandex.ru/2.0-stable, которые теперь соответствуют версии 2.0.43. Но обращение к старшим версиям не помогает.
Результат ошибочной работы заключается в том, что вместо отрисовки карты, вывода элементов управления и отображения точек, маршрутов, выполняется только отрисовка карты. Даже стандартные элементы управления не выводит.
Воспроизвести ошибку получается следующим образом. Из песочницы https://tech.yandex.ru/maps/jsbox/2.0 можно экспортировать в файлы любой пример. В любом браузере этот пример открывается нормально. А вот в 1С в Поле HTML документа этот же файл отображается криво - только карта-подложка и все, никаких элементов управления.

Собственно интересует что исправить нужно? Как восстановить работоспособность?

Платформа: 8.3.7.1917, 8.3.6.1999.
Режим: Управляемые формы, обычное приложение.
1 spock
 
17.02.16
12:17
(0) Сделай так:
<meta http-equiv="X-UA-Compatible" content="IE=9"></meta>
и
<script src="http://api-maps.yandex.ru/2.1/?lang=ru_RU&onload=myOnLoad"></script>;

дополнительно, но это не роялит:
function myOnLoad() {
   ymaps.ready(init);
}

где myOnLoad() - отложенная инициализация карты.

Яндекс не хочет поддерживать старые версии API. 2.0 должен был совсем давно отвалиться :)
2 IdoL2k
 
17.02.16
13:55
(1) Спасибо! Помогло!
Только нарисовалась новая проблема. В обработчике события ПриНажатии поля html документа у меня идет получение длинны маршрута. Вываливается ошибка получения метода eval:

{ОбщаяФорма.ПрокладкаМаршрута.Форма(118)}: Метод объекта не обнаружен (eval)
    ДлинаМаршрута = Элементы.Карта.Документ.parentWindow.eval("routeLength()")/1000;
3 IdoL2k
 
17.02.16
14:06
Как проверить, что в parentWindow попало то, что мне нужно? В отладчике там COMОбъект - не ясно что за ним скрывается
4 Широкий
 
17.02.16
14:11
(2) Почему бы напрямую не обратится к функиии?
5 IdoL2k
 
17.02.16
14:24
(4) У меня включается редактирование маршрута. Пользователь его правит, двигает точки. В итоге нужно получить длинну маршрута. Как то по другому я могу вызвать функцию routeLength()?
6 IdoL2k
 
18.02.16
09:28
(2) Проблему с функцией eval решил с помощью изменения режима отображения. Вместо "IE=9" поставил "IE=8"
7 spock
 
18.02.16
09:33
(6) Не надо так: http://risovach.ru/kartinka/9720759
8 Широкий
 
18.02.16
09:47
Элементы.Карта.Документ.parentWindow.routeLength()/1000;
Разве так не работает?
9 Широкий
 
18.02.16
09:49
У меня примерно так сделано:

    Попытка
        parentWindow=Элементы.Эксплорер.Документ.parentWindow;
        parentWindow.Reset();
    Исключение
        Попытка
            parentWindow=Элементы.Эксплорер.Документ.defaultView;
            parentWindow.Reset();
        Исключение
            
            глОбщегоНазначенияКлиентСервер.ВывестиПредупреждение("Ошибка инициализации карты!"+Символы.ПС);
            Возврат;
        КонецПопытки;
    КонецПопытки;
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.