Использование элемента управления ПолеHTMLдокумента в 1С

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

  • Работать с компонентами ActiveX;
  • Вызывать Javascript;
  • Создавать и использовать ссылки на различные объекты базы данных.

Этот объект называется в 1С полеHTMLдокумента.

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

Создание собственного браузера в 1С

Давайте попробуем с помощью этого поля создать обработку, открывающую ссылку на ресурс в интернете:

  1. Создаем внешнюю обработку и форму для нее;
  2. Добавляем на форму новое поле «ПолеХТМЛ» и реквизит «URL», имеющий тип Строка (Рис.1) Рис.1
  3. Добавленному полю устанавливаем параметр «Вид» в значение «Поле HTML документа», а в качестве пути к данным устанавливаем наш реквизит (Рис.2); Рис.2
  4. Вот, в принципе и все что мы добавим и сделаем с интерфейсом, перейдем к программированию, наш код будет состоять всего из восьми строчек, включая директивы места выполнения и определения процедур (Рис.3); Рис.3
  5. Первая процедура вызывается из свойств поля URL, вторая – из свойств поля «ПолеХТМЛ».

Проверим, как это работает. Запустим нашу обработку и введем в поле URL адрес нашего сайта (blog.it-terminal.ru). Получим картинку (Рис.4) Рис.4.

Проанализируем, что мы видим:

  1. Открылось поисковое окно, со ссылкой на сайт, при этом поиск осуществляется с помощью поисковой системы, назначенной по умолчанию;
  2. Обработка работает, интернет страницы открываются, переходы по ссылкам осуществляются;
  3. При вызове ресурса произошла ошибка сценария.

С чем связана ошибка? С тем, что ПолеHTMLДокумента – это фактически типовой Internet Explorer, причем не самой последней версии, который не поддерживает большинство современных ресурсов. Так что сайты, не поддерживающие режим совместимости, будут открываться с ошибками в сценарии.

Закрыв предупреждение, можно перейти по ссылке.

Для удобства пользователя можно на форме создать навигационные команды «Вперед» и «Назад», которые будут описывать соответствующие перемещения.

Создание ссылки на объект базы данных

Задача состоит в следующем:

  • Создать список каких-либо объектов, допустим элементы справочника «Сотрудники»;
  • Получить ссылку на каждый из них;
  • Открывать их непосредственным нажатием на соответствующую ссылку.

Создадим нашу обработку и форму на ней.

  1. Добавим реквизит ПолеХТМЛ и новое поле на форму, связанную с этим реквизитом, также определим команду для заполнения страницы (Рис.5) Рис.5
  2. В модуле опишем исполняемый код (Рис.6); Рис.6
  3. Проверим, что получилось (Рис.7) Рис.7

Подробнее рассмотрим, что мы сделали:

  1. Создали текстовый документ, который содержит «тело» нашего сайта;
  2. Начало и окончание документа, а так же тело нашего ХТМЛ документа мы описали с помощью соответствующих тегов;
  3. Записали в него каждого сотрудника;
  4. В записях сотрудников у нас содержится информация, которая нам понадобится позже, когда мы будем открывать элементы кликая на ФИО сотрудников;
  5. Установили нашему полю текст, который описывает структуру.

Попробовав сейчас активировать любую из имеющихся гиперссылок мы столкнемся с тем, что «Такая страница не найдена»(Рис.8) Рис.8

Продолжим описывать обработчик.

Создадим процедуру, которая обрабатывает клик мышки по гиперссылке на элемент справочника (Рис.9).

Рис.9

Рассмотрим её подробнее:

  1. Прежде всего отключим стандартную обработку щелчка по гиперссылке;
  2. Получим строку, характеризующую наш элемент, для этого в ДанныеСобытия получим значение параметра Element.id;
  3. Разделим полученную строку в соответствии с правилами, по которым мы её формировали (название справочника и уникальный идентификатор, разделенные между собой тире);
  4. Получаем ссылку на элемент, используя функцию ВозвратСсылки;
  5. Открываем элемент по полученной ссылке.

Протестируем выполнение созданного кода.

Так как в настройках нашей программы запрещено использование модальных окон, выполнение выше приведенного кода завершилось ошибкой (Рис.10). В противном случае все бы отработало нормально.

Рис.10

Зайдем в конфигураторе в меню Текст->Рефакторинг->Нерекомендуемые синхронные вызовы->Преобразовать вызовы модуля. По прошествии некоторого времени текст нашего модуля будет выглядеть как на Рис.11

Рис.11

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

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

Пара слов о Javascript

Вызовы функций JS в ранних версиях программы осуществлялись через параметр поля document.parentWindow.MyFunk(), однако в современных браузерах эта возможность была утрачена. Не срабатывают так же вызовы через eval().

Выход состоит в использовании специальной функции fireEvent, которая является универсальным механизмом обмена данными между 1С и Javascript.


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

Ваш e-mail не будет опубликован.

*

code


Формирование бухгалтерской отчетности в 1С:Бухгалтерии 8
В апреле 2019 года Минфин внес изменения во все формы бухгалтерской отчетности. Часть поправок действует с 01.06.2019. Как сформировать в ...
Что нужно знать компаниям при работе с самозанятыми
Работа с самозанятыми. Что это за категория, где граница их активности: географическая, финансовая и по видам деятельности. Порядок налогообложения – ...
Как в 1С:Бухгалтерия контролировать сумму страховых взносов в КУДиР
В каких случаях можно признать в расходах при УСН страховые взносы. Как обнаружить ошибку в признании страховых взносов в расходах ...
1С:ERP Урок 39. Склад. Инвентаризация товаров
Тридцать девятый видеоурок вводного курса по «1С:ERP Управление предприятием». Продолжаем рассматривать подсистему «Склад и доставка». Тема на сегодня – инвентаризация ...
Выставление единого корректировочного счета в 1С:Бухгалтерии
Продавец вправе выставить единый корректировочный счет-фактуру при изменении стоимости товаров (работ, услуг, имущественных прав), которые указаны в в ранее выставленных ...
Регистрация среднего заработка на период трудоустройства бывшего сотрудника в 1С:ЗУП ред.3
Если сотрудник уволен в связи с ликвидацией организации или сокращением численности (штата) работников организации, ему выплачивается выходное пособие в размере ...
Удержание НДФЛ при выплате аванса в последний рабочий день в 1С:ЗУП ред 3
Если аванс выплачивается сотруднику в последний день месяца, то день выплаты совпадает с датой фактического получения дохода за этот месяц ...
1С:ERP Урок 38. Склад. Внутреннее товародвижение
Тридцать восьмой видеоурок вводного курса по «1С:ERP Управление предприятием». Начинаем рассматривать подсистему «Склад и доставка». Данная подсистема будет рассмотрена в ...