Имя: Пароль:
1C
1С v8
Выжиг мозга с полем HTML документа
0 vudo
 
12.09.13
17:54
В управляемой форме создаем реквизит "Карта" тип строка.
На форме создаем поле тип "поле HTML документа". Путь к данным карта.

В модуле формы пишем:

//===========================
&НаСервере
Процедура ЗаполнитьТекстКарты()
    
Карта =    
"
|<!DOCTYPE HTML>
|<html>
|  <head>
|    <meta http-equiv=""Cache-Control"" content=""no-cache"">
|    <meta http-equiv=""Cache-Control"" content=""max-age=1, must-revalidate"" />
|    <title>OpenLayers Demo</title>
|    <style type=""text/css"">
|      html, body, #basicMap {
|          width: 100%;
|          height: 100%;
|          margin: 0;
|      }
|    </style>
|    <script src=""http://openlayers.org/dev/OpenLayers.js""></script>;
|    <script>
|      function init() {
|        map = new OpenLayers.Map(""basicMap"");
|        var mapnik         = new OpenLayers.Layer.OSM();
|        var fromProjection = new OpenLayers.Projection(""EPSG:4326"");   // Transform from WGS 1984
|        var toProjection   = new OpenLayers.Projection(""EPSG:900913""); // to Spherical Mercator Projection
|        var position       = new OpenLayers.LonLat(13.41,52.52).transform( fromProjection, toProjection);
|        var zoom           = 3;
|
|        map.addLayer(mapnik);
|        map.setCenter(position, zoom );
|      }
|    </script>
|  </head>
|  <body onload=""init();"">
|    <div id=""basicMap"" ></div>
|  </body>
|    <script>
|        init();
|    </script>
|</html>
|";


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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ЗаполнитьТекстКарты();
КонецПроцедуры
//================================

Открываем форму.
Все прекрасно работает.
Закрываем форму.
Опять открываем.
Карта убегает вниз.
Закрываем форму.
Чистим кэш IE.
Открываем форму.
Все опять прекрасно работает.

Кто знает как сделать, что бы из кэша не тянуло?
1 vudo
 
12.09.13
17:59
В коде не нужно
|    <script>
|        init();
|    </script>

Но это к проблеме отношение не имеет.
2 sda553
 
12.09.13
18:03
Чтобы не тянуло из кэш принято делать рандомный url к кэшируемому ресурсу, добавлением какого нибудь. ?sid=123f4ac
где 123f4ac есть случайный идентификатор.
Возможно, мой способ устарел
3 vudo
 
12.09.13
20:26
(2) И куда его в "поле HTML документа"? Этот url?
Можно конечно в Документ, но  с ним можно работать только после того как элемент уже загружен...

Так что способ пройдет, но не в данном случае.
4 vudo
 
12.09.13
20:34
В вообще-то кэш в поле HTML документа при загрузке текста из переменной смысла особо не имеет, т.к. содержимое собственно должно меняться динамически.
Моно поступить по другому, переписать java-скрипт OpenLayers.js на 1с, но это имхо геморно. Просто реально столько времени нет. Хотя и возможно.

Так что есть еще предложения как обойти.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший