-
Notifications
You must be signed in to change notification settings - Fork 35
/
УправлениеТелефониейСервер.txt
149 lines (128 loc) · 10.3 KB
/
УправлениеТелефониейСервер.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
Функция ПроверитьВозможностьРаботыСТелефонией() Экспорт
Если ПараметрыСеанса.ТекущийПользователь.ИспользоватьТелефонию тогда
Возврат Истина;
Иначе
Возврат ЛОжь;
КонецЕсли;
КонецФункции
Функция ПолучитьАдресВнешнейКомпоненты(Адрес) Экспорт
Макет=ПолучитьОбщийМакет("InnovaIT_Asterisk_Native");
Возврат ПоместитьВоВременноеХранилище(Макет,Адрес);
КонецФункции
Функция ВернутьПараметрыПользователяТелефонии() Экспорт
СтруктураПараметров = Новый Структура ("АдресСервера, ПортСервера, Логин, Пароль, ВнутреннийНомер, КлючПродукта",
ПараметрыСеанса.ТекущийПользователь.АдресСервераТелефонии,
ПараметрыСеанса.ТекущийПользователь.ПортСервераТелефонии,
ПараметрыСеанса.ТекущийПользователь.ЛогинСервераТелефонии,
ПараметрыСеанса.ТекущийПользователь.ПарольСервераТелефонии,
ПараметрыСеанса.ТекущийПользователь.ВнутреннийНомерТелефонии,
ПараметрыСеанса.ТекущийПользователь.КлючПродукта);
Возврат СтруктураПараметров;
КонецФункции
Процедура ЗаписатьСобытиеТелефонии(ИД, СвязанноеИД, ВходящийТранк, ВходящийНомер, СсылкаНаЗапись,ВнутреннийАбонент, ТипСобытия) Экспорт
ЗаписьСобытия = РегистрыСведений.МониторСобытийТелефонии.СоздатьМенеджерЗаписи();
ЗаписьСобытия.ИД = ИД;
ЗаписьСобытия.СвязанноеИД = СвязанноеИД;
ЗаписьСобытия.ВходящийТранк = ВходящийТранк;
ЗаписьСобытия.ВходящийНомер = ВходящийНомер;
ЗаписьСобытия.СсылкаНаЗапись = СсылкаНаЗапись;
ЗаписьСобытия.ВнутреннийАбонент = ВнутреннийАбонент;
ЗаписьСобытия.ДатаВремя = ТекущаяДатаСеанса();
Если ТипСобытия = 0 тогда
ЗаписьСобытия.ТипСобытия = Перечисления.ТипСобытияТелефонии.НовыйЗвонок;
ИначеЕсли ТипСобытия = 1 тогда
ЗаписьСобытия.ТипСобытия = Перечисления.ТипСобытияТелефонии.ПоднялиТрубку;
ИначеЕсли ТипСобытия = 2 тогда
ЗаписьСобытия.ТипСобытия = Перечисления.ТипСобытияТелефонии.ПоложилиТрубку;
КонецЕсли;
ЗаписьСобытия.Записать(Истина);
КонецПроцедуры
Функция ВернутьДанныеПоКлиенту(НомерТелефона) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| ФизическиеЛицаКонтактнаяИнформация.Ссылка
|ПОМЕСТИТЬ ВтСсылка
|ИЗ
| Справочник.ФизическиеЛица.КонтактнаяИнформация КАК ФизическиеЛицаКонтактнаяИнформация
|ГДЕ
| ФизическиеЛицаКонтактнаяИнформация.НомерТелефона = &НомерТелефона
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ФизическиеЛицаКонтактнаяИнформация.Тип,
| ФизическиеЛицаКонтактнаяИнформация.Вид,
| ФизическиеЛицаКонтактнаяИнформация.Представление,
| ФизическиеЛицаКонтактнаяИнформация.НомерТелефона,
| ФизическиеЛицаКонтактнаяИнформация.Ссылка КАК ФИО
|ИЗ
| Справочник.ФизическиеЛица.КонтактнаяИнформация КАК ФизическиеЛицаКонтактнаяИнформация
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтСсылка КАК ВтСсылка
| ПО ФизическиеЛицаКонтактнаяИнформация.Ссылка = ВтСсылка.Ссылка";
Запрос.УстановитьПараметр("НомерТелефона", "7" + НомерТелефона);
Результат = Запрос.Выполнить();
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("ФИО","");
СтруктураПараметров.Вставить("НомерТелефона", "");
СтруктураПараметров.Вставить("Адрес", "");
СтруктураПараметров.Вставить("ДокументЗаказ", "");
Если НЕ Результат.Пустой() тогда
Выборка = Результат.Выбрать();
//
Пока Выборка.Следующий() Цикл
СтруктураПараметров.Вставить("ФИО",Выборка.ФИО);
Если Выборка.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон тогда
СтруктураПараметров.Вставить("НомерТелефона", Прав(Выборка.НомерТелефона,10));
ИначеЕсли Выборка.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес тогда
СтруктураПараметров.Вставить("Адрес", Выборка.Представление);
КонецЕсли;;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| ЗаказПокупателя.Ссылка
|ИЗ
| Документ.ЗаказПокупателя КАК ЗаказПокупателя
|ГДЕ
| ЗаказПокупателя.Дата МЕЖДУ &ДатаНачало И &ДатаКонец
| И ЗаказПокупателя.СтатусЗаказа <> ЗНАЧЕНИЕ(Справочник.СтатусыЗаказов.Доставлен)
| И ЗаказПокупателя.Клиент = &Клиент
|
|УПОРЯДОЧИТЬ ПО
| ЗаказПокупателя.Дата УБЫВ";
Запрос.УстановитьПараметр("ДатаНачало", НачалоДня(ТекущаяДатаСеанса()));
Запрос.УстановитьПараметр("ДатаКонец", КонецДня(ТекущаяДатаСеанса()));
Запрос.УстановитьПараметр("Клиент", Выборка.ФИО);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() тогда
Выборка = Результат.Выбрать();
Выборка.Следующий();
СтруктураПараметров.Вставить("ДокументЗаказ", Выборка.Ссылка);
КонецЕсли;
Иначе
СпрФизЛица = Справочники.ФизическиеЛица.СоздатьЭлемент();
СпрФизЛица.Наименование = "Новый клиент " + НомерТелефона;
СтрокаТелефон = СпрФизЛица.КонтактнаяИнформация.Добавить();
СтрокаТелефон.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонФизическогоЛица;
СтрокаТелефон.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон;
СтрокаТелефон.Представление = "+7 ("+Лев(НомерТелефона,3)+ ") "+Прав(НомерТелефона,7);
СтрокаТелефон.НомерТелефона = "7" + НомерТелефона;
СтрокаТелефон.НомерТелефонаБезКодов = Прав(НомерТелефона,7);
Попытка
СпрФизЛица.Записать();
Исключение
КонецПопытки;
СтруктураПараметров.Вставить("ФИО", СпрФизЛица.Ссылка);
СтруктураПараметров.Вставить("НомерТелефона", НомерТелефона);
СтруктураПараметров.Вставить("Адрес", "");
СтруктураПараметров.Вставить("ДокументЗаказ", Документы.ЗаказПокупателя.ПустаяСсылка());
КонецЕсли;
Возврат СтруктураПараметров;
КонецФункции
Функция ВернутьДестизначныйНомер(НомерТелефона) Экспорт
Если СтрДлина(НомерТелефона) >= 10 тогда
Возврат Прав(НомерТелефона,10);
Иначе
КолВоНулей = 10 - СтрДлина(НомерТелефона);
Возврат Лев("0000000000",КолВоНулей)+НомерТелефона;
КонецЕсли;
КонецФункции