|
Запустить форму в другом сеансе. | ☑ | ||
---|---|---|---|---|
0
Джон Тирби
12.06.12
✎
09:08
|
Сори заранее если чето не так спрошу...Есть ли в 1с возможность обратившись к серверу и получив список активных сеансов дать команду на выполнение определенной процедуры в одном из сеансов юзеров? В моем случае это открытие формы в которую будете передан номер входящего звонка с миниАТС. Заранее спасибо.
|
|||
1
Ork
12.06.12
✎
09:10
|
(0) Есть возможность из сеанса сходить на сервер прочитать там " номер входящего звонка с миниАТС" и открыть или не открыть форму.
|
|||
2
Джон Тирби
12.06.12
✎
09:15
|
если я вас правильно понял то это нада постоянно ломится на сервер миниАТС и глядеть нет ли входящего звонка...хотелось бы красивее сделать...
|
|||
3
Humandra
12.06.12
✎
09:19
|
(2) Можно ломиться не на сервер миниАТС, а на сервер 1С. МиниАТС пишет какой-то признак, что нужное событие произошло (в регистр сведений 1с, файл или еще куда, не суть важно). А обработчик ожидания 1С это место сканирует. Ну да, постоянно, конечно.
|
|||
4
Ork
12.06.12
✎
09:20
|
Красивее было бы сделать на сокетах. Если сервер АТС это умеет.
|
|||
5
Джон Тирби
12.06.12
✎
09:21
|
(4) По подробнее плиз..
|
|||
6
Джон Тирби
12.06.12
✎
09:25
|
вот нашел пример выгонялки из 1С всех активных юзеров...
Коннектор = Новый COMОбъект("v82.COMConnector"); Агент = Коннектор.ConnectAgent(Сервер); Кластеры = Агент.GetClusters(); Для каждого Кластер из Кластеры Цикл // получим и береберем процессы кластера Агент.Authenticate(Кластер,Пользователь, Пароль); Процессы = Агент.GetWorkingProcesses(Кластер); Для каждого Процесс из Процессы Цикл Порт = Процесс.MainPort; Попытка // теперь есть адрес и порт для подключения к рабочему процессу РабПроц = Коннектор.ConnectWorkingProcess(Сервер + ":" + СтрЗаменить(Порт, Символы.НПП, "")); // логин админа кластера РабПроц.AuthenticateAdmin(Пользователь, Пароль); // логин админа базы РабПроц.AddAuthentication(ПользовательБазы,ПарольБазы); ИнформационнаяБаза = РабПроц.CreateInfoBaseInfo(); ИнформационнаяБаза.Name = База; СоединенияБазы = РабПроц.GetInfoBaseConnections(ИнформационнаяБаза); // Разорвать соединения клиентских приложений. Для Каждого Соединение Из СоединенияБазы Цикл соединение - COMОбъект..может можно сдесь чето передать в юзерский сеанс? |
|||
7
Ork
12.06.12
✎
09:27
|
(5)Для примера (используется WinSock) : http://www.codenet.ru/progr/vbasic/winsock.php
|
|||
8
Джон Тирби
12.06.12
✎
10:34
|
через сокеты чето сложно...неосилю...может все-таки есть решения через COM-соединение?
|
|||
9
Живой Ископаемый
12.06.12
✎
10:35
|
может тогда уж через обработку ожидания? совсем просто
|
|||
10
fisher
12.06.12
✎
10:36
|
(8) Фишка в том, что инициировать событие в клиентском сеансе можно только из него самого. Без вариантов. Хоть через обработку ожидания, хоть через внешнюю компоненту.
|
|||
11
Джон Тирби
12.06.12
✎
10:42
|
(10)ясно...жаль..прийдется извращатся..
|
|||
12
fisher
12.06.12
✎
10:54
|
(11) В идеале надо к клиенту подключать внешнюю компоненту, которая мини веб-сервером работает. Которая сможет слушать порт и инициировать нужное событие в 1С.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |