Вывести html документ 1с

1С html. Cоздание поля html документа

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

Рассмотрим пример. Разработаем обработку, которая будет представлять элемент справочника Пользователи в виде поля html документа. Для разработки примера я использовал демо БСП 3.1 (управляемое приложение).

Выведем в документ следующие поля справочника:

  • Наименование и Комментарий в виде текста;
  • ФизическоеЛицо и Подразделение в виде ссылок;
  • Фотографию пользователя;
  • Контактную информацию в виде таблицы.

Размещение реквизитов на форме

Для начала создадим внешнюю обработку и добавим форму. На форме создадим два реквизита Пользователь (тип СправочникСсылка.Пользователи) и ПредставлениеHTML (тип Строка неограниченной длины). Перетащим реквизиты в дерево элементов. Для элемента ПредставлениеHTML выберем вид Поле HTML документа и отключим отображение заголовка. Должно получится так:

Форма для поля html документа 1с 8

Теперь поработаем над программной частью формы:

  • Заполнять html поле данными будем при изменении пользователя. Поэтому создадим для него обработчик события ПриИзменении;
  • Работа же с самим полем потребует перехода на сервер, так как нам необходимо выполнять запрос и получать данные из хранилища значений. Поэтому для заполнения данных html создадим функцию ЗаполнитьHTMLПредставление с директивой НаСервереБезКонтекста. В качестве параметра передадим в нее ссылку на пользователя;

В итоге должно получиться следующее:

&НаКлиенте Процедура ПользовательПриИзменении(Элемент) ПредставлениеHTML = ЗаполнитьHTMLПредставление(Пользователь); КонецПроцедуры &НаСервереБезКонтекста Функция ЗаполнитьHTMLПредставление(Пользователь) КонецФункции

Получение данных

Во входные параметры функции ЗаполнитьHTMLПредставление мы передаем только ссылку на пользователя, поэтому для начала надо собрать все данные, необходимые для вывода в html документ. Для этого воспользуемся запросом, который вынесем в отдельную процедуру. Приводить текст процедуры здесь я не буду, чтобы не занимать много места. Ознакомиться с ним можно во внешней обработке, ссылка на которую находится внизу статьи.

Читайте также:  Скрипт выводящий числа php

Функция возвращает структуру, в которой содержится две выборки. Первая, ВыборкаДанных — содержит одну строку с основными данными пользователя. Вторая, ВыборкаКонтактов — содержит контактную информацию пользователя, в разрезе двух полей: Вид и Представление. Вызов функции получения данных выглядит так:

&НаСервереБезКонтекста Функция ЗаполнитьHTMLПредставление(Пользователь) ДанныеПользователя = ПолучитьДанныеПользователя(Пользователь); Данные = ДанныеПользователя.ВыборкаДанных; Контакты = ДанныеПользователя.ВыборкаКонтактов; Если Не Данные.Следующий() Тогда Возврат ""; КонецЕсли; . 

Заполнение стилей 1с html поля

Теперь в функции ЗаполнитьHTMLПредставление будем описывать html документ. Начнем с обязательных тегов и . После чего перейдем к заполнению стилей (тег ), которые будут применяться во всем документе, а также в отдельных его блоках.

HTMLТекст = " | | |  |";

Рассмотрим заполнение стилей более подробно:

Создание тела html документа в 1с 8

После описания стилей займемся формированием тела документа. Для этого используем тег .

Вывод изображения в html

Начнем с вывода фотографии пользователя. В элементе справочника она хранится в реквизите Фотография, в виде хранилища значения. Его мы получили вместе с остальными данными пользователя, при помощи запроса.

ДвоичныеДанныеФотографии = Данные.Фотография.Получить(); Base64ДанныеФотографии = Base64Строка(ДвоичныеДанныеФотографии); HTMLТекст = HTMLТекст + "";

Разберем представленный код:

  • Хранилище содержит двоичные данные изображения, их необходимо получить. Используем для этого метод Получить(), который распаковывает данные хранилища;
  • В html мы можем вывести изображение либо указав ссылку на него, либо использовав его двоичные данные, в кодировке base64. Для этого используем метод Base64Строка;
  • После подготовки данных, можно выводить их в документ.
    • Используем тег , применяемый для вывода изображений;
    • Атрибут src указывает адрес выводимого изображения или его данные. У нас это двоичные данные, поэтому в дополнение к ним необходимо использовать префикс data:image/ и указание типа данных base64.

Для того чтобы отделить изображение от следующей информации, используем тег

. Он означает начало нового абзаца. При описании стилей мы указали, что перед началом нового абзаца устанавливается отступ в 10 пикселей.

Вывод текстового реквизита в html

После фотографии выведем основные данные пользователя в следующем формате:

Начнем с имени пользователя:

HTMLТекст = HTMLТекст + ""; HTMLТекст = HTMLТекст + "Полное имя: "; HTMLТекст = HTMLТекст + ""; HTMLТекст = HTMLТекст + Данные.Наименование; HTMLТекст = HTMLТекст + "
";

Разберем представленный код:

  • Для того, чтобы имя реквизита не сливалось с его содержанием, выделим его другим цветом. Для этого используем свойство , позволяющее изменять характеристики текста. В нашем случае это цвет color.
  • После вывода данных используем тег
    . Он предназначен для перехода на следующую строку.

Вывод ссылки в html

Теперь выведем в документ физлицо пользователя. Так как оно представлено ссылочным типом, оформим его в виде ссылки.

ШаблонНавигационнойСсылки = "%2"; HTMLТекст = HTMLТекст + ""; HTMLТекст = HTMLТекст + "Физическое лицо: "; HTMLТекст = HTMLТекст + ""; НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Данные.ФизическоеЛицо); ФизическоеЛицо = СтрШаблон(ШаблонНавигационнойСсылки, НавигационнаяСсылка, Данные.ФизическоеЛицо); HTMLТекст = HTMLТекст + ФизическоеЛицо; HTMLТекст = HTMLТекст + "
";

Разберем представленный код:

Далее нам необходимо будет вывести еще один текстовый реквизит и еще один ссылочный. Для того чтобы не дублировать код вынесем добавление реквизита в html в отдельную, универсальную процедуру.

&НаСервереБезКонтекста Процедура ДобавитьРеквизит(HTMLТекст, Подпись, Значение) HTMLТекст = HTMLТекст + ""; HTMLТекст = HTMLТекст + Подпись + ": "; HTMLТекст = HTMLТекст + ""; Если ТипЗнч(Значение) = Тип("Строка") Тогда HTMLТекст = HTMLТекст + Значение; Иначе ШаблонНавигационнойСсылки = "%2"; НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Значение); HTMLТекст = HTMLТекст + СтрШаблон(ШаблонНавигационнойСсылки, НавигационнаяСсылка, Значение); КонецЕсли; HTMLТекст = HTMLТекст + "
"; КонецПроцедуры

Вывод всех реквизитов будет выглядеть следующим образом:

ДобавитьРеквизит(HTMLТекст, "Полное имя", Данные.Наименование); ДобавитьРеквизит(HTMLТекст, "Физическое лицо", Данные.ФизическоеЛицо); ДобавитьРеквизит(HTMLТекст, "Подразделение", Данные.Подразделение); ДобавитьРеквизит(HTMLТекст, "Комментарий", Данные.Комментарий); 

Вывод таблицы в html 1с

Осталось вывести таблицу контактной информации пользователя. Это делается довольно просто.

HTMLТекст = HTMLТекст + ""; //Шапка таблицы HTMLТекст = HTMLТекст + ""; HTMLТекст = HTMLТекст + ""; HTMLТекст = HTMLТекст + ""; HTMLТекст = HTMLТекст + ""; //Тело таблицы Пока Контакты.Следующий() Цикл HTMLТекст = HTMLТекст + ""; HTMLТекст = HTMLТекст + ""; HTMLТекст = HTMLТекст + ""; HTMLТекст = HTMLТекст + ""; КонецЦикла; HTMLТекст = HTMLТекст + "
ВидОписание
" + Контакты.Вид + "" + Контакты.Представление + "
";

На этом формирование поля html документа в 1с завершено. Осталось только закрыть теги и вернуть сформированный текст.

HTMLТекст = HTMLТекст + ""; Возврат HTMLТекст;

В итоге у нас получается html поле, заполненное следующим образом:

Html документ сформированный в 1с

Обработка нажатия на ссылку

В нашей обработке мы используем не веб ссылки, а на навигационные ссылки 1с. По этой причине система не может корректно обработать их нажатие. Это можно исправить, создав обработчик события ПриНажатии, для Поля HTML документа.

