mirror of
https://github.com/BlizD/Tasks.git
synced 2025-03-17 20:58:01 +02:00
№286 Servicedesk: создание задачи из входящего письма, привязка писем к уже созданным задачам, создание контрагентов по адресу электронной почты,
This commit is contained in:
parent
486f184b1c
commit
325e0a23f6
@ -127,4 +127,54 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Конец СтандартныеПодсистемы.Взаимодействие
|
||||
// Конец СтандартныеПодсистемы.Взаимодействие
|
||||
|
||||
Функция ПолучитьНастройкиСобытий() Экспорт
|
||||
РезультатФункции = Новый Структура();
|
||||
|
||||
ВидыСобытий_ДобавленаЗадача = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ДобавленаЗадача");
|
||||
ВидыСобытий_НовыйИсполнитель = ПредопределенноеЗначение("Перечисление.узВидыСобытий.НовыйИсполнитель");
|
||||
ВидыСобытий_ДобавленКомментарий = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ДобавленКомментарий");
|
||||
ВидыСобытий_ИзмененКомментарий = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзмененКомментарий");
|
||||
ВидыСобытий_ИзмененоОписаниеЗадачи = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзмененоОписаниеЗадачи");
|
||||
ВидыСобытий_ИзменениеСтатуса = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзменениеСтатуса");
|
||||
ВидыСобытий_ВходящееПисьмо = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ВходящееПисьмо");
|
||||
|
||||
РезультатФункции.Вставить("ВидыСобытий_ДобавленаЗадача",ВидыСобытий_ДобавленаЗадача);
|
||||
РезультатФункции.Вставить("ВидыСобытий_НовыйИсполнитель",ВидыСобытий_НовыйИсполнитель);
|
||||
РезультатФункции.Вставить("ВидыСобытий_ДобавленКомментарий",ВидыСобытий_ДобавленКомментарий);
|
||||
РезультатФункции.Вставить("ВидыСобытий_ИзмененКомментарий",ВидыСобытий_ИзмененКомментарий);
|
||||
РезультатФункции.Вставить("ВидыСобытий_ИзмененоОписаниеЗадачи",ВидыСобытий_ИзмененоОписаниеЗадачи);
|
||||
РезультатФункции.Вставить("ВидыСобытий_ИзменениеСтатуса",ВидыСобытий_ИзменениеСтатуса);
|
||||
РезультатФункции.Вставить("ВидыСобытий_ВходящееПисьмо",ВидыСобытий_ВходящееПисьмо);
|
||||
|
||||
МассивСобытийДляНаблюдателяКоторыеПодлежатОтправки = Новый Массив();
|
||||
МассивСобытийДляНаблюдателяКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ИзменениеСтатуса);
|
||||
МассивСобытийДляНаблюдателяКоторыеПодлежатОтправки.Добавить(ВидыСобытий_НовыйИсполнитель);
|
||||
МассивСобытийДляНаблюдателяКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ДобавленКомментарий);
|
||||
МассивСобытийДляНаблюдателяКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ИзмененКомментарий);
|
||||
МассивСобытийДляНаблюдателяКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ВходящееПисьмо);
|
||||
|
||||
РезультатФункции.Вставить("МассивСобытийДляНаблюдателяКоторыеПодлежатОтправки",МассивСобытийДляНаблюдателяКоторыеПодлежатОтправки);
|
||||
|
||||
МассивСобытийКоторыеПодлежатОтправки = Новый Массив();
|
||||
МассивСобытийКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ДобавленаЗадача);
|
||||
МассивСобытийКоторыеПодлежатОтправки.Добавить(ВидыСобытий_НовыйИсполнитель);
|
||||
МассивСобытийКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ДобавленКомментарий);
|
||||
МассивСобытийКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ИзмененКомментарий);
|
||||
МассивСобытийКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ВходящееПисьмо);
|
||||
|
||||
РезультатФункции.Вставить("МассивСобытийКоторыеПодлежатОтправки",МассивСобытийКоторыеПодлежатОтправки);
|
||||
|
||||
МассивСобытийДляСтарогоИсполнителяКоторыеПодлежатОтправки = Новый Массив();
|
||||
МассивСобытийДляСтарогоИсполнителяКоторыеПодлежатОтправки.Добавить(ВидыСобытий_НовыйИсполнитель);
|
||||
РезультатФункции.Вставить("МассивСобытийДляСтарогоИсполнителяКоторыеПодлежатОтправки",МассивСобытийДляСтарогоИсполнителяКоторыеПодлежатОтправки);
|
||||
|
||||
МассивСобытийДляКонтрагентовКоторыеПодлежатОтправки = Новый Массив();
|
||||
МассивСобытийДляКонтрагентовКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ДобавленаЗадача);
|
||||
|
||||
РезультатФункции.Вставить("МассивСобытийДляКонтрагентовКоторыеПодлежатОтправки",МассивСобытийДляКонтрагентовКоторыеПодлежатОтправки);
|
||||
|
||||
|
||||
Возврат РезультатФункции;
|
||||
КонецФункции
|
||||
|
@ -395,57 +395,20 @@
|
||||
Конецесли;
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОтправитьУведомлениеНаПочту(СобытияВИстории)
|
||||
Процедура ОтправитьУведомлениеНаПочту(СобытияВИстории) Экспорт
|
||||
|
||||
НастройкиСобытий = ПолучитьНастройкиСобытий();
|
||||
НастройкиСобытий = Справочники.узЗадачи.ПолучитьНастройкиСобытий();
|
||||
|
||||
ОтправитьУведомлениеНаПочтуИсполнителю(НастройкиСобытий,СобытияВИстории);
|
||||
|
||||
ОтправитьУведомлениеНаПочтуСтаромуИсполнителю(НастройкиСобытий,СобытияВИстории);
|
||||
|
||||
ОтправитьУведомлениеНаПочтуНаблюдателям(НастройкиСобытий,СобытияВИстории)
|
||||
ОтправитьУведомлениеНаПочтуНаблюдателям(НастройкиСобытий,СобытияВИстории);
|
||||
|
||||
ОтправитьУведомлениеНаПочтуКонтрагентам(НастройкиСобытий,СобытияВИстории);
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
Функция ПолучитьНастройкиСобытий()
|
||||
РезультатФункции = Новый Структура();
|
||||
|
||||
ВидыСобытий_ДобавленаЗадача = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ДобавленаЗадача");
|
||||
ВидыСобытий_НовыйИсполнитель = ПредопределенноеЗначение("Перечисление.узВидыСобытий.НовыйИсполнитель");
|
||||
ВидыСобытий_ДобавленКомментарий = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ДобавленКомментарий");
|
||||
ВидыСобытий_ИзмененКомментарий = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзмененКомментарий");
|
||||
ВидыСобытий_ИзмененоОписаниеЗадачи = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзмененоОписаниеЗадачи");
|
||||
ВидыСобытий_ИзменениеСтатуса = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзменениеСтатуса");
|
||||
|
||||
РезультатФункции.Вставить("ВидыСобытий_ДобавленаЗадача",ВидыСобытий_ДобавленаЗадача);
|
||||
РезультатФункции.Вставить("ВидыСобытий_НовыйИсполнитель",ВидыСобытий_НовыйИсполнитель);
|
||||
РезультатФункции.Вставить("ВидыСобытий_ДобавленКомментарий",ВидыСобытий_ДобавленКомментарий);
|
||||
РезультатФункции.Вставить("ВидыСобытий_ИзмененКомментарий",ВидыСобытий_ИзмененКомментарий);
|
||||
РезультатФункции.Вставить("ВидыСобытий_ИзмененоОписаниеЗадачи",ВидыСобытий_ИзмененоОписаниеЗадачи);
|
||||
РезультатФункции.Вставить("ВидыСобытий_ИзменениеСтатуса",ВидыСобытий_ИзменениеСтатуса);
|
||||
|
||||
МассивСобытийДляНаблюдателяКоторыеПодлежатОтправки = Новый Массив();
|
||||
МассивСобытийДляНаблюдателяКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ИзменениеСтатуса);
|
||||
МассивСобытийДляНаблюдателяКоторыеПодлежатОтправки.Добавить(ВидыСобытий_НовыйИсполнитель);
|
||||
МассивСобытийДляНаблюдателяКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ДобавленКомментарий);
|
||||
МассивСобытийДляНаблюдателяКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ИзмененКомментарий);
|
||||
|
||||
РезультатФункции.Вставить("МассивСобытийДляНаблюдателяКоторыеПодлежатОтправки",МассивСобытийДляНаблюдателяКоторыеПодлежатОтправки);
|
||||
|
||||
МассивСобытийКоторыеПодлежатОтправки = Новый Массив();
|
||||
МассивСобытийКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ДобавленаЗадача);
|
||||
МассивСобытийКоторыеПодлежатОтправки.Добавить(ВидыСобытий_НовыйИсполнитель);
|
||||
МассивСобытийКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ДобавленКомментарий);
|
||||
МассивСобытийКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ИзмененКомментарий);
|
||||
|
||||
РезультатФункции.Вставить("МассивСобытийКоторыеПодлежатОтправки",МассивСобытийКоторыеПодлежатОтправки);
|
||||
|
||||
МассивСобытийДляСтарогоИсполнителяКоторыеПодлежатОтправки = Новый Массив();
|
||||
МассивСобытийДляСтарогоИсполнителяКоторыеПодлежатОтправки.Добавить(ВидыСобытий_НовыйИсполнитель);
|
||||
РезультатФункции.Вставить("МассивСобытийДляСтарогоИсполнителяКоторыеПодлежатОтправки",МассивСобытийДляСтарогоИсполнителяКоторыеПодлежатОтправки);
|
||||
|
||||
Возврат РезультатФункции;
|
||||
КонецФункции
|
||||
|
||||
Процедура ОтправитьУведомлениеНаПочтуИсполнителю(НастройкиСобытий,СобытияВИстории)
|
||||
Если НЕ ЗначениеЗаполнено(Исполнитель) Тогда
|
||||
@ -560,6 +523,44 @@
|
||||
ДопПараметры.Вставить("МассивПользователейКому",МассивНаблюдателей);
|
||||
узОбщийМодульСервер.ОтправитьПисьмо(ДопПараметры);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОтправитьУведомлениеНаПочтуКонтрагентам(НастройкиСобытий,СобытияВИстории)
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(Контрагент) ТОгда
|
||||
Возврат;
|
||||
Конецесли;
|
||||
|
||||
ТЗСобытияВИсторииДляУведомлений = СобытияВИстории.ТЗСобытияВИсторииДляУведомлений;
|
||||
ВсегоСобытий = ТЗСобытияВИсторииДляУведомлений.Количество();
|
||||
Если ВсегоСобытий = 0 Тогда
|
||||
Возврат;
|
||||
Конецесли;
|
||||
|
||||
ВТДопПараметры = Новый Структура();
|
||||
ВТДопПараметры.Вставить("ЭтоОтправкаКонтрагентам",Истина);
|
||||
ВТДопПараметры.Вставить("НастройкиСобытий",НастройкиСобытий);
|
||||
РезультатФункции = ПолучитьТемаПисьмаСобытие(ВТДопПараметры,СобытияВИстории);
|
||||
|
||||
Если НЕ РезультатФункции.НеобходимоОтправитьУведомление Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыПисьма = ПолучитьПараметрыПисьма(РезультатФункции);
|
||||
|
||||
МассивКонтрагентов = Новый Массив();
|
||||
МассивКонтрагентов.Добавить(Контрагент);
|
||||
|
||||
ТЗАдресаЭлектроннойПочты = узОбщийМодульСервер.ПолучитьТЗАдресаЭлектроннойПочтыПоМассивуКонтрагентов(
|
||||
МассивКонтрагентов);
|
||||
|
||||
ДопПараметры = Новый Структура();
|
||||
ДопПараметры.Вставить("ВажностьЗадачи",Важность);
|
||||
ДопПараметры.Вставить("ТекстПисьма",ПараметрыПисьма.ТекстПисьма);
|
||||
ДопПараметры.Вставить("ТемаПисьма",ПараметрыПисьма.ТемаПисьма);
|
||||
ДопПараметры.Вставить("ТЗАдресаЭлектроннойПочты",ТЗАдресаЭлектроннойПочты);
|
||||
узОбщийМодульСервер.ОтправитьПисьмо(ДопПараметры);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПолучитьМассивНаблюдателей()
|
||||
@ -628,6 +629,12 @@
|
||||
МассивСобытийКоторыеПодлежатОтправки = НастройкиСобытий.МассивСобытийДляСтарогоИсполнителяКоторыеПодлежатОтправки;
|
||||
КонецЕсли;
|
||||
|
||||
ЭтоОтправкаКонтрагентам = Ложь;
|
||||
Если ДопПараметры.Свойство("ЭтоОтправкаКонтрагентам") Тогда
|
||||
ЭтоОтправкаКонтрагентам = Истина;
|
||||
МассивСобытийКоторыеПодлежатОтправки = НастройкиСобытий.МассивСобытийДляКонтрагентовКоторыеПодлежатОтправки;
|
||||
КонецЕсли;
|
||||
|
||||
НеобходимоОтправитьУведомление = Ложь;
|
||||
ТемаПисьмаСобытие = "";
|
||||
МассивИзмененнийПоКомментариям = Новый Массив();
|
||||
@ -645,6 +652,10 @@
|
||||
НеобходимоОтправитьУведомление = Истина;
|
||||
ТемаПисьмаСобытие = узОбщийМодульСервер.ПолучитьТекстСообщения("Добавлена новая задача:",102);
|
||||
КонецЕсли;
|
||||
Если ЭтоОтправкаКонтрагентам Тогда
|
||||
НеобходимоОтправитьУведомление = Истина;
|
||||
ТемаПисьмаСобытие = "Ваша заявка зарегистрирована: ";
|
||||
КонецЕсли;
|
||||
ИначеЕсли ВидСобытия = НастройкиСобытий.ВидыСобытий_НовыйИсполнитель Тогда
|
||||
Если ЭтоОтправкаИсполнителю Тогда
|
||||
НеобходимоОтправитьУведомление = Истина;
|
||||
@ -676,6 +687,12 @@
|
||||
НеобходимоОтправитьУведомление = Истина;
|
||||
ТемаПисьмаСобытие = узОбщийМодульСервер.ПолучитьТекстСообщения("Изменен статус у задачи:",35);
|
||||
Конецесли;
|
||||
ИначеЕсли ВидСобытия = НастройкиСобытий.ВидыСобытий_ВходящееПисьмо Тогда
|
||||
Если ЭтоОтправкаИсполнителю
|
||||
ИЛИ ЭтоОтправкаНаблюдателям Тогда
|
||||
НеобходимоОтправитьУведомление = Истина;
|
||||
ТемаПисьмаСобытие = "Входящее письмо по задаче:";
|
||||
Конецесли;
|
||||
Конецесли;
|
||||
Иначе
|
||||
Если ТЗСобытияВИсторииДляУведомлений.Найти(НастройкиСобытий.ВидыСобытий_НовыйИсполнитель,"ВидСобытия") <> Неопределено Тогда
|
||||
|
@ -674,40 +674,7 @@
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
Функция ПолучитьМассивЗадачПоВыбранномуТексту(ТекстВыделенный)
|
||||
МассивЗадач = Новый Массив();
|
||||
|
||||
ЧислоУказанныхЗадач = СтрЧислоВхождений(ТекстВыделенный, "#");
|
||||
Если ЧислоУказанныхЗадач = 0 Тогда
|
||||
Возврат МассивЗадач;
|
||||
Конецесли;
|
||||
|
||||
Для НомерВхождения = 1 По ЧислоУказанныхЗадач Цикл
|
||||
|
||||
ПозРешетка = СтрНайти(ТекстВыделенный, "#",,,НомерВхождения);
|
||||
ТекстНомерЗадачи = "#";
|
||||
НомерЗадачи = "";
|
||||
|
||||
НомерСимвола = ПозРешетка + 1;
|
||||
Символ = Сред(ТекстВыделенный,НомерСимвола,1);
|
||||
Пока 48<= КодСимвола(Символ)
|
||||
И КодСимвола(Символ) <= 57 Цикл
|
||||
|
||||
НомерЗадачи = НомерЗадачи + Символ;
|
||||
НомерСимвола = НомерСимвола + 1;
|
||||
Символ = Сред(ТекстВыделенный,НомерСимвола,1);
|
||||
Конеццикла;
|
||||
|
||||
НомерЗадачи = Число(НомерЗадачи);
|
||||
|
||||
СсылкаНаЗадачу = Справочники.узЗадачи.НайтиПоКоду(НомерЗадачи);
|
||||
Если НЕ ЗначениеЗаполнено(СсылкаНаЗадачу) Тогда
|
||||
Продолжить;
|
||||
Конецесли;
|
||||
|
||||
МассивЗадач.Добавить(СсылкаНаЗадачу);
|
||||
КонецЦикла;
|
||||
|
||||
Возврат МассивЗадач;
|
||||
Возврат узОбщийМодульСервер.ПолучитьМассивЗадачИзТекста(ТекстВыделенный);
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
|
@ -1,3 +1,117 @@
|
||||
Процедура CreateTask() Экспорт
|
||||
ВызватьИсключение "Ошибка! Нет алгоритма CreateTask()";
|
||||
КонецПроцедуры
|
||||
Функция CreateTask(Наименование,
|
||||
СодержаниеСтрока = Неопределено, СодержаниеHTML = Неопределено,
|
||||
Статус = Неопределено, Родитель = Неопределено,
|
||||
Контрагент = Неопределено) Экспорт
|
||||
|
||||
Перем пЗадача;
|
||||
|
||||
СпрОбъект = Справочники.узЗадачи.СоздатьЭлемент();
|
||||
СпрОбъект.Наименование = Наименование;
|
||||
СпрОбъект.Статус = Статус;
|
||||
СпрОбъект.Родитель = Родитель;
|
||||
СпрОбъект.Контрагент = Контрагент;
|
||||
СпрОбъект.ОформлениеТекста = ПредопределенноеЗначение("Перечисление.узОформлениеТекста.ФорматированныйТекст");
|
||||
|
||||
ФорматированныйТекст = Новый ФорматированныйДокумент;
|
||||
|
||||
пТекстСодержания = СокрЛП(Наименование);
|
||||
пТекстHTML = СокрЛП(Наименование);
|
||||
|
||||
СодержаниеHTMLЗаполнено = СодержаниеHTML <> Неопределено;
|
||||
|
||||
Если СодержаниеHTMLЗаполнено Тогда
|
||||
|
||||
пТекстHTML = СодержаниеHTML;
|
||||
|
||||
пТекстСодержания = СтроковыеФункцииКлиентСервер.ИзвлечьТекстИзHTML(СодержаниеHTML);
|
||||
Конецесли;
|
||||
|
||||
Если НЕ СодержаниеHTMLЗаполнено
|
||||
И СодержаниеСтрока <> Неопределено Тогда
|
||||
пТекстСодержания = СодержаниеСтрока;
|
||||
пТекстHTML = СодержаниеСтрока;
|
||||
Конецесли;
|
||||
|
||||
пВложения = Новый Структура();
|
||||
ФорматированныйТекст.УстановитьHTML(пТекстHTML,пВложения);
|
||||
|
||||
СпрОбъект.ТекстСодержания = пТекстСодержания;
|
||||
СпрОбъект.Содержание = Новый ХранилищеЗначения(ФорматированныйТекст, Новый СжатиеДанных(9));
|
||||
|
||||
СпрОбъект.Записать();
|
||||
|
||||
пЗадача = СпрОбъект.Ссылка;
|
||||
Возврат пЗадача;
|
||||
КонецФункции
|
||||
|
||||
Функция GetTask(НомерЗадачи) Экспорт
|
||||
Перем пЗадача;
|
||||
|
||||
пЗадача = Справочники.узЗадачи.НайтиПоКоду(НомерЗадачи);
|
||||
|
||||
Возврат пЗадача;
|
||||
КонецФункции
|
||||
|
||||
Функция GetKontragent(АдресЭлектроннойПочты) Экспорт
|
||||
Перем пКонтрагент;
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||||
| узКонтрагентыКонтактнаяИнформация.Ссылка
|
||||
|ИЗ
|
||||
| Справочник.узКонтрагенты.КонтактнаяИнформация КАК узКонтрагентыКонтактнаяИнформация
|
||||
|ГДЕ
|
||||
| узКонтрагентыКонтактнаяИнформация.АдресЭП = &АдресЭлектроннойПочты
|
||||
| И узКонтрагентыКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
|
||||
| И узКонтрагентыКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.узEmailКонтрагенты)";
|
||||
|
||||
Запрос.УстановитьПараметр("АдресЭлектроннойПочты", АдресЭлектроннойПочты);
|
||||
|
||||
РезультатЗапроса = Запрос.Выполнить();
|
||||
Если РезультатЗапроса.Пустой() Тогда
|
||||
Возврат пКонтрагент;
|
||||
Конецесли;
|
||||
|
||||
Выборка = РезультатЗапроса.Выбрать();
|
||||
Выборка.Следующий();
|
||||
|
||||
пКонтрагент = Выборка.Ссылка;
|
||||
|
||||
Возврат пКонтрагент;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция CreateKontragent(Наименование = Неопределено, АдресЭлектроннойПочты) Экспорт
|
||||
Перем пКонтрагент;
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(Наименование)
|
||||
И НЕ ЗначениеЗаполнено(АдресЭлектроннойПочты) Тогда
|
||||
ВызватьИсключение "Ошибка! не удалось создать контрагента, "
|
||||
+ "не задано наименование и/или адрес электронной почты для контрагента";
|
||||
Конецесли;
|
||||
|
||||
пКонтрагент = GetKontragent(АдресЭлектроннойПочты);
|
||||
Если ЗначениеЗаполнено(пКонтрагент) Тогда
|
||||
Возврат пКонтрагент;
|
||||
Конецесли;
|
||||
|
||||
АдресЭлектроннойПочты = СокрЛП(АдресЭлектроннойПочты);
|
||||
|
||||
СпрОбъект = Справочники.узКонтрагенты.СоздатьЭлемент();
|
||||
СпрОбъект.Наименование = Наименование;
|
||||
|
||||
СтрокаКонтактнаяИнформация = СпрОбъект.КонтактнаяИнформация.Добавить();
|
||||
СтрокаКонтактнаяИнформация.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты");
|
||||
СтрокаКонтактнаяИнформация.Вид = ПредопределенноеЗначение("Справочник.ВидыКонтактнойИнформации.узEmailКонтрагенты");
|
||||
СтрокаКонтактнаяИнформация.АдресЭП = АдресЭлектроннойПочты;
|
||||
СтрокаКонтактнаяИнформация.Представление = АдресЭлектроннойПочты;
|
||||
|
||||
СпрОбъект.Записать();
|
||||
|
||||
пКонтрагент = СпрОбъект.Ссылка;
|
||||
|
||||
Возврат пКонтрагент;
|
||||
КонецФункции
|
||||
|
||||
|
||||
|
@ -865,14 +865,17 @@
|
||||
|
||||
// Заполним ответственного
|
||||
Письмо.Ответственный = ОтветственныйЗаОбработкуПисем;
|
||||
|
||||
//+ #286 Иванов А.Б. 2017-12-17
|
||||
узОбщийМодульСервер.ЗаполнитьЗадачуПоТемеПисьма(УчетнаяЗапись,Письмо);
|
||||
//- #286 Иванов А.Б. 2017-12-17
|
||||
|
||||
|
||||
// Запишем письмо
|
||||
Письмо.Записать();
|
||||
|
||||
//+ #286 Иванов А.Б. 2017-12-17
|
||||
узОбщийМодульСервер.ЗаполнитьПредметВПисьме_ЗадачаПоТемеПисьма(УчетнаяЗапись,Письмо);
|
||||
|
||||
Предмет = Письмо.Предмет;
|
||||
Письмо.Записать();
|
||||
//- #286 Иванов А.Б. 2017-12-17
|
||||
|
||||
// Установим папку письма и предмет.
|
||||
СтруктураДляЗаписи = ВзаимодействияКлиентСервер.СтруктураРеквизитовВзаимодействияДляЗаписи(
|
||||
Папка,?(ЗначениеЗаполнено(Предмет),Предмет,Письмо.Ссылка), , , Ложь);
|
||||
|
@ -5,25 +5,7 @@
|
||||
ТекстПисьма = ДопПараметры.ТекстПисьма;
|
||||
ТемаПисьма = ДопПараметры.ТемаПисьма;
|
||||
|
||||
Если ДопПараметры.Свойство("МассивПользователейКому") Тогда
|
||||
МассивПользователей = ДопПараметры.МассивПользователейКому;
|
||||
Иначе
|
||||
МассивПользователей = Новый Массив();
|
||||
МассивПользователей.Добавить(ДопПараметры.ПользовательКому);
|
||||
Конецесли;
|
||||
|
||||
ТЗАдресаЭлектроннойПочты = ПолучитьТЗАдресаЭлектроннойПочты(МассивПользователей);
|
||||
|
||||
Для каждого СтрокаТЗАдресаЭлектроннойПочты из ТЗАдресаЭлектроннойПочты цикл
|
||||
ПользовательКому = СтрокаТЗАдресаЭлектроннойПочты.Пользователь;
|
||||
Если НЕ ЗначениеЗаполнено(СтрокаТЗАдресаЭлектроннойПочты.АдресЭлектроннойПочты) Тогда
|
||||
|
||||
пТекстСообщения = узОбщийМодульСервер.ПолучитьТекстСообщения("Ошибка! при отправке письма не удалось получить адреса электронной почты для [%1]","2");
|
||||
пТекстСообщения = СтрШаблон(пТекстСообщения,ПользовательКому);
|
||||
Сообщить(пТекстСообщения);
|
||||
|
||||
Конецесли;
|
||||
Конеццикла;
|
||||
ТЗАдресаЭлектроннойПочты = ПолучитьТЗАдресаЭлектроннойПочты(ДопПараметры);
|
||||
|
||||
ТекПользователь = Пользователи.ТекущийПользователь();
|
||||
ДокОбъект = Документы.ЭлектронноеПисьмоИсходящее.СоздатьДокумент();
|
||||
@ -58,7 +40,39 @@
|
||||
ДокОбъект.Записать();
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПолучитьТЗАдресаЭлектроннойПочты(МассивПользователей)
|
||||
Функция ПолучитьТЗАдресаЭлектроннойПочты(ДопПараметры)
|
||||
Перем ТЗАдресаЭлектроннойПочты;
|
||||
|
||||
Если ДопПараметры.Свойство("ТЗАдресаЭлектроннойПочты") Тогда
|
||||
ТЗАдресаЭлектроннойПочты = ДопПараметры.ТЗАдресаЭлектроннойПочты;
|
||||
Возврат ТЗАдресаЭлектроннойПочты;
|
||||
Конецесли;
|
||||
|
||||
Если ДопПараметры.Свойство("МассивПользователейКому") Тогда
|
||||
МассивПользователей = ДопПараметры.МассивПользователейКому;
|
||||
Иначе
|
||||
МассивПользователей = Новый Массив();
|
||||
МассивПользователей.Добавить(ДопПараметры.ПользовательКому);
|
||||
Конецесли;
|
||||
|
||||
ТЗАдресаЭлектроннойПочты = ПолучитьТЗАдресаЭлектроннойПочтыПоМассивуПользователей(МассивПользователей);
|
||||
|
||||
Для каждого СтрокаТЗАдресаЭлектроннойПочты из ТЗАдресаЭлектроннойПочты цикл
|
||||
ПользовательКому = СтрокаТЗАдресаЭлектроннойПочты.Пользователь;
|
||||
Если НЕ ЗначениеЗаполнено(СтрокаТЗАдресаЭлектроннойПочты.АдресЭлектроннойПочты) Тогда
|
||||
|
||||
пТекстСообщения = узОбщийМодульСервер.ПолучитьТекстСообщения(
|
||||
"Ошибка! при отправке письма не удалось получить адреса электронной почты для [%1]","2");
|
||||
пТекстСообщения = СтрШаблон(пТекстСообщения,ПользовательКому);
|
||||
Сообщить(пТекстСообщения);
|
||||
|
||||
Конецесли;
|
||||
Конеццикла;
|
||||
|
||||
Возврат ТЗАдресаЭлектроннойПочты;
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьТЗАдресаЭлектроннойПочтыПоМассивуПользователей(МассивПользователей)
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ
|
||||
@ -82,6 +96,29 @@
|
||||
Возврат ТЗАдресаЭлектроннойПочты;
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьТЗАдресаЭлектроннойПочтыПоМассивуКонтрагентов(МассивКонтрагентов) Экспорт
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ
|
||||
| узКонтрагентыКонтактнаяИнформация.Ссылка КАК Пользователь,
|
||||
| узКонтрагентыКонтактнаяИнформация.АдресЭП КАК АдресЭлектроннойПочты
|
||||
|ИЗ
|
||||
| Справочник.узКонтрагенты.КонтактнаяИнформация КАК узКонтрагентыКонтактнаяИнформация
|
||||
|ГДЕ
|
||||
| узКонтрагентыКонтактнаяИнформация.Ссылка В(&МассивКонтрагентов)
|
||||
| И узКонтрагентыКонтактнаяИнформация.Тип = &Тип
|
||||
| И узКонтрагентыКонтактнаяИнформация.Вид = &Вид";
|
||||
|
||||
Запрос.УстановитьПараметр("Вид", ПредопределенноеЗначение("Справочник.ВидыКонтактнойИнформации.узEmailКонтрагенты"));
|
||||
Запрос.УстановитьПараметр("МассивКонтрагентов", МассивКонтрагентов);
|
||||
Запрос.УстановитьПараметр("Тип", ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты"));
|
||||
|
||||
РезультатЗапроса = Запрос.Выполнить();
|
||||
|
||||
ТЗАдресаЭлектроннойПочты = РезультатЗапроса.Выгрузить();
|
||||
Возврат ТЗАдресаЭлектроннойПочты;
|
||||
КонецФункции
|
||||
|
||||
Процедура узЗагрузкаИзмененийИзХранилища() Экспорт
|
||||
|
||||
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.узЗагрузкаИзмененийИзХранилища);
|
||||
@ -492,13 +529,13 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Процедура ЗаполнитьЗадачуПоТемеПисьма(УчетнаяЗапись,Письмо) Экспорт
|
||||
Процедура ЗаполнитьПредметВПисьме_ЗадачаПоТемеПисьма(УчетнаяЗапись,ПисьмоОбъект) Экспорт
|
||||
|
||||
Если НЕ УчетнаяЗапись.узСоздаватьЗадачуПриПолученииПисьма Тогда
|
||||
Возврат;
|
||||
Конецесли;
|
||||
|
||||
НастройкиИзПравилОбработки = ОпределитьНастройкиИзПравилОбработки(УчетнаяЗапись,Письмо);
|
||||
НастройкиИзПравилОбработки = ОпределитьНастройкиИзПравилОбработки(УчетнаяЗапись,ПисьмоОбъект.Ссылка);
|
||||
|
||||
Если НастройкиИзПравилОбработки.ЕстьДопНастройкиИзПравилОбработки
|
||||
И НастройкиИзПравилОбработки.узНеСоздаватьЗадачуПриПолученииПисьма Тогда
|
||||
@ -517,12 +554,47 @@
|
||||
узСозданнуюЗадачуПомещатьВВеткуЗадач = Неопределено;
|
||||
Конецесли;
|
||||
|
||||
ВызватьИсключение "Что еще надо сделать";
|
||||
//ПолучитьНомерЗадачиИзТемы
|
||||
//Получить Контрагента по Email
|
||||
//Получить текст задачи с учетом HTML
|
||||
//Если не нашли задачу по номеру, тогда создаем новую
|
||||
API.CreateTask();
|
||||
пЗадача = Неопределено;
|
||||
пКонтрагент = Неопределено;
|
||||
|
||||
ТипЗнчОтправительКонтакт = ТипЗнч(ПисьмоОбъект.ОтправительКонтакт);
|
||||
Если ЗначениеЗаполнено(ПисьмоОбъект.ОтправительКонтакт)
|
||||
И ТипЗнчОтправительКонтакт = Тип("СправочникСсылка.узКонтрагенты") Тогда
|
||||
пКонтрагент = ПисьмоОбъект.ОтправительКонтакт;
|
||||
Иначе
|
||||
пКонтрагент = API.GetKontragent(ПисьмоОбъект.ОтправительАдрес);
|
||||
ПисьмоОбъект.ОтправительКонтакт = пКонтрагент;
|
||||
Конецесли;
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(пКонтрагент) Тогда
|
||||
пКонтрагент = API.CreateKontragent(ПисьмоОбъект.ОтправительПредставление,ПисьмоОбъект.ОтправительАдрес);
|
||||
Конецесли;
|
||||
|
||||
МассивНомеровЗадач = ПолучитьМассивНомеровЗадачИзТекста(ПисьмоОбъект.Текст);
|
||||
Если МассивНомеровЗадач.Количество() > 0 Тогда
|
||||
НомемПервойЗадачи = МассивНомеровЗадач[0];
|
||||
пЗадача = API.GetTask(НомемПервойЗадачи);
|
||||
Конецесли;
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(пЗадача) Тогда
|
||||
пЗадача = API.CreateTask(ПисьмоОбъект.Тема, ПисьмоОбъект.Текст,ПисьмоОбъект.ТекстHTML,
|
||||
,узСозданнуюЗадачуПомещатьВВеткуЗадач,пКонтрагент);
|
||||
Конецесли;
|
||||
|
||||
ПисьмоОбъект.Предмет = пЗадача;
|
||||
|
||||
//МассивВзаимодействий = Новый Массив();
|
||||
//МассивВзаимодействий.Добавить(ПисьмоОбъект.Ссылка);
|
||||
//ВзаимодействияВызовСервера.УстановитьПредметДляМассиваВзаимодействий(МассивВзаимодействий,
|
||||
// пЗадача, Истина);
|
||||
|
||||
//ВызватьИсключение "Что еще надо сделать";
|
||||
////ПолучитьНомерЗадачиИзТемы
|
||||
////Получить Контрагента по Email
|
||||
////Получить текст задачи с учетом HTML
|
||||
////Если не нашли задачу по номеру, тогда создаем новую
|
||||
////Создавать письмо о регистрации задачи для Контрагента
|
||||
////API.CreateTask();
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ОпределитьНастройкиИзПравилОбработки(УчетнаяЗапись,Письмо)
|
||||
@ -618,3 +690,130 @@
|
||||
Возврат пУсловиеВыполнено;
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьМассивЗадачИзТекста(Текст) Экспорт
|
||||
|
||||
МассивНомеровЗадач = ПолучитьМассивНомеровЗадачИзТекста(Текст);
|
||||
|
||||
МассивЗадач = ПолучитьМассивЗадачПоНомерамЗадач(МассивНомеровЗадач);
|
||||
|
||||
Возврат МассивЗадач;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьМассивНомеровЗадачИзТекста(Текст)
|
||||
|
||||
МассивНомеровЗадач = Новый Массив();
|
||||
|
||||
ЧислоУказанныхЗадач = СтрЧислоВхождений(Текст, "#");
|
||||
Если ЧислоУказанныхЗадач = 0 Тогда
|
||||
Возврат МассивНомеровЗадач;
|
||||
Конецесли;
|
||||
|
||||
Для НомерВхождения = 1 По ЧислоУказанныхЗадач Цикл
|
||||
|
||||
ПозРешетка = СтрНайти(Текст, "#",,,НомерВхождения);
|
||||
ТекстНомерЗадачи = "#";
|
||||
НомерЗадачи = "";
|
||||
|
||||
НомерСимвола = ПозРешетка + 1;
|
||||
Символ = Сред(Текст,НомерСимвола,1);
|
||||
Пока 48<= КодСимвола(Символ)
|
||||
И КодСимвола(Символ) <= 57 Цикл
|
||||
|
||||
НомерЗадачи = НомерЗадачи + Символ;
|
||||
НомерСимвола = НомерСимвола + 1;
|
||||
Символ = Сред(Текст,НомерСимвола,1);
|
||||
Конеццикла;
|
||||
|
||||
НомерЗадачи = Число(НомерЗадачи);
|
||||
|
||||
Если МассивНомеровЗадач.Найти(НомерЗадачи) = Неопределено Тогда
|
||||
МассивНомеровЗадач.Добавить(НомерЗадачи);
|
||||
Конецесли;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат МассивНомеровЗадач;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьМассивЗадачПоНомерамЗадач(МассивНомеровЗадач) Экспорт
|
||||
|
||||
МассивЗадач = Новый Массив();
|
||||
|
||||
Для каждого НомерЗадачи Из МассивНомеровЗадач Цикл
|
||||
|
||||
СсылкаНаЗадачу = Справочники.узЗадачи.НайтиПоКоду(НомерЗадачи);
|
||||
Если НЕ ЗначениеЗаполнено(СсылкаНаЗадачу) Тогда
|
||||
Продолжить;
|
||||
Конецесли;
|
||||
|
||||
МассивЗадач.Добавить(СсылкаНаЗадачу);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат МассивЗадач;
|
||||
КонецФункции
|
||||
|
||||
Процедура ОтправитьУведомлениеПередЗаписьюВходящегоПисьма(Источник) Экспорт
|
||||
пЗадача = Источник.Предмет;
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(пЗадача) Тогда
|
||||
Возврат;
|
||||
Конецесли;
|
||||
|
||||
СобытияВИстории = Новый Структура();
|
||||
СобытияВИстории.Вставить("СтарыйИсполнитель",пЗадача.Исполнитель);
|
||||
СобытияВИстории.Вставить("СтарыйСтатус",пЗадача.Статус);
|
||||
|
||||
ТЗСобытияВИсторииДляУведомлений = Новый ТаблицаЗначений;
|
||||
ТЗСобытияВИсторииДляУведомлений.Колонки.Добавить("ВидСобытия",Новый ОписаниеТипов("ПеречислениеСсылка.узВидыСобытий"));
|
||||
ТЗСобытияВИсторииДляУведомлений.Колонки.Добавить("МассивИзмененнийПоКомментариям",Новый ОписаниеТипов("Массив"));
|
||||
|
||||
ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ВходящееПисьмо");
|
||||
|
||||
СтрокаТЗСобытияВИсторииДляУведомлений = ТЗСобытияВИсторииДляУведомлений.Добавить();
|
||||
СтрокаТЗСобытияВИсторииДляУведомлений.ВидСобытия = ВидСобытия;
|
||||
СтрокаТЗСобытияВИсторииДляУведомлений.МассивИзмененнийПоКомментариям = Новый Массив();
|
||||
|
||||
СобытияВИстории.Вставить("ТЗСобытияВИсторииДляУведомлений",ТЗСобытияВИсторииДляУведомлений);
|
||||
|
||||
ЗадачаОбъект = пЗадача.ПолучитьОбъект();
|
||||
ЗадачаОбъект.ОтправитьУведомлениеНаПочту(СобытияВИстории);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Процедура ЗаполнитьЗадачуПоТемеПисьма(УчетнаяЗапись,Письмо) Экспорт
|
||||
|
||||
Если НЕ УчетнаяЗапись.узСоздаватьЗадачуПриПолученииПисьма Тогда
|
||||
Возврат;
|
||||
Конецесли;
|
||||
|
||||
НастройкиИзПравилОбработки = ОпределитьНастройкиИзПравилОбработки(УчетнаяЗапись,Письмо);
|
||||
|
||||
Если НастройкиИзПравилОбработки.ЕстьДопНастройкиИзПравилОбработки
|
||||
И НастройкиИзПравилОбработки.узНеСоздаватьЗадачуПриПолученииПисьма Тогда
|
||||
Возврат;
|
||||
Конецесли;
|
||||
|
||||
узСозданнуюЗадачуПомещатьВВеткуЗадач = УчетнаяЗапись.узСозданнуюЗадачуПомещатьВВеткуЗадач;
|
||||
|
||||
Если НастройкиИзПравилОбработки.ЕстьДопНастройкиИзПравилОбработки Тогда
|
||||
Если ЗначениеЗаполнено(НастройкиИзПравилОбработки.узСозданнуюЗадачуПомещатьВВеткуЗадач) Тогда
|
||||
узСозданнуюЗадачуПомещатьВВеткуЗадач = НастройкиИзПравилОбработки.узСозданнуюЗадачуПомещатьВВеткуЗадач;
|
||||
Конецесли;
|
||||
Конецесли;
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(узСозданнуюЗадачуПомещатьВВеткуЗадач) Тогда
|
||||
узСозданнуюЗадачуПомещатьВВеткуЗадач = Неопределено;
|
||||
Конецесли;
|
||||
|
||||
ВызватьИсключение "Что еще надо сделать";
|
||||
//ПолучитьНомерЗадачиИзТемы
|
||||
//Получить Контрагента по Email
|
||||
//Получить текст задачи с учетом HTML
|
||||
//Если не нашли задачу по номеру, тогда создаем новую
|
||||
API.CreateTask();
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -1308,6 +1308,23 @@
|
||||
<Group>Horizontal</Group>
|
||||
<ExtendedTooltip name="ПредметыПанельНавигацииГруппаРасширеннаяПодсказка" id="809"/>
|
||||
<ChildItems>
|
||||
<LabelField name="ПредметыПанельНавигацииПредметКод" id="922">
|
||||
<DataPath>ПредметыПанельНавигации.Предмет.Code</DataPath>
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Номер задачи</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<Format>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>ЧГ=0</v8:content>
|
||||
</v8:item>
|
||||
</Format>
|
||||
<ContextMenu name="ПредметыПанельНавигацииПредметКодКонтекстноеМеню" id="923"/>
|
||||
<ExtendedTooltip name="ПредметыПанельНавигацииПредметКодРасширеннаяПодсказка" id="924"/>
|
||||
</LabelField>
|
||||
<LabelField name="Предмет" id="697">
|
||||
<DataPath>ПредметыПанельНавигации.Предмет</DataPath>
|
||||
<ReadOnly>true</ReadOnly>
|
||||
@ -1372,6 +1389,11 @@
|
||||
</LabelField>
|
||||
</ChildItems>
|
||||
</ColumnGroup>
|
||||
<LabelField name="ПредметыПанельНавигацииПредметКонтрагент" id="925">
|
||||
<DataPath>ПредметыПанельНавигации.Предмет.Контрагент</DataPath>
|
||||
<ContextMenu name="ПредметыПанельНавигацииПредметКонтрагентКонтекстноеМеню" id="926"/>
|
||||
<ExtendedTooltip name="ПредметыПанельНавигацииПредметКонтрагентРасширеннаяПодсказка" id="927"/>
|
||||
</LabelField>
|
||||
<LabelField name="ПредметыПанельНавигацииИсполнитель" id="917">
|
||||
<DataPath>ПредметыПанельНавигации.Исполнитель</DataPath>
|
||||
<ContextMenu name="ПредметыПанельНавигацииИсполнительКонтекстноеМеню" id="918"/>
|
||||
|
@ -28,7 +28,10 @@
|
||||
|
||||
ДополнительныеСвойства.Вставить("ПометкаУдаления",
|
||||
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка,"ПометкаУдаления"));
|
||||
|
||||
|
||||
//+ #286 Иванов А.Б. 2018-01-06
|
||||
узОбщийМодульСервер.ОтправитьУведомлениеПередЗаписьюВходящегоПисьма(ЭтотОбъект);
|
||||
//- #286 Иванов А.Б. 2018-01-06
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -246,6 +246,30 @@
|
||||
<Comment/>
|
||||
</Properties>
|
||||
</EnumValue>
|
||||
<EnumValue uuid="f0947c63-ebfe-446c-8f31-ad004e43eafc">
|
||||
<Properties>
|
||||
<Name>ВходящееПисьмо</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Входящее письмо</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
</Properties>
|
||||
</EnumValue>
|
||||
<EnumValue uuid="6517b4d4-db53-43f5-8a97-c905c362ec08">
|
||||
<Properties>
|
||||
<Name>ИсходящееПисьмо</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Исходящее письмо</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
</Properties>
|
||||
</EnumValue>
|
||||
</ChildObjects>
|
||||
</Enum>
|
||||
</MetaDataObject>
|
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user