Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
16 Дек 2017, 17:54
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Как серверу вызвать событие на клиенте?  (Прочитано 10564 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sobenko

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-03-01
  • Сайт: 
  • Профессия: Разработчик 1С
Платформа 8.2. Архитектура- клиент-сервер. Задача: нужно чтобы сервер вызвал определенную процедуру на определенном клиенте, подключенном к серверу.
Возможно-ли это реализовать и как?
(Это что-то сродни принципу работы ICQ и тому подобного софта, когда не обработчик ожидания периодически опрашивает сервер, а сервер сам вызывает обработчик события на клиенте)


Оффлайн Klyacksa

  • Фрилансер. Милости прошу с задачами в личку.
  • Глобальный модератор
  • *****
  • Сообщений: 1325
  • РЕПУТАЦИЯ: 430
  • КПД: 32%
  • Регистрация: 2010-08-20
  • Сайт: 
  • Профессия: Программист 1С
С сервера клиента вызвать нельзя. Можно только ВЕРНУТЬ УПРАВЛЕНИЕ с сервера на клиента, если перед этим клиент вызвал сервер.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Оффлайн ptrts

  • *
  • Сообщений: 2
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-03-05
  • Сайт: 
  • Профессия: Программист 8.1
Возможно это поможет

http://katalog.forum-1c.ru/public/21077/

Причем, ...

Поток на сервере, который выполняет серверный код, может либо принадлежать определенному клиенту (одному, тому который его запустил своим клиентским кодом), либо какому-нибудь регламентному заданию

Оффлайн sobenko

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-03-01
  • Сайт: 
  • Профессия: Разработчик 1С
Это понятно, но здесь немного другая задача, которая состоит в том, чтобы реализовать механизм уведомлений пользователей о наступлении определенных событий. К примеру менеджер создает заявку на оплату счета или счет. Бухгалтер (находящийся далеко от менеджера) разносит банк. И когда бухгалтер проводит платежку на оплату счета менеджера- менеджеру приходит сообщение (выскакивает окошко) о том, что счет проплачен (как к примеру в ICQ и др. интернет-мессенджерах). Реализовать это можно 2-мя путями:
1) через обработку ожидания, когда клиент "тыкается" на сервер через определенный интервал времени;
2) когда клиент просто слушает сервер и когда от сервера приходит сообщение, на клиенте отрабатывает определенная процедура.

Если с системой работает пару-тройка клиентов, то в принципе 1-й вариант решения не вызовет больших проблем. Проблемы начинают возникать когда число клиентов возрастает до нескольких сотен, а иногда даже и несколько десятков могут конкретно забить трафик и загрузить сервер. Режим работы, когда клиент подписывается на список событий на сервере и дальше переходит в режим "прослушки" уменьшает бесполезный трафик в разы и не грузит сервер бесполезными запросами. К примеру зачем периодически выполнять обновление формы списка, если в нем не происходило ни каких изменений? Зачем периодически опрашивать какой-нибудь регистр сведений или задачу, когда в нем ничего не менялось? Менялось или нет знает только сервер. По этому логично чтобы не клиент посылал каждые 5 секунд на сервер запрос и получал один и тот-же ответ, а сервер при подписке на событие клиента (к примеру "при записи" для задачи) вызывал обработку этого события на подписавшихся клиентах. Вызов обработки на "заинтересованных" клиентах может происходить из обработки события клиента, инициирующего определенное событие, где можно также прописать код, который из всех подписавшихся клиентов будет выбирать только нужных.

