HTML 5 Canvas в 1С или Google нам, может быть, поможет






Продолжая статью Встроенный браузер в 1С. Кто здесь? (http://infostart.ru/public/171763) продолжаем копаться внутри интернет технологий 1С.

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

Применим академический подход. Перейдем на http://www.w3schools.com/html/html5_canvas.asp и возьмем примеры оттуда и напишем небольшую обработку HTML5-1С-min.epf.

Результаты лучше наблюдать самим и проверить в своем любимом браузере.(см. картинки). Но вывод все тот-же. Не тонком клиенте Windows 1с, не в вэб IE не показывает ничего кроме рамки. Даже библиотека excanvas.js от Google не помогает, только удаляет показ ошибок скриптов. В 8.3.3.641 все аналогично на Windows,  а на Linux c webkit все показывает. Видно баузерный движок в тонком клиенте Windows очень хорошо отлажен для 1С, но ядро имеет древнее на IE7, но как-то урезанное.

Меня 1C научила никогда не отступать от решения задачи, насколько сложной она не казалась с первого раза. Для этого надо понять, а как работает библиотека excanvas. Посмотреть на пример в //infostart.ru/public/57648/. Да вспомнить, что до html5 Microsoft усиленно толкала свою систему VLM (http://msdn.microsoft.com/en-us/library/ee384217%28v=vs.85%29.aspx). Вот она и прекрасно работает со старыми версиями движков IE. И excanvas это эмуляция функций обрисовки графиков html5 через эту систему. Значит 1С надо немного помочь. Посмотрев как эта библиотека работает в старых IE, получилось решение что нужно добавить в для 1С.

В старых браузерах excanvas  может вызваться рекурсивно, а в движке браузера 1С нет. Для простых примеров поможем 1С заполнить html файл. Используем флаг excanvas_1c(«Довесок для 1С») и макет с таким-же именем.

Если excanvas_1c Тогда
Скрипт = ПолучитьМакет("excanvas_1c").ПолучитьТекст();
Страница = СтрЗаменить(Страница, "", Скрипт +"");
КонецЕсли;

Тестируем обработку HTML5-1С-min вложение к статье. Ура, заработало. Делаем 1С ближе к HTML5


Копаться внутри старой технологии достаточно утомительно. Второй способ научить внутри 1С понимать современные стандарты это принудительно установить поле HTML в режим совместимости с последней версией. В обработке надо поставить флаг на поле «Включить эмуляцию IE=Edge».Но данный способ тоже не идеалный и не спасает от всех ошибок в барузере, но рабочий. И дает результат показа тестовых примеров на w3schools.

 

И из маленьких мелочей которых очень хочется: 

Хочется вывести в тонком клиенте в HTMLПоле свою картинку. Посмотим внимательно в отладке 1С на навигационную ссылку и в браузере в инструментах разработчика:

  1. Навигационная ссылка — «e1cib/data/Справочник.Товары.ФайлКартинки?ref=99b380c16ef91aa211e27a59f49b6685»
  2. Код интернет страницы — < img style=»position: relative; cursor: default; width: 350px; height: 288px; left: 488px; top: 19px;» title=»» src=»http://localhost/1c-test/ru_RU/e1cib/data/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA.%D0%A2%D0%BE%D0%B2%D0%B0%D1%80%D1%8B.%D0%A4%D0%B0%D0%B9%D0%BB%D0%9A%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B8?ref=99b380c16ef91aa211e27a59f49b6685″ alt=»» / >

Это похоже одно и тоже. Значит простая идея заключается в создании ПолучитьНавигационнуюСсылку и прописании ее в HTMLПоле:

СтраницаНТML = »
|< html >
|< head >
|< /head >
|< body >
|< div > Тест страницы < /div >
|< div > < img src='»+СсылкаНаКартинку+»‘/ > Тест картинки < / div >
|< / body >
|< / html > «;

Аналогично работает и функция ПоместитьВоВременноеХранилище.

Проверим работу. Тонкий клиент и web клиент работают замечательно. 

 

P.S. Сайт: sikuda.ru 

 

           

10 Comments

  1. Magister

    Что-то непонятно, как всё-таки использовать внутри 1С упомянутую библиотеку?

    ПолучитьНавигационнуюСсылку ведь, насколько я помню, только для объектов внутри базы работает.

    Reply
  2. sikuda

    (1) Magister, добавил в прикрепленном файле обработку эксперимента с которой получал картинки.

    Reply
  3. Magister

    Спасибо, посмотрел.

    Но это ведь не картинки, а построение средствами Javascript 🙂

    Так что если политикой домена Javascript отключен — пользователь ничего не увидит.

    Как и не увидит, скорее всего, если на компьютере IE 8 или ниже. Разве что там специфичные скрипты под него подключены.

    Reply
  4. sikuda

    (3) Нет дело похоже не в отключении скриптов. Точнее внешние скрипты 1С отключит, а внутренние нужны самой 1С. 1С вклинивается в процесс обработки и в первую очередь летят картинки(как внешние данные), а потом графики. Надо еще в этом покопаться…

    Reply
  5. Magister

    (4) Эм… картинки у меня вполне себе спокойно отображаются через

    <img src=»http://192.168.0.1/images/img.jpg»>

    Ничего не режется.

    Reply
  6. sikuda

    Это не обработчик от 1С. Это у вас какой-нибудь StaticFile(если IIS). Посмотрите внимательно настройку вэб-сервера. Да надо углублять тему и писать маленькие тесты…

    Reply
  7. Magister

    (6) Естественно, этот файл отдается внешним по отношению к 1С веб-сервером.

    Наверное я не понял, в каком случае проблема таки возникает…

    Reply
  8. sikuda

    (7) с тонкой настройкой вэб-сервера не смогу помочь, а маленькие тесты на HTML5 написал. Заходите на сайт sikuda.ru

    Reply
  9. sikuda

    Нашел способ чтобы примеры html5 canvas заработали. Но это явно костыль. Работаю с графиками хотя интерес к ним маленький интерес http://www.forum.mista.ru/topic.php?id=662091

    Reply
  10. t955938

    Использование данного метода позволит решить и более сложные задачи. Связанные с построение сложных объектов через примитивы.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *