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

23.03.21

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

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

Файлы

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

Наименование Скачано Купить файл
СерверWS + КлиентWS
.dt 2,37Mb ver:1.0.2
8 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Не претендую на новшество, но замену штатному серверу взаимодействия - не находил. Конфигурация состоит из двух частей: работоспособный полноценный сервер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С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

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

24900 руб.

20.08.2024    75097    379    170    

325

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

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

10000 руб.

02.09.2020    268369    1494    421    

1179

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    40164    113    54    

126

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    63758    130    36    

137

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Программист Бизнес-аналитик Руководитель проекта 1С 8.3 Платные (руб)

Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.

14000 руб.

17.04.2026    8907    38    46    

51

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    26425    98    46    

104

Информационная безопасность Инструменты администратора БД Инструментарий разработчика Учет документов Системный администратор Программист Бизнес-аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С 8.5 Розничная и сетевая торговля (FMCG) Платные (руб)

Контроль ввода данных в 1С: проверка заполнения реквизитов, обязательные поля, контроль перед записью и проведением, запрет проведения документа. Позволяет настраивать любые проверки данных в 1С 8.3/8.5 от обязательных полей до сложных условий – без открытия конфигуратора и написания кода. Готовое расширение, которое подключается и работает сразу.

6000 руб.

15.04.2026    2624    6    0    

21

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

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

9500 руб.

17.05.2024    54768    187    63    

220
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Steelvan 317 12.04.20 19:22 Сейчас в теме
Эта идея была предложена еще в сентябре 19-го :)

http://forum.infostart.ru/forum28/topic203165/message2298131/#message2298131
3. ROM_1C 692 12.04.20 20:23 Сейчас в теме
(1) я же писал, что на новизну не претендую.
2. Steelvan 317 12.04.20 19:22 Сейчас в теме
Молодец что сделал.
4. malikov_pro 1356 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 Сейчас в теме
Спасибо, проблема решилась.
Для отправки сообщения требуется регистрация/авторизация