Имя: Пароль:
1C
1С v8
Проблем отображения Yandex Map в веб-клиенте Internet Explorer
0 Абырвалг
 
02.02.14
21:08
Добрый день!

Есть простейшая обработка на управляемых формах, отображающая в поле HTML-документа карту Яндекса.
http://yadi.sk/d/Mhfc1JGMHBKgX

Работает в толстом клиенте, работает в веб-клиентах Firefox, Chrome. В IE 11-й версии не работает. Очевидно какие-то настройки блокируют выполнение кода javscript. Странно. Кто-нибудь сталкивался?

Обычное присвоение html в веб-клиенте работает.
1 sikuda
 
02.02.14
21:35
Похоже где-то 1С перестраховывется с IE11. Поддержки в 1С его пока нет, а файл твой локально в IE11 работает.
2 Абырвалг
 
02.02.14
23:19
Короче IE блокирует доступ к внешним доменам, при записи в ПолеБраузера сформированного текста макета. А вот если текст макета сохранить в файл на сайте, то открывает нормально.
3 Balabass
 
03.02.14
03:45
Чтобы работало, где писали, надо подменить имя браузера на разрешенный. На вражеском обсуждали.
4 Абырвалг
 
03.02.14
07:21
(3) а можно для тупых расшифровать?
5 sikuda
 
03.02.14
09:18
(3) Я думаю правильней перевести IE в режим предыдщей версии
http://htmlbook.ru/samlayout/rezhimy-brauzerov/rezhimy-internet-explorer
6 jsmith82
 
03.02.14
09:23
юзер агент, видимо, ссылается на геко, а по сути трайдент, и вызывается метод, которого не существует
7 Абырвалг
 
03.02.14
10:09
Раньше было так:

Текст = ПолучитьТекстМакета("Макет");
Эксплорер = Текст;


Теперь делаю так:

Текст = ПолучитьТекстМакета("Макет");
СтраницаНаСервере = СформироватьСтраницуНаСервере(Текст);
Если СтраницаНаСервере = Неопределено Тогда
        Эксплорер = Текст;
Иначе
        Эксплорер = СтраницаНаСервере;
КонецЕсли;


А сама процедура формирования странички на сервере выглядит так:

&НаСервере
Функция СформироватьСтраницуНаСервере(Текст)
    ПутьККорнюСайта = Константы.ПутьККорнюСайта.Получить();
    УИД = Пользователи.ТекущийПользователь().УникальныйИдентификатор();
    
    Если ЗначениеЗаполнено(ПутьККорнюСайта) Тогда
        ПутьККорнюСайта = ПутьККорнюСайта+"/temp/"+УИД+".html";
        HTML = Новый ТекстовыйДокумент;
        HTML.УстановитьТекст(Текст);
        HTML.Записать(ПутьККорнюСайта);
        ЗапуститьПриложение("chmod 644 "+ПутьККорнюСайта);
        Возврат СтрЗаменить(Константы.АдресСайта.Получить()+"/temp/"+УИД+".html";
    КонецЕсли;
    Возврат Неопределено;
КонецФункции
8 Абырвалг
 
03.02.14
10:09
есть более простые варианты?
9 Абырвалг
 
03.02.14
10:11
Только теперь нельзя обратиться к элементам документа:
Элементы.Эксплорер.document.getElementById("WebClient")
10 Абырвалг
 
03.02.14
10:29
В IE8 тоже не работает. Вообще не понимаю, неужели никто через IE не работает с картами в 1С?
11 Абырвалг
 
03.02.14
11:39
В общем Firefox и Chrome рулят.
12 sikuda
 
03.02.14
13:37
(0) Первая обработка работает в IE11(локальная база).
http://www.foto-me.ru/v.php?id=45d19034965ee0bcff386454dc2fadcc
13 Абырвалг
 
03.02.14
14:00
(12) Блин, на 8.3 перейти что-ли.
14 sikuda
 
03.02.14
18:36
(13) 1C как электричка, либо ты едешь на последней(версии) либо ...
15 Абырвалг
 
04.02.14
15:50
В общем проблема пока не решена.

Делаю так (все для веб-клиента IE):
//Не отражается страница с картой:
ПолеHTMLДокумента = ПолучитьМакетЯндексКарт();

Тогда делаю так.

//Отражается страница с картой:
ПолеHTMLДокумента = "http://misite.ru/yandex-map.html";;

Но тогда не срабатывает событие "ПриНажатии".

Делаю так:

Процедура ЭксплорерДокументСформирован(Элемент)
ДобавитьОбработчик Элементы.ПолеHTMLДокумента.Документ.onclick, ОбработчикНажатия;
КонецПроцедуры

Ошибка - отказано в доступе. В Firefox, Chrome, толстом клиенте - все работает.
16 Абырвалг
 
04.02.14
15:52
В общем 1С некорректно работает  с событиями в управляемых формах на веб-клиенте с полем HTML документа, когда ему присваивается не HTML-текст, а ссылка с адресом.
17 Абырвалг
 
04.02.14
15:52
Платформа 8.2.19
18 Абырвалг
 
05.02.14
12:25
Решил проблему. В (7) все правильно я сделал, только в константу АдресСайта внес masterdomen.ru, а надо было database.masterdomen.ru, т.к. сама БД работает в домене третьего уровня. Политика безопасности браузера не позволяла отлавливать нажатие мыши.
19 sikuda
 
05.02.14
12:40
(7) И все таки зачем так сложно, если берем и перенаправляем html поле на то что нам надо ПриОткрытии на Клиенте
html = "<HTML>
| <HEAD>
|<META content='text/html; charset=utf-8' http-equiv=Content-Type>
|<script>window.onload = function(){ window.open('http://v8.1c.ru', '_self'); } </script>
|</HEAD>
|<BODY>
|</BODY>
|</HTML>";
        
Объект.Страница = html;
Если ЗначениеЗаполнено(html) Тогда
  Объект.Страница = СтрЗаменить(Объект.Страница, "http://v8.1c.ru";, Объект.АдресСтраницы);
КонецЕсли;
Закон Брукера: Даже маленькая практика стоит большой теории.