gifts2017

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

Опубликовал Сергей Карташев (Elisy) в раздел Программирование - Работа с интерфейсом

Работа с альтернативным интерфейсом на управляемых формах 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__ приводит к ошибке

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Asmody (Asmody) 23.06.13 15:32
[4. Заменить общую картинку на JavaScript-содержимое] – простите, это как?
2. Сергей Карташев (Elisy) 23.06.13 18:06
(1) Asmody,
[4. Заменить общую картинку на JavaScript-содержимое] – простите, это как?

Двойной клик на общей картинке
Выбрать из файла
Тип файлов "Все файлы *.*"
Выбрать js-файл
Нажать Открыть

Обратите, пожалуйста, внимание, что этот файл браузер будет хранить в кеше, поэтому, если обновляете содержимое, нужно чистить кэш.
3. Asmody (Asmody) 24.06.13 09:04
Не знал про такой изврант. Получается, в картинки вообще что угодно можно запихнуть, что открывает интересные возможности
4. Василий Казьмин (awk) 24.06.13 16:51
Хакеры, млин... Но плюс, за идею.
5. Asmody (Asmody) 24.06.13 18:00
попробовал. не работает в тонком клиенте нифига способ с заменой картинки
6. Сергей Карташев (Elisy) 24.06.13 19:23
(5) Asmody,
попробовал. не работает в тонком клиенте нифига способ с заменой картинки

У меня флеш не получается в тонком клиенте запустить. jQuery везде запустился, кроме IE. Из-за этого задача по софтфону встала.
7. Asmody (Asmody) 25.06.13 00:19
(6) Elisy, пробовал jquery в тонком 8.3.3 под Win2k3. IE стоит 8й. ругается на отсутствие объекта
8. Сергей Карташев (Elisy) 25.06.13 05:15
(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="v8config://43bf899b-ca91-4d5b-9e4a-1f405d895d38/mdobject/id89146189-92a5-43b6-97b4-ed443a034d94/8eb4fad1-1fa6-403e-970f-2c12dbb43e23"></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>
...Показать Скрыть
Прикрепленные файлы:
9. Сергей Кудашкин (sikuda) 25.06.13 08:42
Я бы сделал с помощью ПолучитьНавигационнуюСсылку() для универсальности и полноты решения.
10. Сергей Карташев (Elisy) 25.06.13 09:07
(9) sikuda,
Я бы сделал с помощью ПолучитьНавигационнуюСсылку() для универсальности и полноты решения.

До оптимизации, думаю, еще дойду. Сейчас смысла нет, потому что на IE у меня не работает такой способ. jQuery не инициализируется.
Интересно было бы поэкспериментировать с Flash - он не проигрывается в тонком клиенте. Но это, скорее всего, проблема не способа подключения.
11. Сергей Кудашкин (sikuda) 25.06.13 11:45
(10) Elisy, Все мы как-то пытаемся через только близкие нам механизмы 1С делать. Но сейчас мир изменился. Неважно через что, важно как. Есть текст jquery на javascript. Это просто текст. Предлагаю хранить его как текст в обшем макете. Получаем этот текст и вставляем в html код. Далее инициализации html страницы и код начинает работать. И отладка такого решения прозрачна...
Твоя ошибка может быть связана с подменой версии IE, у меня вышеописанным способом ошибок не возникает.
12. Asmody (Asmody) 25.06.13 12:41
(11) sikuda, тут весь фокус в том, чтобы не тащить каждый раз jquery и прочее, для чего кеш браузера придуман.
13. Евгений Фамилия (internetname) 27.06.13 18:09
Еще можно jQuery UI подключить.