Встроенный браузер в 1С. Надеемся на webkit?

image_pdfimage_print

Доброго времени суток!

В первые увидев ПолеHTML документа в обычном приложении можно подумать, что это полноценный браузер в 1С. Что-то подсказывает, что нет.

Проверим что нам напишет по поводу браузера простая проверка или внутреннее свойство ИнформацияПрограммыПросмотра (8.2.17.153):

  1. Локальная машина — Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
  2. Толстый клиент — Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)
  3. Тонкий клиент — Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)
  4. Web-клиент — Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)

Без комментариев. Смотрим у думаем.

Для тех кто не верит, дадим ссылку на особенности IE7: http://htmlbook.ru/content/khaki-dlya-ie7

Пробуем написать простой браузер для толстого клиента(прикрепленный ВэбБрайзер1С.epf) и начнем тестировать. Введем www.1c.ru и сразу получим ошибку стилей…(обычная корпоративная система Win7x64, IE9).

И воспроизвести ошибку в режиме ie7 не удастся. Значит дело не в номере движка. Погуляем еще по сайтам и заметим, что ошибки не так уж заметны. v8.1c.ru и Инфостарт не выдают ошибок…

Залезаем в документацию 1C толстого клиента: Описание объекта, в целом, определяется стандартом World Wide Web Consortium (W3C) Document Object Model (DOM) Level 1 (http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/) Но, объект имеет особенности, связанные с реализацией. ПолеHTMLДокумента реализовано с использованием WebBrowser Control https://msdn.microsoft.com/en-us/library/aa752127(v=vs.85).aspx. Тип свойства документ соотвествует типу HTMLDocument http://msdn.microsoft.com/en-us/library/ms531073(VS.85).aspx. Вот где здесь точно собака порылась…

Кто любит аналоги с исходными кодами — отсылаю в примеры Qt: http://doc.qt.io/qt-5/activeqt-activeqt-webbrowser-example.html

Ошибки это плохо. Сделаем новую форму ФормаОбычнаяActivеX. И вставим туда ActiveX элемент Browser. Немного поколдуем с кнопками, что выглядело как в первоначальной форме. Запускаем www.1c.ru баз, опять ошибка. Нет ну так не пойдет. По логике интернет программирования, есть ошибка она просто что-то не делает, а не напрягает пользователя. Поэтому отыскиваем в нашем объекте свойство Silent и устанавливаем его в Истина. Ура! Момент истины, www.1c.ru открывается без ошибок. Поставим эту форму по умолчанию. И посмотрим на версию движка: «Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)» — а он старый.

Теперь займемся тонким клиентом. Здесь у нас есть только свойство Данные типа строка, типа текст страницы. Посмотрим как это сделано в типовых конфигурациях. Внутренние ссылки работают, а внешние вызываются по ПерейтиПоСсылке во внешнем браузере. Что это значит, это не облом, это философия такая. И разумное объяснение может упирается в безопасность и рабоспособность старого движка, а не разумное в маркетинг(Наш тонкий клиент круче чем все вэб-браузеры мира…). Но даже по безопасности видна явная дырка. Скрипты на странице работают, если их загрузить отдельно. Пока в версии 8.3.3.721 так и ничто не говорит чтобы что-то измениться.

Для любителей смотреть ошибки в скриптах — сделаем эту возможность в тонком клиенте. Поставим начальную страницу, чтобы сразу не ругался v8.1c.ru. Скачивайте — наслаждайтесь. Даже можно запустить демо 8.3 внутри тонкого клиента (про вынос мозга — см. выше).

Такси внутри
Браузер тонкого клиента с такси внутри.

 

Обработку можно скачать на инфостарте http://infostart.ru/public/191248/

Установка принудительной эмуляции IE11:
1. Устанавливаем Internet Explorer 11
2. Идем в реестр: HKCU\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATUR E_BROWSER_EMULATION
3. Добавляем 1cv8.exe — REG_DWORD — 11001

10 комментариев к “Встроенный браузер в 1С. Надеемся на webkit?

  1. Всем привет… Очень интересен такой вопрос, ответ на который я не смог найти нигде еще. мне нужно изменить совместимость IE7 на

    в Windows 7 и 1с версии 8.3.4.
    Это мне необходимо, для возможности использовать SVG формат в HTML-документе.
    Но возникла большая проблема.. Когда совместимсь была IE7 я мог без проблем обращаться к глобальным переменным и функциям JavaScript’а . но теперь при вызове например глобальной переменной — Элементы.browser.Документ.parentWindow.test появляется ошибка Поле объекта не обнаружено…. Подскажите пожалуйста как добраться до глобальных переменных объекта Window …

  2. Статья открыла глаза, автору спасибо! Подскажите пожалуйста, какие методы использовать для объекта ActivеX для того, чтобы «прогуляться» по дереву DOM? Возможно ли это? ПолеHTMLдокумента позволяет такое, а вот про ActivеX как то нигде не могу найти информации. Конечная цель — парсинг товаров без вылетов отладки сценария JS.

  3. Добрый день.
    Прочел статью, многое объясняет, но проблема у меня такая:
    Делал обработку в 1С. В обработке имеется ПолеHTML документа, в которое выводятся таблицы.
    Дальше с помощью YavaScript устанавливаю для каждой таблицы фон(картинку).
    Чтобы растянуть картинку на всю таблицу, я использую фильтр filter:progid:DXImageTransform.Microsoft.AlphaImageLoader
    и все отлично работало на(ОС Win XP/IE8)

    Но у некоторых пользователей стоит ОС(Win7/IE 10) и фильтр AlphaImageLoader почему-то не отрабатывает.

    Изначально я думал что 1С использует IE такой версии которая установлена в винде.
    А в IE10 фильтры не поддерживаются, вместо них используются свойства css3 (background-size),
    но они тоже не работают из 1С.

    С помощью обработки «Просто Браузер» с вашего сайта посмотрел версию браузера, оказалось:
    Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)

    Получается в обоих случаех в качестве браузера используется IE7 и у меня такие вопросы:
    Почему тогда фильтры под Win7 могут не работать если 1С используется всегда один браузер?
    Если я установлю платформу 1С 8.3 у меня будут доступна поддержка CSS3?
    Вообщем буду крайне признателен за любую помощь в этом вопросе.

    1. 1C использует браузер встроенный в Windows(IE8, IE9, IE10, IE11), по умолчанию в режиме совместимости IE7. B c теми тонкими настройками как у Вас боюсь работа IE8 в режиме совместимости IE7, отличается от IE 10 в режиме IE7. И что работает или нет приходится проверять только руками типа:
      http://demos.aimweb.name/css-transform-generator/
      И элементы к которым применяется фильтры, должны иметь включенный режим hasLayout
      http://habrahabr.ru/post/50175/

      В 1С 8.3 глобально ничего не поменялось,только в режиме web клиенте IE убран режим совместимости.
      Вот такие не радостные новости.

      1. Спасибо.
        А еще вопрос, режим совместимости IE 10 в режиме IE7 это означает что страница должна одинаково работать как в IE10 так и в IE7?
        И режим этот изменить только на IE10 нельзя насколько я понимаю?

Добавить комментарий