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

23.03.21

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
СерверWS + КлиентWS
.dt 2,37Mb ver:1.0.2
8
8 Скачать (1 SM) Купить за 1 850 руб.

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

См. также

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

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

12000 руб.

02.09.2020    169888    939    403    

905

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    12967    100    46    

103

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

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

9360 руб.

17.05.2024    26702    90    48    

134

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

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

22200 руб.

06.10.2023    16912    41    15    

75

SALE! %

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

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

4800 3840 руб.

14.01.2013    190694    1151    0    

918

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

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

15000 руб.

10.11.2023    11444    40    27    

66

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

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    924    2    0    

5

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

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

5000 руб.

07.02.2018    103985    244    100    

306
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Steelvan 307 12.04.20 19:22 Сейчас в теме
3. ROM_1C 692 12.04.20 20:23 Сейчас в теме
(1) я же писал, что на новизну не претендую.
2. Steelvan 307 12.04.20 19:22 Сейчас в теме
Молодец что сделал.
4. malikov_pro 1326 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 692 26.05.20 20:40 Сейчас в теме
(5) Попробуйте Админ (вроде должен быть в списке) и пустой пароль
7. sigma17 12 27.05.20 13:54 Сейчас в теме
Спасибо, проблема решилась.
Оставьте свое сообщение