Имя: Пароль:
1C
 
1С Предприятие и TCP/UDP.
0 Halluc
 
13.08.04
11:19
В офисе развернута IP телефония.
Сама по себе задача такая - есть Cisco CallManager (программная АТС), есть шлюз в городскую телефонную сеть - Cisco 1760V, из города приходят линии ISDN, соответственно, по ним к нам приходит CallerID (т.е. АОН, грубо говоря). В офисе все телефоны - Cisco IP Phone разных модификаций. Задача - оператор сидит в 1С, разговаривает с клиентом. Номер клиента известен. CallManager через JTAPI может его сказать нам. Оператор тыкает кнопку где-то в форме выписки документа  работая в 1С, и в счет/накладную и т.п. вставляются реквизиты абонента (если он в базе уже есть).

Но необходимо чтобы кнопка получить реквизити по номеру телефона была активна только в том случае когда оператор разговаривает с клиентом. И как только он ложит трубку кнопка становилась неактивной. Когда поднимает вновь активной.

На сервере где установлен CallManager есть программа на Java которая обрабатывает события от CallManager\\\\\\\'a и может по UDP отдать в сеть номер телефона, или событие нового звонка, или событие окончания звонка.

Как в 1С реализовать прослушивание UDP порта?
Возможен конечно вариант с ActiveX компонентой но как можно обрабатывать события в 1С поступившие от нее?
Рассматривался так же вариант забирать номер по HTTP протоколу, но в этом случае теряется динамичность, придется каждый раз делать запросы чтобы отслеживать состояние телефонной линии.

Возможно будут другие пути реализации... Подскажите!
1 ErichKrause
 
13.08.04
11:55
Вопрос конешно интересный, но боюсь на ЭТОМ форуме никто не знает ответ на него :)
2 skunk
 
13.08.04
11:57
смотреть книжку "технология создания внешних компонент"
http://www.1c.ru/rus/products/1c/v75/1ctexcoz/index.html
3 skunk
 
13.08.04
11:58
4 HideMan
 
13.08.04
11:59
(1) Причем здесь "ни кто не знает"? Просто данный вопрос решается либо через DDE либо внешней компонентой. А для этого нужно это уметть делать.
5 BorisG
 
13.08.04
12:33
(1) Если сам не знаешь, вовсе не значит, что никто не знает ;-)
И совсем другой вопрос... а интересно ли сей весьма специфический вопрос тут обсуждать... Скорее нет...
6 Z1
 
13.08.04
13:00
(0)В 1с ассоциируй справочник сделай спр компьютер ( можно сотрудник )
подчиненый справочник  ВнутрениеТелефоны. К спр клиенты хранишь подчиненный
спр телефоны клиента
Есть специал директорий скажем call от каталога базы.
Пришел  звонок. Твоя компонента ( вообще отдельный процесс вне 1с) кладет в эту директокторию файл с именем файла внутрений номер. При разрыве соеденения файл удаляешь. Внутри файла храниться внешний номер абонента.
При нажатии на свою кнопку в 1с определяешь компьютер. Смотришь подчиненные внутр телефоны и находишь или нет соответствующий файл. По содержимому файла востанавливаешь клиента. Если сотрудник умудряется разговаривать одновременно по двум телефонам то можешь выдать список из двух клиентов.
Вроде бы все.
У меня все это решено на порядок проще. Все это я могу вытащить из базы тарификатора ( без всякой ip телефонии) одним sql запросом
7 Лось
 
13.08.04
19:20
HideMan, мыло дай , общение на тему DDE.
8 ErichKrause
 
13.08.04
21:50
вопщим от (1) по (7) ничего не изменилось.. разве что (6) исключение... BorisG как всегда выебнулся, но помочь ниче не смог)) это и понятно) ацтой
9 MMF
 
13.08.04
22:58
Подобного UDP-клиента сделать очень просто. Взять готовую Дельфи-компоненту от NetMasters, Indy или простой UDPSocket и встроить во внешнюю компоненту. Компоненту с UDP я делал, проблем не было.
10 Лось
 
13.08.04
23:13
(8) Отлично!
(0) В Acsess 95/97 был пример дозвона из адресной книги на VB 6.0, при желании...
(9)внешнюю компоненту с 1С вызовом?
11 Halluc
 
14.08.04
01:25
На (2) и (3) отвечаю:
Я все это прочитал до того как писать сюда, поэтому и интересуюсь реально ли сделать все это на средствах 1C. Я прекрасно понимаю что можно написать софтину запускать ее на этом же компе где сидит 1С и по DDE, OLE и т.д. и т.п. коннектится с 1С и все это рулить. Я имел в виду без промежуточных звений решить данную проблему.

Для (4):
Делать это можем вопрос другой стоит см. выше.

Для (6):
Идея ясна, но опять же мы ухищряемся с помощью дополнительной софтины...

Для (9):
Вопрос не стоит в реализации этой внешней компоненты в какой либо среде разработки, просто не хочется никаких дополнительных компонент.

Всем ОГРОМНОЕ спасибо...
Вот только для меня остался всего один открытый вопрос. Подскажите как из внешней компоненты сказать 1С-ке какое нить событие. Допустим чтобы кнопка на панели стала активной (не активной). Куда у нас в 1С-ке цепляется это событие???
12 MMF
 
14.08.04
09:20
(11) средствами 1С не прослушать UDP-порт. Поэтому все-равно нужно писать внешнюю компоненту. Событие цепляется на ОбработкаВнешнегоСобытия(), либо возможно вызвать из ВК экспортируюмую процедуру глобального модуля.
13 romix
 
14.08.04
16:54
Прослушивание сокета - крайне интересная тема.
Можно либо через ВК, либо запускать в ЖДУЩЕМ РЕЖИМЕ внешнюю софтину.
Запуск внещних приложений из 1с (встроенный язык - вопрос)
Программист всегда исправляет последнюю ошибку.