Closed yakutyan closed 4 years ago
Нашел на ИТС методичку по разработке внешних компонент в ней есть описание метода ExternalEvent
Синтаксис:
bool ExternalEvent(WCHAR_T* wsSource, WCHAR_T* wsMessage, WCHAR_T* wsData)
Параметры:
<wsSource> Тип: WCHAR_T*. Строка с наименованием источника события.
<wsMessage> Тип: WCHAR_T*. Строка с наименованием события.
<wsData> Тип: WCHAR_T*. Строка c параметрами события.
Возвращаемое значение:
true – событие помещено в очередь
false – очередь переполнена, обработка событий недоступна или неизвестная ошибка
Описание:
Помещает событие в очередь, записывая источник события, наименование и параметры события. При обработке события эти данные передаются процедуре ОбработкаВнешнегоСобытия. При вызове метода ExternalEvent дальнейшая обработка события происходит следующим образом: событие записывается в очередь событий (если очередь полностью занята, событие теряется), затем при отсутствии системных событий из очереди берется первое событие (если очередь не пуста) и запускается процесс обработки внешних событий. Этот процесс повторяется для всех объектов внешних компонент. Таким образом, обработка внешних событий синхронизируется с обработкой системных событий.
Написано что если очередь полностью занята, то событие теряется, почему так происходит именно при звонке занятому абоненту? что делать? голову уже сломал
Решил данную проблему тем что увеличил количество времени сна перед отправкой в 1С, т.к. в очереди может быть только одно событие, тем самым 1С успевает обработать и очистить очередь событий и готова для получения следующего.
Добрый день коллеги! Использую данную компоненту для интеграции с АТС Астериск. Возникла проблема при получении некоторых событий, до 1С они тупо не доходят, например в 1С не приходит событие "DialEnd" со статусом BUSY когда звонишь занятому абоненту. При отладки компоненты было выявлено что при отправке таких событий ExternalEvent(wsName, msg, Data) возвращает false, с чем это может быть связано?