&НаКлиенте Процедура ПредставлениеHTMLПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка) Если Лев(ДанныеСобытия.Href, 6) = "v8doc:" Тогда СтандартнаяОбработка = Ложь; НавигационнаяСсылкаПоля = Сред(ДанныеСобытия.Href, 7); ПерейтиПоНавигационнойСсылке(НавигационнаяСсылкаПоля); КонецЕсли; КонецПроцедуры

В обработчике мы анализируем текст ссылки, на которую произошло нажатие. Если это навигационная ссылка, обрабатываем ее по отдельному алгоритму. Получаем текст и осуществляем переход. Таким образом при нажатии на ссылку, у нас произойдет переход на форму элемента справочника.

Скачать обработку формирования html поля можно здесь: СозданиеHTMLПоля

Источник

Поле HTML документа в управляемом и обычном приложении

В 1С предприятии, как в обычном так и управляемом приложении, можно создать элемент формы «Поле HTML документа». Данный элемент позволяет выводить на форму HTML страницы полученные по URL адресу.

Обычное приложение

На примере внешней обработки нужно создать:
Реквизит формы: ПолеHTMLДокумента1

Для перехода на страницу используется метод «Перейти».

Процедура КнопкаПерейтиНажатие(Кнопка) 

ЭлементыФормы.ПолеHTMLДокумента1.Перейти("https://www.1c.ru");

КонецПроцедуры

Управляемое приложение

На примере внешней обработки нужно создать:
Реквизит формы: ПолеHTMLДокумента1 (тип Строка)
Поле формы: ПолеHTMLДокумента1 (вид Поле HTML документа)

В управляемом приложении метод «Перейти» недоступен. Поэтому для перехода на страницу, URL-адрес устанавливается не полю формы, а реквизиту формы.

Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться

О сайте Обратная связь Правила Новости 1С Copyright © 2023
Цитирование материалов (тексты, изображения, программный код) допускается только с размещением активной ссылки на сайт 1CLenta.ru

Источник

Поле HTML документа в управляемом и обычном приложении в 1С 8.3, 8.2

Поле HTML документа — этот элемент позволяет выводить на форму HTML страницы, полученные по URL адресу.

ПолеHTMLДокумента в обычном приложении

Для примера, во внешней обработке, создаём реквизит формы — ПолеHTMLДокумента1. Для перехода на страницу в интернете, воспользуемся методом «Перейти».

-HTML-документа-обычное-приложение Поле HTML документа в управляемом и обычном приложении в 1С 8.3, 8.2

ПолеHTMLДокумента в управляемом приложении

Для примера, во внешней обработке, создаём реквизит формы — ПолеHTMLДокумента1 (с типом — строка). На самой форме создаём элемент, указывающий на наш, только что созданный реквизит. Вид его указываем — Поле HTML документа.

-HTML-документа-управляемое-приложение Поле HTML документа в управляемом и обычном приложении в 1С 8.3, 8.2

В управляемом приложении метод «Перейти» недоступен.

По этой причине, для перехода на страницу, URL-адрес установим не полю формы, а реквизиту формы.

Веб браузер в 1С

Давайте создадим простейший веб браузер на 1С, используя, только что полученные знания.

-браузер-в-1с Поле HTML документа в управляемом и обычном приложении в 1С 8.3, 8.2

Процедура АдресОкончаниеВводаТекста ( Элемент , Текст , ДанныеВыбора , ПараметрыПолученияДанных , СтандартнаяОбработка )

Весь прикол в том, что Поле HTML документа — это всеми любимый Internet Explorer, только в режиме совместимости с IE7. Поэтому, в некоторых случаях, вас будет ждать такое уведомление)))

-в-веб-браузере Поле HTML документа в управляемом и обычном приложении в 1С 8.3, 8.2

Все материалы и продукты на этом сайте опубликованы для целей ознакомления для зарегистрированных пользователей фирм производителей материала или продукта, или его авторов. Помните, что скачанные материалы или продукты, Вы используете на свой страх и риск. Автор и администрация этого сайта не несет никакой ответственности за использование этих материалов или продуктов третьими лицами. В случае, если вы используете один из перечисленных здесь материалов или продуктов, Вы обязаны официально приобрести его у фирмы производителя или автора.

Источник

Оцените статью