Вы не авторизованы

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

RSS
Панель 1.11.18.11, неточность в коде.
 
Панели 1.11.18.11 (УТ), иногда слетало отображение звонка, то есть звонок пошел, а панель ничего не отображала. А именно: модуль обработки, процедура "Процедура onDial(Знач XMLУзел)". Было:

Если XMLУзел.ЗначениеАтрибута("subevent" [IMG] = "End"
И НЕ XMLУзел.ЗначениеАтрибута("dialstatus" [IMG] = "ANSWER" Тогда


Я исключил еще один ответ, и теперь, все отрабатывает хорошо.

Если XMLУзел.ЗначениеАтрибута("subevent"[IMG]= "End"
И НЕ XMLУзел.ЗначениеАтрибута("dialstatus"[IMG] = "ANSWER"

И НЕ XMLУзел.ЗначениеАтрибута("dialstatus"[IMG] = "CHANUNAVAIL" Тогда
 
Спасибо, добавим в свой трекер на анализ.
 
Панель та же, 1.11.18.11 (УТ). Я вывел кнопку запуска обработки, считаю что пользователь программы, как существо везде-проникающее, может закрыть панель, по крестику. Да и, может мне нужна панель только иногда, перезапускать базу и надеяться на автозапуск - не выход. И тут еще одна неточность, панель можно запустить 2, 3, 5 раз. Поэтому предлагаю дополнить саму Форму панели процедурой реакции на стандартное событие:

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Отказ = Обработки.МИКО_ПанельТелефонииAsterisk.ПолучитьФорму("ФормаПанели" ;) .Открыта();
КонецПроцедуры
 
Это не вполне корректно.
Я думаю проверять определена ли глобальная переменная
Miko_Ajam

Примерно так:
Код
 Если Miko_Ajam = неопределено Тогда 
   Miko_Ajam = ОбработкаОбъект;           
Иначе
      отказ = истина;
      // или 
   // ЭтаФорма.закрыть()
КонецЕсли;
Если ОбработкаОбъект.ФормаТелефон = Неопределено Тогда 
    Miko_Ajam.ПодключитьСофтФон();  
       // Иначе возможны проблемы. 
Конецесли;
Протестить пока времени нет.
 
     Готов поспорить. Если я данную глобальную переменную определю при запуске системы и автоматически откроется форма панели, то я из-за своих внутренних переживаний могу закрыть форму панели, согласитесь наша глобальная переменная и дальше останется определенной, будет с типом ОбработкаОбъект (кажись объект, если не ошибаюсь). И когда используем вашу проверку, то форма панели больше и не откроется никогда, можно конечно написать обработчик чтобы "убивал" переменную при закрытии формы панели, но это вопрос вообще не в эту тему.
     Кстати задублирование  открытой формы панельки, я сразу как то увидел, когда запускал панель как внешнюю обработку, взял да и запустил её два раза)) и две вместе существовали, но отрабатывала одна (это понятно). Снова таки ваш алгоритм не зайдет, если мы панельку захотим НЕ интегрировать, когда никакой глобальной переменной и быть не может.
     Не подумайте пожалуйста, что я ищу дыры и тыкаю, и я могу ошибаться. Это чисто из благих намерений, я понимаю что такое разрабатывать продукт и его тестить, нужно учесть все возможные и не возможные манипуляции. А так как с вашим продуктом я тоже работаю, только в своих целях, мой опыт может служить вам в помощь.
 
Вот рабочий пример. Протестировал на дистрибутиве "Панель телефони для Asterisk УТ 10.3"
Код
// Обработка повторного открытия панели телефонии
// 
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
   Если Miko_Ajam = неопределено Тогда 
         Miko_Ajam = ОбработкаОбъект;
   ИначеЕсли НЕ Miko_Ajam = ОбработкаОбъект Тогда
      // это повторное открытие
      Отказ = истина;        
   КонецЕсли;
   Miko_Ajam.ПодключитьСофтФон();   
КонецПроцедуры
 
Работает четко.
Критику мы приветствуем.

Вопрос с повторным открытием у нас давно запланировано решить )) просто приоритеты другие выставили.
Думаю в следующем релизе внесем эту корректировку.
Читают тему (гостей: 1)