Добрый день!
На прошлой неделе, в пятницу, я звонил к вам в офис и разговаривал с Алексеем. Описывал ему проблему.
Суть в том, что я
- взял последнюю версию панели телефонии (далее - ПТ) для обычных форм
- запустил ее на конфигурации УТ 10.3 совершенно чистой
- платформа 1С последняя
- зарегистрировал, настроил ПТ.
- панель открывается, проходит 3-5 секунд и 1С рушится, сохраняя дамп.
ПТ настраивается для связи с freepbx.
Версии:
ПТ: 1.2.23.8
FreePBX: FreePBX 13.0.1beta3.45
1С: 8.3.6.2100
ОС: Windows 2008 R2
Asterisk: 11.18.0
Я проанализировал поведение 1С с помощью технологического журнала, wireshark и анализа кода.
Что выяснилось.
1. Крах 1С происходит при выполнении метода
(строка 5047).
Этот метод, как можно видеть из его кода, рекурсивный. Происходит бесконечная рекурсия, и на 30й или какой там раз 1С падает.
2. Бесконечная рекурсия возникает из-за того, что в таблице ТаблицаХинтов содержатся (на мой взгляд) лишние записи.
А именно, в качестве Канал указано пустое значение.
3. Таким образом, если в методе
(строка 6219)
добавить проверку на пустое значение, тогда ошибка уходит. Например, так:
вместо
А теперь, внимание, вопрос!
Что я делаю не так?
ПТ не должна так работать, иначе проблемы были бы не только у меня.
Я опасаюсь, что своими изменениями мог повлиять на работу ПТ и в дальнейшем я совершенно внезапно могу столкнуться с непонятными ошибками.
Подозреваю, что проблемы в настройке сервера телефонии (настройкой занимается отдельный специалист, настройку делал по инструкциям с вашего сайта).
Таблица хинтов с сервера телефонии приходит в следующем виде:
1-hints.hint.state: Unavailable
1-hints.hint.extension: *27*1001
1-hints.hint.application:
2-hints.hint.state: Unavailable
2-hints.hint.extension: *27*1003
2-hints.hint.application:
3-hints.hint.state: Unavailable
3-hints.hint.extension: *27*1002
3-hints.hint.application:
4-hints.hint.state: Unavailable
4-hints.hint.extension: *27*1005
4-hints.hint.application:
5-hints.hint.state: Unavailable
5-hints.hint.extension: *27*1004
5-hints.hint.application:
6-hints.hint.state: Unavailable
6-hints.hint.extension: *27*1007
6-hints.hint.application:
7-hints.hint.state: Unavailable
7-hints.hint.extension: 1014
7-hints.hint.application: SIP/1014,CustomPresence:1014
Спасибо!
На прошлой неделе, в пятницу, я звонил к вам в офис и разговаривал с Алексеем. Описывал ему проблему.
Суть в том, что я
- взял последнюю версию панели телефонии (далее - ПТ) для обычных форм
- запустил ее на конфигурации УТ 10.3 совершенно чистой
- платформа 1С последняя
- зарегистрировал, настроил ПТ.
- панель открывается, проходит 3-5 секунд и 1С рушится, сохраняя дамп.
ПТ настраивается для связи с freepbx.
Версии:
ПТ: 1.2.23.8
FreePBX: FreePBX 13.0.1beta3.45
1С: 8.3.6.2100
ОС: Windows 2008 R2
Asterisk: 11.18.0
Я проанализировал поведение 1С с помощью технологического журнала, wireshark и анализа кода.
Что выяснилось.
1. Крах 1С происходит при выполнении метода
| Код |
|---|
Функция ЭтоНомерТекущегоПользователя(Знач СтрокаЗвонка,Знач СписокНомеровПользователяДляОбработки) Экспорт |
Этот метод, как можно видеть из его кода, рекурсивный. Происходит бесконечная рекурсия, и на 30й или какой там раз 1С падает.
2. Бесконечная рекурсия возникает из-за того, что в таблице ТаблицаХинтов содержатся (на мой взгляд) лишние записи.
А именно, в качестве Канал указано пустое значение.
3. Таким образом, если в методе
| Код |
|---|
Функция ПолучитьЗначениеХинта(hint, Знач НомерТелефона) |
добавить проверку на пустое значение, тогда ошибка уходит. Например, так:
| Код |
|---|
если ЗначениеЗаполнено(hint) тогда Если Найти(hint, "&")<=0 Тогда Возврат Истина; КонецЕсли; КонецЕсли; |
| Код |
|---|
Если Найти(hint, "&")<=0 Тогда Возврат Истина; КонецЕсли; |
А теперь, внимание, вопрос!
Что я делаю не так?
ПТ не должна так работать, иначе проблемы были бы не только у меня.
Я опасаюсь, что своими изменениями мог повлиять на работу ПТ и в дальнейшем я совершенно внезапно могу столкнуться с непонятными ошибками.
Подозреваю, что проблемы в настройке сервера телефонии (настройкой занимается отдельный специалист, настройку делал по инструкциям с вашего сайта).
Таблица хинтов с сервера телефонии приходит в следующем виде:
1-hints.hint.state: Unavailable
1-hints.hint.extension: *27*1001
1-hints.hint.application:
2-hints.hint.state: Unavailable
2-hints.hint.extension: *27*1003
2-hints.hint.application:
3-hints.hint.state: Unavailable
3-hints.hint.extension: *27*1002
3-hints.hint.application:
4-hints.hint.state: Unavailable
4-hints.hint.extension: *27*1005
4-hints.hint.application:
5-hints.hint.state: Unavailable
5-hints.hint.extension: *27*1004
5-hints.hint.application:
6-hints.hint.state: Unavailable
6-hints.hint.extension: *27*1007
6-hints.hint.application:
7-hints.hint.state: Unavailable
7-hints.hint.extension: 1014
7-hints.hint.application: SIP/1014,CustomPresence:1014
Спасибо!
Изменено: - 31.08.2015 17:28:13