ActiveX и тонкий клиент

12 декабря 2012

ПРЕДИСЛОВИЕ

С выходом платформы 1С:Предприятие 8.2 и созданием тонкого клиента, использование компонентов AcriveX стало проблематичным. Управляемые формы не поддерживают работу с AcriveX,  поэтому приходится либо работать на толстом клиенте в обычном приложении, либо в конфигурации устанавливать опцию поддержки обычных форм в управляемом приложении и переносить компонент на них.

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

Пример использования рассмотрим далее в статье. Предположим, что нам поступило техническое задание, в котором необходимо в форме документа отображать прикрепленный к объекту PDF-документ.

Пример

Создадим простую конфигурацию, где будет один документ и регистр сведений, который хранит прикрепленные файлы к документу.

На форму документа, который назван "Документ пример", поместим динамический список прикрепленных файлов и поле HTML-документа. Напишем алгоритм таким образом, чтобы при нажатии на прикрепительный файл в динамическом списке, справа в поле HTML отобразился PDF-документ.

Платформа 1С:Предприятие 8.x по умолчанию для просмотра веб-страниц использует Internet Explorer. Соответственно, если мы передадим в поле HTML-документа адрес в интернете или ссылку на файл, то поведение платформы будет аналогичным, если бы проделали тоже самое в браузере через "Файл - Открыть".

Конечно, для того, чтобы IE смог отобразить PDF-файл необходимо позаботиться об установке ActiveX-компоненты для работы с данным форматом. Лучшим выбором будет использование компоненты от Adobe, которую можно скачать на официальном сайте, либо установив приложение Adobe Reader. Компонент должен быть установлен на клиентском компьютере. Скачать последнею версию программы можно по адресу: http://get.adobe.com/reader/?promoid=JZEFU.

В итоге, мы сможем просматривать PDF-документы прямо в форме платформы. На видео ниже вы можете увидеть работу ActiveX-компонента в режиме тонкого клиента на демонстрационной конфигурации.

Скачать конфигурацию, демонстрирующую работу ActiveX на тонком клиенте 1С:Предприятие 8.2, можно по ссылке.

Как это работает?

Общее описание функционала демонстрационной конфигурации:
  • Присоединенные файлы хранятся в регистре сведений "ПрисоединенныеФайлы" в виде двоичных данных в реквизите "Данные" типа ХранилищеЗначений. В измерении регистра "Объект" находится ссылка на документ, к которому привязаны файлы, а в измерении "GUID" типа УникальныйИдентификатор  хранится уникальное значение, присущее только данному файлу в базе.Регистр
  • В форме документа "ДокументПример" используется динамический список для отображения всех присоединенных файлов к документу. При создании формы в запрос динамического списка передается ссылка текущего документа в параметр "Документ"Динамический список
  • При активизации строки списка производится извлечение двоичных данных из ресурса регистра сведений и их запись во временный файл
  • После записи файла, путь на него присваивается реквизиту формы "ПолеHTML" типа Строка, который связан с элементом формы "ПолеHTML" вида "Поле HTML документа"
  • Компонент ActiveX "Adobe PDF Reader", установленный для Internet Explorer используется браузером для открытия сохраненного нами файла и отображения полученных данных на форме в поле HTML.Чтение документа
  • Перед закрытием программы удаляются все временные файлы, используемые при открытии присоединенных документов. Расположение файлов, которые необходимо удалить, находится в списке значений, находящийся в параметре сеанса "УдаляемыеФайлы" с типом ХранилищеЗначений.  В процедуре ПриЗавершенииРаботыСистемы,  модуля управляемого приложения,  файлы удаляются из системы.

Примечание и вывод

Описанный выше способ работы с ActiveX на тонком клиенте имеет некоторые недостатки:

  1. На всех клиентских компьютерах должен быть установлен необходимый компонент.
  2. Относительно жесткая привязанность к операционной системе и браузеру.
  3. Увеличение трафика. Необходимо передавать файл с сервера на клиент, чтобы отобразить его.
  4. Отсутствует обратная связь с ActiveX-компонентом. Нельзя организовать обработку стандартных событий самого компонента.

Тем не менее, если перечисленные недостатки не критичны при организации работы прикладного решения, применение ActiveX-компонента данным способом позволит сделать работу пользователей с электронными документами более удобной.


comments powered by Disqus