Пред история: Есть CRM 1.4 (скорей всего), история умалчивает почему именно на ее базе была сделана переписка на УФ, почему была полностью снесена конфигурация поставщика и т.д. и т.п. Все есть как есть. Понадобилось интегрировать панель телефонии, фиксировать звонки определять их релевантность и запускать бизнес процесс по заявке. Путем долгих исследований просторов интернета, выбор пал конечно на данную компанию. Посмотрели, почитали, все отлично - функционал перекрывает практически все хотелки. Связались, получили под УФ последнюю версию панели. Стали пробовать запускать - не пошло, конфигурация работает на версии 8.2, по техническим причинам конфигурацию пока невозможно запустить на 8.3. Тех.поддержка оперативно выслала предыдущую версию панели (1.Х.21.10) работающую на плафторме 8.2 на УФ. Стали интегрировать, АТС прошили, первоначальную настройку прошли. Дальнейший затык выплыл при завершении настройки, где пошли запросы по контактной информации. В нашей конфигурации, вся контактная информация храниться по старинке - в регистре сведений Контактная информация, на сколько я понял данная версия панели, в любом случае (какая бы не была конфигурация) пытается строить запросы по табличным частям Контрагентов и Контактных лиц. В Связи с этим возникают вопрос: Есть ли версия под УФ, из которой можно выдернуть процедуры по составлению текстов запросов по получению контактной информации ? Может есть другое решение данного вопроса ?
Существует два варианта обработки "Панель телефонии для 1С", для двух "видов конфигураций":
Для режима "Обычное приложение" - это "УТ10.3-подобные" конфигурации 1С.
Для режима "Управляемое приложение" - конфигурации, реализованные на БСП (Библиотека стандартных подсистем).
Структурно, эти два вида конфигураций существенно различаются. Первые, хранят контактную информацию в регистре сведений "КонтактнаяИнформация". Вторые, хранят КИ в табачных частях справочников.
Каждая из обработок заточена под "свой вид" конфигурации. В вашем случае требуется некий "гибрид". Необходима доработка. Запросы следует "Подсмотреть" в обработке для "Обычного приложения", Интерфейс из обработки для "Управляемого приложения".
Нужна доработка. Пробуйте реализовать "гибрид" своими силами, если не выйдет - обращайтесь к нам, оценим проект.
Удалось запустить панель и связать ее с АТС. Места где возникали ошибки по сбору контактной информации были переписаны.
Но не все так гладко, возникло несколько вопросов. 1. При входящем звонке, открывается окно входящего звонка - но абонент не определен. Хотя в карточке контрагента номер забит - подскажите в каком модуле идет определение абонента по входящему звонку. 2. При тестировании было сделано несколько входящих звонков, так же исходящие и пропущенные. Но в истории они не отображаются - подскажите куда копнуть ? Где что не усмотрел ?
По историю звонков докопался до того, что нашел место вызываемое по событию, которое делает запрос через ВК, как я полагаю на сервер АТС, по истории звонков по заданной дате и абоненту. Но результат пустой.
SDK.Originate(Channel,,,,,, Variable,, "NoCDR",,"1",,"",, Результат) - возвращает истину В параметре результат
Абонент определяется в функции формы "Форма" "ПолучитьДанныеОбАбонентеНаКлиенте" / "ОбновитьВызов".
Для получения истории звонков АТС должна быть настроена по нашим инструкциям. История звонков возвращается асинхронно, внешними событиями "UserEvent" c типом userevent="FromCDR".
Портнов Алексей написал: Абонент определяется в функции формы "Форма" "ПолучитьДанныеОбАбонентеНаКлиенте" / "ОбновитьВызов".
В моей версии, в этой процедуре данные определяется из локального кэша
Код
&НаКлиенте
Функция ПолучитьДанныеОбАбонентеНаКлиенте(Знач НомерТелефона)
Номера = Новый Массив(1);
Номера[0] = УбратьИзНомераСпецСимволы(НомерТелефона);
врПараметры = Новый Структура;
врПараметры.Вставить("КодСтраны", ПерсональныеНастройки.КодСтраны);
врПараметры.Вставить("КодГорода", ПерсональныеНастройки.КодГорода);
врПараметры.Вставить("АдресТЗКодыГородов", АдресТЗКодыГородов);
// Проверим наличие данных в кэше
ДанныеКэша = КэшКонтактнойИнформации.НайтиСтроки(Новый Структура("НомерТелефона", НомерТелефона));
Если ДанныеКэша.Количество() > 0 Тогда
Результат = Новый Структура("Абонент,
|Партнер,
|Город,
|Область,
|Страна,
|НомерТелефона");
ЗаполнитьЗначенияСвойств(Результат, ДанныеКэша[0]);
Возврат Результат;
КонецЕсли;
Результат = ПолучитьДанныеОбАбонентеБезКонтекста(Номера, ТекстЗапросКИ2, врПараметры);
// Сохраним данные в кэше
Если ЗначениеЗаполнено(Результат.НомерТелефона) Тогда
СтрокаКэша = КэшКонтактнойИнформации.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаКэша, Результат);
СтрокаКэша.НомерТелефона = Номера[0];
Иначе
Результат.НомерТелефона = Номера[0];
КонецЕсли;
// Почистим кэш
Если КэшКонтактнойИнформации.Количество() > 128 Тогда
КэшКонтактнойИнформации.Удалить(0);
КонецЕсли;
Возврат Результат;
КонецФункции // ПолучитьДанныеОбАбонентеНаКлиенте()
Если там номера нет, то из нее вызывается процедура ПолучитьДанныеОбАбонентеБезКонтекста
Код
&НаСервереБезКонтекста
Функция ПолучитьДанныеОбАбонентеБезКонтекста(Знач Номера, Знач ТекстЗапроса, Знач Параметры) Экспорт
Результат = Новый Структура("Абонент,
|Партнер,
|Город,
|Область,
|Страна,
|НомерТелефона");
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Номера", Номера);
Запрос.УстановитьПараметр("КодСтраны", Параметры.КодСтраны);
Запрос.УстановитьПараметр("КодГорода", Параметры.КодГорода);
// Найдем информацию о номере по базе кодов городов
Запрос.Текст = Запрос.Текст + ";ВЫБРАТЬ
| ТабКодыГородов.ШаблонПоиска КАК ШаблонПоиска,
| ТабКодыГородов.КодСтраны,
| ТабКодыГородов.КодГорода,
| ТабКодыГородов.Город,
| ТабКодыГородов.Область,
| ТабКодыГородов.Страна
|ПОМЕСТИТЬ втКодыГородов
|ИЗ
| &ТабКодыГородов КАК ТабКодыГородов
|
|ИНДЕКСИРОВАТЬ ПО
| ШаблонПоиска
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ ПЕРВЫЕ 1
| КодыГородов.ШаблонПоиска,
| КодыГородов.Город,
| КодыГородов.Область,
| КодыГородов.Страна,
| КодыГородов.КодГорода,
| КодыГородов.КодСтраны
|ИЗ
| втКодыГородов КАК КодыГородов
|ГДЕ
| &НомерДляПоискаГорода ПОДОБНО КодыГородов.ШаблонПоиска
|
|УПОРЯДОЧИТЬ ПО
| КодыГородов.ШаблонПоиска УБЫВ";
НомерДляПоискаГорода = Номера[0];
Если Лев(НомерДляПоискаГорода, 1) = "8" И СтрДлина(НомерДляПоискаГорода) = 11 Тогда
НомерДляПоискаГорода = "7" + Прав(НомерДляПоискаГорода, СтрДлина(НомерДляПоискаГорода) - 1);
КонецЕсли;
Запрос.УстановитьПараметр("КороткийНомер", ?(СтрДлина(Номера[0])>6,Прав(Номера[0],9),""));
Запрос.УстановитьПараметр("ТабКодыГородов", ПолучитьИзВременногоХранилища(Параметры.АдресТЗКодыГородов));
Запрос.УстановитьПараметр("НомерДляПоискаГорода", НомерДляПоискаГорода);
РезультатЗапроса = Запрос.ВыполнитьПакет();
Если Не РезультатЗапроса[1].Пустой() Тогда
Выборка = РезультатЗапроса[1].Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(Результат, Выборка);
КонецЕсли;
КонецЕсли;
Если Не РезультатЗапроса[3].Пустой() Тогда
Выборка = РезультатЗапроса[3].Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(Результат, Выборка);
Страна = "";
Если Найти(Врег(Выборка.Страна), "УКРАИНА")>0 Тогда
Страна = "Украина";
ИначеЕсли Найти(Врег(Выборка.Страна), "РОСС")>0 Тогда
Страна = "Россия";
КонецЕсли;
Результат.Страна = Страна;
НомерТелефона = Выборка.КодСтраны + "(" + Выборка.КодГорода + ")"
+ Сред(Номера[0], СтрДлина(Выборка.КодСтраны + Выборка.КодГорода) + 1);
Результат.НомерТелефона = НомерТелефона;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции // ПолучитьДанныеОбАбоненте()
В данной процедуре тоже нет определения абонента по номеру.
в Процедура ОбновитьВызов - идет вызов ПолучитьДанныеОбАбонентеНаКлиенте ...
Изменено: Евгений Шанин - 02.02.2015 15:11:00(Спойлер заменил на КОД)
Портнов Алексей написал: Отключите использование хэш. Анализируйте текст запроса из "ПолучитьДанныеОбАбонентеБезКонтекста"
Спасибо, это помогло найти откуда "ноги" растут. Все было довольно глубже закопано. В частности в ПолучитьТекстЗапросаПоКонтактнойИнформации2. По определению абонента по номеру вопрос решен.
На счет получения истории звонков вопрос остался. Данные: IP АТС MyPBX U200 Прошивку поставили: MyPBX U100 / U200 v.15.19.12.31.bin SSH на 22 порту включили Запись разговоров пока не включали, USB винт только заказали MIKO CTI - включили и активировали
Больше ничего такого в инструкции нет. Звонки что входящие что исходящие работают прекрасно. История звонков - пустая ...