Книга: Технологии интеграции "1С:Предприятия 8.3""
Назад: Общая информация
Дальше: Глава 6. Файловое взаимодействие

Пример реализации

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

подробнее

Подробнее познакомиться с примером интеграции веб-клиента и внешнего сайта можно в демонстрационной конфигурации «Интеграция с 1С», которая прилагается к книге.

Для простоты в качестве веб-сайта мы будем использовать стартовую страницу index.html веб-сервера Apache, с помощью которого мы будем публиковать веб-клиент нашего прикладного решения. В нашем примере веб-клиент будет опубликован по адресу http://localhost/Web_1C.

Страница index.html находится в подкаталоге /htdocs той папки, куда устанавливался Apache. Код страницы изменим следующим образом (листинг 5.8).

Листинг 5.8. Код страницы «index.html»

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

<script src="http://localhost/Web_1C/scripts/webclient1ce.js"></script>

<title>Untitled Document</title>

<style type="text/css">

.style1 {

color: #0000FF;

}

.style2 {

color: #FF00FF;

}

.style3 {

color: #FF0000;

font-size: small;

}

</style>

</head>

<body onLoad="init();">

<h1 align="center" class="style1">Пример встраивания веб-клиента в сайт</h1>

<p align="center" class="style2">Здесь работает веб-клиент 1С:Предприятия 8</p>

<div id="webClientContainer" align="center"></div>

<button onClick="messageToWebClient();"><span class="style3">Послать сообщение веб-клиенту</span></button>

<div id="webClientMessageArea" align="center"></div>

<p align="center">

</p>

<script>

var webClient = null;

var onWebClientMessage = function (message, origin) {

if (origin < 'http://localhost') {

document.querySelector('#webClientMessageArea').innerText = message;

}

};

var messageToWebClient = function () {

webClient.postMessage("Поступило сообщение из внешнего сайта");

};

var init = function () {

webClient = new WebClient1CE('webClientContainer',

{

webClientURL: 'http://localhost/Web_1C?MainWindowsMode=EmbeddedWorkplace',

width: '900px',

height: '500px',

events:

{

onMessage: onWebClientMessage

}

});

};

</script>

</body>

</html>

Прокомментируем некоторые элементы html-кода:

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

В форме этой обработки создадим команду СообщениеВнешнемуСайту и перетащим ее в окно элементов формы. Обработчик команды заполним следующим образом (листинг 5.9).

Листинг 5.9. Обработчик команды «СообщениеВнешнемуСайту»

&НаКлиенте

Процедура СообщениеВнешнемуСайту(Команда)

 

Если ОкноВнешнегоСайта.Доступно Тогда

СообщениеСайту = Новый СообщениеВнешнемуСайту("Получено сообщение от веб-клиента");

ОкноВнешнегоСайта.ОтправитьСообщение(СообщениеСайту);

КонецЕсли;

 

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

В этом обработчике мы проверяем, что веб-клиент работает внутри веб-сайта. В случае если окно внешнего веб-сайта доступно, с помощью метода ОтправитьСообщение() менеджера окна внешнего сайта мы отправляем сообщение сайту с текстом, заданным при создании объекта СообщениеВнешнемуСайту.

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

Листинг 5.10. Обработчик события формы «ПриОткрытии»

&НаКлиенте

Процедура ПриОткрытии(Отказ)

 

Если ОкноВнешнегоСайта.Доступно Тогда

ОбработчикСобытия = Новый ОписаниеОповещения("ПриПолученииСообщенияОтВнешнегоСайта", ЭтотОбъект);

ОкноВнешнегоСайта.ПодключитьОбработчикСообщений(ОбработчикСобытия);

КонецЕсли;

 

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

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

Экспортную процедуру ПриПолученииСообщенияОтВнешнегоСайта() также поместим в модуле формы обработки и заполним ее следующим образом (листинг 5.11).

Листинг 5.11. Обработчик оповещения «ПриПолученииСообщенияОтВнешнегоСайта»

&НаКлиенте

Процедура ПриПолученииСообщенияОтВнешнегоСайта(Сообщение, ДополнительныеПараметры) Экспорт

 

Сообщить(Сообщение.Данные);

 

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

В обработчике оповещения в параметре Сообщение содержится объект СообщениеВнешнегоСайта. Текст сообщения, полученного от внешнего сайта, просто выводится в окно сообщений формы обработки.

И затем нам нужно отключить обработчик сообщений ПриПолученииСообщенияОтВнешнегоСайта() при закрытии формы обработки. Для этого создадим обработчик события формы ПриЗакрытии и заполним его следующим образом (листинг 5.12).

Листинг 5.12. Обработчик события формы «ПриЗакрытии»

&НаКлиенте

Процедура ПриЗакрытии(ЗавершениеРаботы)

 

Если ОкноВнешнегоСайта.Доступно Тогда

ОбработчикСобытия = Новый ОписаниеОповещения("ПриПолученииСообщенияОтВнешнегоСайта", ЭтотОбъект);

ОкноВнешнегоСайта.ОтключитьОбработчикСообщений(ОбработчикСобытия);

КонецЕсли;

 

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

В заключение поместим форму обработки на начальную страницу приложения и опубликуем наше прикладное решение на веб-сервере по адресу http://localhost/Web_1C.

Проверим, как это работает.

Запустим веб-браузер и в адресной строке наберем адрес http://localhost. После этого откроется стартовая демонстрационная страница веб-сервера Apache, на котором мы опубликовали наше прикладное решение.

В соответствии с изменениями, которые мы сделали в странице index.html (см. листинг 5.8), вместо надписи «It works!» теперь на этой странице появятся окно с веб-клиентом нашего прикладного решения и кнопка для отправки сообщения веб-клиенту (рис. 5.3).

Рис. 5.3. Веб-клиент «1С:Предприятия», встроенный в стартовую демонстрационную страницу веб-сервера Apache

При нажатии на кнопку Сообщение внешнему сайту в форме обработки, расположенной на начальной странице веб-клиента, веб-сайту будет отправлено сообщение с текстом «Получено сообщение от веб-клиента», которое он покажет внизу веб-страницы (рис. 5.4).

Рис. 5.4. Веб-клиент «1С:Предприятия», встроенный в стартовую демонстрационную страницу веб-сервера Apache

А при нажатии на кнопку Послать сообщение веб-клиенту на странице веб-сайта в окне сообщений формы обработки появится сообщение с текстом «Поступило сообщение из внешнего сайта» (рис. 5.5).

Рис. 5.5. Веб-клиент «1С:Предприятия», встроенный в стартовую демонстрационную страницу веб-сервера Apache

Установим теперь свойство конфигурации Режим основного окна клиентского приложения в значение Встроенное рабочее место. В результате мы увидим в окне веб-клиента только форму, находящуюся на начальной странице приложения (рис. 5.6).

Рис. 5.6. Веб-клиент «1С:Предприятия», встроенный в стартовую демонстрационную страницу веб-сервера Apache


Назад: Общая информация
Дальше: Глава 6. Файловое взаимодействие