Имя: Пароль:
1C
1С v8
Как побороть ошибку "На этой странице произошла ошибка сценария"?
0 DSSS
 
04.04.16
11:05
Всем приветы!
Windows 7, 64
8.3.7.1949
IE 11. В настройках IE уровень безопасности выше среднего, установлен флаг “Отключить отладку сценариев” - все по умолчанию.

Стоит задача организовать просмотр гугл карт в режиме тонкого клиента.

По документации и примерам гугл сделал простейший html документ, вот его текст

<!DOCTYPE html>
<html>
   <head>
     <title>Simple Map</title>
     <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
     <meta charset="utf-8">
     <style>
       html, body, #map_canvas {
         height: 100%;
         margin: 0px;
         padding: 0px
       }
     </style>
     <script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>;
     <script>
  
function initialize() {

   var myLatLng = {lat: 51.560, lng: 46.001};

   var mapOptions = {
     zoom: 12,
     center: new google.maps.LatLng(51.560, 46.001)
   };
   var map = new google.maps.Map(document.getElementById('map_canvas'),
       mapOptions);
    
   var marker = new google.maps.Marker({
    position: myLatLng,
    map: map,
    title: 'Hello World!',
    clickable: false,  
    icon: 'http://google-maps-icons.googlecode.com/files/home.png'
  });
    
}

google.maps.event.addDomListener(window, 'load', initialize);

     </script>
   </head>
   <body>
     <div id="map_canvas"></div>
   </body>
</html>

Разместил этот файлик на служебном сайте, в IE и FF открывается без проблем, отображает то что нужно, никаких ошибок не выдает. Заметил интересную особенность: если открывать файл по ссылке, то как и писал, ошибок нет, а если попытаться открыть этот же файл локально, то в IE возникает предупреждение “Internet Explorer запретил выполнение сценариев и элементов ActiveX на этой странице”. Тут же можно разрешить заблокированное содержимое.

Для открытия карты в 1С написал простейшую обработку с кодом:

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

где ПолеHTMLДокумента - это реквизит формы, для которого есть элемент управления с видом “Поле HTML документа”


При открытии обработки в режиме предприятия карта строится нормально, все как в браузере.
Проблема в том, что через некоторое время появляется ошибка “На этой странице произошла ошибка сценария”. Мне не удалось выявить каких-то закономерностей для этой ошибки - может возникнуть при малейшем движении мыши, а может через 20 кликов, изменениях масштаба карты и т.п. Тот же результат на 8.2.19.130

Может кто-то в курсе, как побороть проблему? Очень хочется обойтись без каких- либо изменений в настройках IE. Читал про снятие флагов про сценарии в настройках IE, но это все не помогает и создает дополнительные трудности для запуска обработки на разных машинах.
Буду благодарен за любые рекомендации по решению вопроса. Что читать, куда копать и т.п. Может быть у кого-то найдется готовый пример как бороться?)
В идеале хотелось бы найти какое-то общее решение для разных версий ОС и браузеров.
Спасибо!
1 vde69
 
04.04.16
11:09
общего решения для всех браузеров - нет...

вроде 1с использует слегка кастомизированую мазилу.... для карты наверно имеет смысл юзать какой ACTIV-X компонент из SDK яндекса или что-то на подобии...
2 DSSS
 
04.04.16
12:01
(1), ок, можно остановиться только на тонком клиенте.
Что если с пом. JS как-то перехватывать или отключать события карты? Интересно, будет ли нормально работать, если отключить все события, связанные с движениями мыши? Оставить только изменение масштаба? Кстати на нажатие кнопок + и - на карте никаких ошибок нет.
3 vde69
 
04.04.16
12:09
у меня есть предположение в чем дело:

1. ты создаешь HTML - НА СЕРВЕРЕ 1с
2. при создании он тянет скрипт гугла и этот скрипт должен постоянно обмениваться с гуглом через инет...
3. через некоторое время серверный кешь "тухнет", или контекст переходит в другой рхост, и тут наступает кирдык....

вывод: интерактивные страницы надо юзать на клиенте а не на сервере :)
4 DSSS
 
04.04.16
13:14
(3) Спасибо, сейчас попробую.
5 DSSS
 
04.04.16
13:54
не помогает.
6 DSSS
 
04.04.16
14:11
Поиск находит несколько подобных тем, в одной из них
v8: Яндекс API. Отображение ошибки предложено решение через
window.onerror = myOnError;
function myOnError(msg, url, lno) {return true}
Может кто-то в курсе про таой способ и сможет рассказать подробнее как использовать?