Некоторые секреты подключения веб-интерфейса 8.2

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

Некоторые секреты подключения веб-интерфейса 8.2

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

Показ Html-страницы на управляемой форме 1С

Для показа Html-страницы необходимо на форму вставить Поле Html Документа и в источник данных поместить html-код. Нужно иметь ввиду следующее: тонкий и веб-клиент на Internet Explorer работают по-особенному. В двух этих случаях используется Internet Explorer в режиме совместимости с IE 7.

Первый секрет заключается в том, что тонкий клиент можно перевести в режим совместимости с более старшей версией IE. Для этого нужно использовать meta X-UA-Compatible. Так на Windows 7 после добавления

 

можно использовать SVG-объекты, например:

 

Перевести веб-клиент IE на более современную версию совместимости можно, поместив веб-клиент 1С в IFrame и задав в родительском html meta-тэг совместимости. Но при этом не гарантируется нормальная работа и отображение веб-клиента, поскольку 1С изначально проектировала веб-клиент из расчета совместимости с IE6/7.

Второй секрет заключается в том, что верстка html-макетов в режиме текста без визуального редактора 1С портится после закрытия макета в конфигураторе. Например, если вы вставите svg-определения на html-макете, то после переоткрытия конфигуратора увидите испорченный html (обратите внимание на head-заголовок).

Испорченный макет html-страницы

Поэтому, если ваша верстка сложнее, чем показ рисунка, то советую сохранить html-код еще и в другом месте.

Хранение всего подряд в общих картинках

Современная веб-страница не ограничена одним только html. К ней в дополнение идут картинки, js/css-файлы. Традиционный подход допускает хранение и обращение к картинкам, помещенным в общие картинки конфигурации, но с js/css 1С-разработчикам приходится исхитряться. Текстовые файлы или записывают в архив и распаковывают перед показом страницы или целиком помещают в html. Такой подход не задействует встроенный практически в каждый браузер кэш для get-запросов.

Мой опыт состоял в том, чтобы поместить в общие картинки java-скрипт. Этот опыт частично удался, т.е. все браузеры и тонкий клиент запустили jQuery, кроме IE. Если кто-нибудь знает секрет и сможет заставить работать этот способ на IE, прошу, отписаться. Действия необходимо делать следующие:

1. Создать общую картинку и поместить в нее любую картинку

2. На html-макете в режиме редактирования выделить любой текст и через меню Элементы-Ссылка выбрать общую картинку

3. Текст из ссылки вставить в блок script

4. Заменить общую картинку на JavaScript-содержимое

Встроенный фреймворк 1С для веб-клиента

Мало кто знает, что веб-клиент 1С включает в себя фреймворк , упрощающий работу с элементами форм. Фреймворк работает на JavaScript. Обращение к нему возможно через parent.WebUI. функции его требуют дополнительных исследований, но свойства выглядят следующим образом:

Значение свойств при отладке html-поля

В теории этот фреймворк можно задействовать для вызова серверных процедур 1С. В этом случае произойдет полная интеграция html-поля с другими элементами управляемой формы, что повлечет платформенную независимость.

Ключевое слово __STYLE__

Долго ломал голову, что же означает ключевое слово __STYLE__, которое 1С автоматически подставляет в шаблон пустого html-макета. Но исследования запросов показало, что __STYLE__ ничем не заменяется, и на этот запрос сервер возвращает 500 ошибку: Internal Server Error.

Ключевое слово __STYLE__ приводит к ошибке

