Сервер WS или как с сервера вызвать клиента? аля Сервер взаимодействий без него

23.03.21

Разработка - Инструментарий разработчика

Не так давно, в 1С появился Сервер Взаимодействия, который решает огромную проблему сервер-клиентского взаимодействия. Теперь появилась возможность отправить уведомления с сервера на клиент. Не буду углубляться во все возможности штатного (если так можно назвать) сервера взаимодействия, и кто уже успел с ним поработать - почувствовал все преимущества и недостатки. Как раз через недостатки было принято решение отказаться от него и сделать свой. Следующая конфигурация - это серверWS (WebSocket), для любой взаимосвязи сервера с клиентом, клиента с клиентом, не только в пределах одной базы, но и различных баз, и даже размещенных удалено друг от друга.

Скачать исходный код

Наименование Файл Версия Размер
СерверWS + КлиентWS
.dt 2,37Mb
8
.dt 1.0.2 2,37Mb 8 Скачать

Не претендую на новшество, но замену штатному серверу взаимодействия - не находил. Конфигурация состоит из двух частей: работоспособный полноценный сервер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.

сервер взаимодействия websokets server 1c сервер-клиент вызовы серверWS 

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    125097    683    389    

732

Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 руб.

06.10.2023    7800    24    6    

42

Infostart УДиФ: Управление данными и формами 1С

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    4301    12    2    

36

SALE! %

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

3600 2280 руб.

14.01.2013    178682    1084    0    

862

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99660    239    97    

298

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18411    6    8    

40

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

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

2400 руб.

24.09.2019    23867    16    15    

33

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28332    3    10    

16
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Steelvan 302 12.04.20 19:22 Сейчас в теме
3. ROM_1C 691 12.04.20 20:23 Сейчас в теме
(1) я же писал, что на новизну не претендую.
2. Steelvan 302 12.04.20 19:22 Сейчас в теме
Молодец что сделал.
4. malikov_pro 1293 18.04.20 09:50 Сейчас в теме
Зачем из 1С делать ws сервер если можно использовать centrifugo?
Мой вариант реализации https://infostart.ru/public/1125876/.

В предложенной клиентской компоненте для принятия сообщений нужен цикл, поэтому использовал https://infostart.ru/public/1112969/ которая умеет генерировать внешнее событие для 1С.
5. sigma17 12 26.05.20 17:30 Сейчас в теме
Скачал файл. Загрузил dt. Список пользователей пуст. Зайти не дает.
6. ROM_1C 691 26.05.20 20:40 Сейчас в теме
(5) Попробуйте Админ (вроде должен быть в списке) и пустой пароль
7. sigma17 12 27.05.20 13:54 Сейчас в теме
Спасибо, проблема решилась.
Оставьте свое сообщение