Не претендую на новшество, но замену штатному серверу взаимодействия - не находил. Конфигурация состоит из двух частей: работоспособный полноценный серверWS и два клиента (в данном случаи две обработки, которые выведены на рабочий стол).
За основание сервера было взято компоненту //infostart.ru/public/937068/ (автору спасибо)
1. СерверWS в данной конфигурации предоставляет собой фоновую задачу, которая в бесконечном цикле ожидает сообщений от клиентов. И при их получении - исполняет ряд действий. Этот сервер можно встроить как в люблю конфигурацию, так и держать отдельно. Второй вариант будет лучше, если на предприятии более одной базы данных.
СерверWS состоит из таких объектов как:
1)Общий модуль СерверWS - содержит все необходимые функции для работы сервера
2)Регламентной задачи ЗапускСервераWS - ее роль - watchdog, сторожевой таймер с периодичностью 30сек. Он запускает и проверяет состояние фоновой задачи, которая обслуживает сам сервер СервераWS.
3)несколько констант, регистр
4)компонента х64 выполнена по технологии NativeAPI, встроенная в конфигурацию (для х86 нужно скачать отдельно по ссылке выше и заменить)
Алгоритм работы с сервером:
1)Инициализация клиента (клиент это форма) - нужно регистрировать каждый раз при открытии формы. В процессе инициализации создается на форме клиента поле html документа, размером 1*1, не заметный на форме, но видимость должна быть.
&НаСервере
Процедура ИнициализацияКлиентаНаСервере()
//Ключ базы, Тема, Пользователь
КлиентСервераWS.ИнициализацияКлиентаWS("00112233","ДемонстрацияРаботыWS","Пользователь1",ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ИнициализацияКлиента(Команда)
ИнициализацияКлиентаНаСервере();
Элементы.ИнициализацияКлиента.Доступность=Ложь;
КонецПроцедуры
Метод инициализации клиента принимает параметры Ключ базы (должен быть один на всю бд, уид базы), Тема - общий идентификатор, который объединяет всех клиентов в единое, и Пользователь
2)Регистрации базы/Отключение базы - один раз на всю жизнь базы. Регистрацию базы нужно делать после инициализации
&НаКлиенте
Процедура ЗарегистрироватьБазу(Команда)
КлиентСервераWS.РегистрацияБазыДаныхWS("00112233","Тестовая БД","0000",истина,ЭтаФорма);
КонецПроцедуры
РегистрацияБазыДаныхWS принимает параметры: КлючБД, наименование бд(фиксируется на сервере для визуального контроля), пароль сервера, режим = истина -зарегистрировать, ложь - отменить регистрацию.
3)Отправка уведомлений - любому клиенту в любую подключенную к серверу базу
&НаКлиенте
Процедура Отправить(Команда)
мас=Новый Массив;
мас.Добавить("Пользователь2");
КлиентСервераWS.ОтправитьУведомлениеНаКлиент("00112233","ДемонстрацияРаботыWS",мас,Текст,этаформа);
КонецПроцедуры
ОтправитьУведомлениеНаКлиент - принимает КлючБД, Тема, массив или имя пользователей, текст сообщения
Состав клиента - это общий модуль и компонента. Далее в нужной форме подключаются нужные функции по работе с сервером. И, чуть не забыл, самое главное, что не нужно запускать никаких фоновых процессов или подключать обработки ожидания. При поступлении сообщения от сервера в модуле инициализированной формы произойдет внешнее событие, обработку которого нужно уже проработать программисту.
// Процедура - Внешнее событие сервера WS - возникае при поступлении данных на клиент от сервера
&НаКлиенте
Процедура ВнешнееСобытиеСервераWS(Элемент, ДанныеСобытия, СтандаотнаяОбработка)
Данные1 = ДанныеСобытия.Element.value;
Если ЗначениеЗаполнено(Данные1) Тогда
Данные=Данные+Данные1+Символы.ПС;
КонецЕсли;
КонецПроцедуры
В конфигурации на примере двух обработок показано как они могут общаться между собой, используя серверWS. Клиенты могут находится в разных базах, зная тему и иметь одинаковой ключБД - смогут получать уведомления.
Отдельно стоит отметить возможность отправлять уведомления на клиент от сервера 1С предприятие. Ярким примером может быть телефония, которая передает события по http протоколу. К примеру, при входном звонке нужно открыть карточку клиента в нужного пользователя. В этом случаи сервер 1С предприяте (http функция) вызывает метод сервера о передачи информации на клиент. Пример сервер-клиентского взаимодействия в конфигурации приведен через фоновую задачу.
На форме Клиент1 кнопка "Запустить фоновую задачу" - запускает ее. А после ожидания 10сек, приходит уведомление на Клиент2
Потрачено много времени, хоть и самого кода не так уж много, но результатом сам доволен. Принимаю задачи на интеграцию, вопросы или предложения о улучшению сервераWS.