13 Comments

  1. Asmody

    [4. Заменить общую картинку на JavaScript-содержимое] – простите, это как?

    Reply
  2. Elisy

    (1) Asmody,

    [4. Заменить общую картинку на JavaScript-содержимое] – простите, это как?

    Двойной клик на общей картинке

    Выбрать из файла

    Тип файлов «Все файлы *.*»

    Выбрать js-файл

    Нажать Открыть

    Обратите, пожалуйста, внимание, что этот файл браузер будет хранить в кеше, поэтому, если обновляете содержимое, нужно чистить кэш.

    Reply
  3. Asmody

    Не знал про такой изврант. Получается, в картинки вообще что угодно можно запихнуть, что открывает интересные возможности

    Reply
  4. awk

    Хакеры, млин… Но плюс, за идею.

    Reply
  5. Asmody

    попробовал. не работает в тонком клиенте нифига способ с заменой картинки

    Reply
  6. Elisy

    (5) Asmody,

    попробовал. не работает в тонком клиенте нифига способ с заменой картинки

    У меня флеш не получается в тонком клиенте запустить. jQuery везде запустился, кроме IE. Из-за этого задача по софтфону встала.

    Reply
  7. Asmody

    (6) пробовал jquery в тонком 8.3.3 под Win2k3. IE стоит 8й. ругается на отсутствие объекта

    Reply
  8. Elisy

    (7) Asmody,

    Elisy, пробовал jquery в тонком 8.3.3 под Win2k3. IE стоит 8й. ругается на отсутствие объекта

    В 8.3.3 на Windows 7 работает

    <HTML><HEAD><TITLE>Demo</TITLE>
    <META content=»text/html; charset=utf-8″ http-equiv=Content-Type></META><LINK rel=stylesheet type=text/css href=»__STYLE__»></LINK>
    <META content=IE=9 http-equiv=X-UA-Compatible></META><BASE href=»/redirect.php?url=djhjb25maWc6Ly80M2JmODk5Yi1jYTkxLTRkNWItOWU0YS0xZjQwNWQ4OTVkMzgvbWRvYmplY3QvaWQ4OTE0NjE4OS05MmE1LTQzYjYtOTdiNC1lZDQ0M2EwMzRkOTQvOGViNGZhZDEtMWZhNi00MDNlLTk3MGYtMmMxMmRiYjQzZTIz»></BASE>
    <META name=GENERATOR content=»MSHTML 9.00.8112.16490″></HEAD>
    <BODY style=»MARGIN: 0px»>
    <SCRIPT type=text/javascript src=»../../mdpicture/idd8b7f542-062d-4bd9-8de2-36e57654f8c3/00000000-0000-0000-0000-000000000000″></SCRIPT>
    
    <SCRIPT type=text/javascript>
    $(function () {
    alert(«Hello jQuery!»);
    });
    </SCRIPT>
    </BODY></HTML>

    Показать

    Reply
  9. sikuda

    Я бы сделал с помощью ПолучитьНавигационнуюСсылку() для универсальности и полноты решения.

    Reply
  10. Elisy

    (9) sikuda,

    Я бы сделал с помощью ПолучитьНавигационнуюСсылку() для универсальности и полноты решения.

    До оптимизации, думаю, еще дойду. Сейчас смысла нет, потому что на IE у меня не работает такой способ. jQuery не инициализируется.

    Интересно было бы поэкспериментировать с Flash — он не проигрывается в тонком клиенте. Но это, скорее всего, проблема не способа подключения.

    Reply
  11. sikuda

    (10) Все мы как-то пытаемся через только близкие нам механизмы 1С делать. Но сейчас мир изменился. Неважно через что, важно как. Есть текст jquery на javascript. Это просто текст. Предлагаю хранить его как текст в обшем макете. Получаем этот текст и вставляем в html код. Далее инициализации html страницы и код начинает работать. И отладка такого решения прозрачна…

    Твоя ошибка может быть связана с подменой версии IE, у меня вышеописанным способом ошибок не возникает.

    Reply
  12. Asmody

    (11) sikuda, тут весь фокус в том, чтобы не тащить каждый раз jquery и прочее, для чего кеш браузера придуман.

    Reply
  13. internetname

    Еще можно jQuery UI подключить.

    Reply

Leave a Comment

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