Такой принцип работы браузеров обеспечивает технология WebSocket, которая уже в прошлом году стандартизирована (http://www.rfc-editor.org/info/rfc6455) и поддерживается 4-мя браузерами (кроме Internet Explorer). За этой технологией- будущее, т.к. она реально снижает бестолковый трафик и бестолковое "дергание" сервера клиентами для получения изменений данных.

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Не понятно почему нелязя для такого случая использовать событие...*??? Если счет оплатили (Или что то с ним там сделали то сообщение моментально отправляется хозяину документа (Менеджеру) и не нужно опрашивать сервер)
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Всех пользователей ты можешь получить на сервере 1С:Предприятия - рой в эту сторону
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн sobenko

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-03-01
  • Сайт: 
  • Профессия: Разработчик 1С
Не понятно почему нелязя для такого случая использовать событие...*??? Если счет оплатили (Или что то с ним там сделали то сообщение моментально отправляется хозяину документа (Менеджеру) и не нужно опрашивать сервер)
Какое событие? Если счет оплатили, то при проведении документа возникает событие (ПриЗаписи). Но оно возникает на клиенте, который выполняет эту запись, а мне необходимо вызвать событие на другом клиенте. Каким образом и какое сообщение отправиться хозяину документа? Можно немного по подробнее?

Оффлайн sobenko

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-03-01
  • Сайт: 
  • Профессия: Разработчик 1С
Всех пользователей ты можешь получить на сервере 1С:Предприятия - рой в эту сторону
Ну получил я список всех подключенных пользователей и что дальше? Через как я могу с одного клиента вызвать событие на другом клиенте с определенным пользователем?

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Самое простое решение этой задачи это опрос клиентом сервера в интервале времени (Например регистра сведений).

Второе - это использовать ВК.

Возможно есть и еще какие то решения.
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Вот еще пример без использования ВК - используя сообщения в Windows
// Оповестим пользователей о неактуальности данных.
// Если мы не хотим подключать обработчик ожидания,
//воспользуемся командой Windows
МинутаХ = Формат(НачалоМинуты(КонецМинуты(ТекущаяДата()+300)+1),"ДФ=HH:mm:ss");
Текст = " Внимание!"+Символ(13)+ "Данные в системе 1с ЗУП Тест будут неактуальны 5 минут!"+Символ(13)+"Не формируйте отчеты и документы до "+МинутаХ;
Соединения = ПолучитьСоединенияИнформационнойБазы();
КОМПЫ = Новый Соответствие ;
Для каждого ЭлементСоединения Из Соединения Цикл
    КОМПЫ.Вставить(ЭлементСоединения.ИмяКомпьютера);
КонецЦикла; 
Для  каждого Компьютер из  КОМПЫ Цикл
    СтрокаМесаги = "MSG /time:30 /server:"+ СокрЛП(Компьютер.Ключ)+" * "+Текст;
    //СтрокаМесаги = "NET SEND "+ СокрЛП(Компьютер.Ключ)+Текст;
    ЗапуститьПриложение(СтрокаМесаги);
КонецЦикла;   
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!


Теги:
 

Во время обмена выпадает ошибка: "При подписке на событие произошла ошибка."

Автор alexkissРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 0
Просмотров: 4868
Последний ответ 11 Авг 2010, 08:58
от alexkiss
Как вызвать "Анализ субконто" из справочника "Контрагенты"

Автор EnigManРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 6500
Последний ответ 06 Фев 2012, 10:46
от cska-fanat-kz
Системная ошибка с формами нарушена синхронизация состояния формы на клиенте и сервере

Автор xDDРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 7872
Последний ответ 15 Апр 2016, 12:20
от bkmz_1_
Что лучше: добавить код в обработку проведения или создать подписку на событие "при записи"

Автор ZeedРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 728
Последний ответ 26 Окт 2016, 14:42
от MuI_I_Ika
Необходимо подпиской на событие "отредактировать" обработки проведения ПКО и РКО

Автор Vika_22Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 4327
Последний ответ 07 Авг 2011, 02:37
от Klyacksa

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
157 Сообщений
ilyay ilyay
66 Сообщений
alex0402
53 Сообщений
AIFrame
47 Сообщений
oleg-x
44 Сообщений
andron81_81
44 Сообщений
BuhRust
33 Сообщений
MuI_I_Ika MuI_I_Ika
32 Сообщений
Golickoff Golickoff
31 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

  • Точка Гостей: 256
  • Точка Скрытых: 0
  • Точка Пользователей: 8
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal