diff --git a/src/Catalogs/узЗадачи/Ext/ObjectModule.bsl b/src/Catalogs/узЗадачи/Ext/ObjectModule.bsl index 8680b0032..8e4e0adec 100644 --- a/src/Catalogs/узЗадачи/Ext/ObjectModule.bsl +++ b/src/Catalogs/узЗадачи/Ext/ObjectModule.bsl @@ -36,39 +36,43 @@ Конецесли; Конецесли; - ОбновитьИсторию(); + МассивСобытийВИстории = ОбновитьИсторию(); + + ОтправитьУведомлениеНаПочту(МассивСобытийВИстории); КонецПроцедуры -Процедура ОбновитьИсторию() +Функция ОбновитьИсторию() + МассивСобытийВИстории = Новый Массив(); + ДатаСобытия = ТекущаяДата(); пАвтор = Пользователи.ТекущийПользователь(); Если ЭтоНовый() Тогда ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ДобавленаЗадача"); Событие = "Добавлена задача"; - ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие); - Возврат; + ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,МассивСобытийВИстории); + Возврат МассивСобытийВИстории; Конецесли; СтарыйИсполнитель = Ссылка.Исполнитель; Если Исполнитель <> СтарыйИсполнитель Тогда ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.НовыйИсполнитель"); Событие = "Изменен исполнитель с ["+СтарыйИсполнитель+"] на [" + Исполнитель+"]"; - ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие); + ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,МассивСобытийВИстории); Конецесли; СтарыйСтатус = Ссылка.Статус; Если Статус <> СтарыйСтатус Тогда ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзменениеСтатуса"); Событие = "Изменен статус с ["+СтарыйСтатус+"] на [" + Статус+"]"; - ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие); + ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,МассивСобытийВИстории); Конецесли; СтарыеКомментарии = Ссылка.Комментарии; Если Комментарии.Количество() <> СтарыеКомментарии.Количество() Тогда ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ДобавленКомментарий"); Событие = "Добавлен новый комментарий"; - ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие); + ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,МассивСобытийВИстории); Конецесли; СтароеНаименование = СокрЛП(Ссылка.Наименование); @@ -77,20 +81,110 @@ ИЛИ СокрЛП(ТекстСодержания) <> СтароеТекстСодержания Тогда ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзмененоОписаниеЗадачи"); Событие = "Изменено описание задачи"; - ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие); + ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,МассивСобытийВИстории); Конецесли; История.Сортировать("ДатаСобытия УБЫВ"); -КонецПроцедуры + + Возврат МассивСобытийВИстории; + + +КонецФункции -Процедура ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие) +Процедура ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,МассивСобытийВИстории) СтрокаИстория = История.Добавить(); СтрокаИстория.ДатаСобытия = ДатаСобытия; СтрокаИстория.Автор = пАвтор; СтрокаИстория.ВидСобытия = ВидСобытия; СтрокаИстория.Событие = Событие; + + МассивСобытийВИстории.Добавить(ВидСобытия); КонецПроцедуры +Процедура ОтправитьУведомлениеНаПочту(МассивСобытийВИстории) + ТекПользователь = Пользователи.ТекущийПользователь(); + Если ТекПользователь = Исполнитель Тогда + Возврат; + Конецесли; + + ВсегоСобытий = МассивСобытийВИстории.Количество(); + Если ВсегоСобытий = 0 Тогда + Возврат; + Конецесли; + + НеобходимоОтправитьУведомление = Ложь; + + ТемаПисьмаСобытие = ""; + + ВидыСобытий_ДобавленаЗадача = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ДобавленаЗадача"); + ВидыСобытий_НовыйИсполнитель = ПредопределенноеЗначение("Перечисление.узВидыСобытий.НовыйИсполнитель"); + ВидыСобытий_ДобавленКомментарий = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ДобавленКомментарий"); + ВидыСобытий_ИзмененоОписаниеЗадачи = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзмененоОписаниеЗадачи"); + + МассивСобытийКоторыеПодлежатОтправки = Новый Массив(); + МассивСобытийКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ДобавленаЗадача); + МассивСобытийКоторыеПодлежатОтправки.Добавить(ВидыСобытий_НовыйИсполнитель); + МассивСобытийКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ДобавленКомментарий); + //МассивСобытийКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ИзмененоОписаниеЗадачи); + + + Если ВсегоСобытий = 1 Тогда + ЭлМассивСобытийВИстории = МассивСобытийВИстории[0]; + Если ЭлМассивСобытийВИстории = ВидыСобытий_ДобавленаЗадача Тогда + НеобходимоОтправитьУведомление = Истина; + ТемаПисьмаСобытие = "Вам была назначена задача:"; + ИначеЕсли ЭлМассивСобытийВИстории = ВидыСобытий_НовыйИсполнитель Тогда + НеобходимоОтправитьУведомление = Истина; + ТемаПисьмаСобытие = "Вам была назначена задача:"; + ИначеЕсли ЭлМассивСобытийВИстории = ВидыСобытий_ДобавленКомментарий Тогда + НеобходимоОтправитьУведомление = Истина; + ТемаПисьмаСобытие = "Добален комментарий по задаче:"; + //ИначеЕсли ЭлМассивСобытийВИстории = ВидыСобытий_ИзмененоОписаниеЗадачи Тогда + // НеобходимоОтправитьУведомление = Истина; + // ТемаПисьмаСобытие = "Изменено описание по задаче:"; + Конецесли; + Иначе + Если МассивСобытийВИстории.Найти(ВидыСобытий_НовыйИсполнитель) <> Неопределено + ИЛИ МассивСобытийВИстории.Найти(ВидыСобытий_ДобавленаЗадача) <> Неопределено Тогда + НеобходимоОтправитьУведомление = Истина; + ТемаПисьмаСобытие = "Вам была назначена задача:"; + Иначе + Для каждого ЭлМассивСобытийВИстории из МассивСобытийВИстории цикл + Если МассивСобытийКоторыеПодлежатОтправки.Найти(ЭлМассивСобытийВИстории) <> Неопределено Тогда + НеобходимоОтправитьУведомление = Истина; + ТемаПисьмаСобытие = "Изменена задача:"; + Прервать; + Конецесли; + Конеццикла; + Конецесли; + Конецесли; + + + Если НеобходимоОтправитьУведомление Тогда + НаименованиеЗадачи = СокрЛП(Наименование); + НомерЗадачи = ""+Код; + ТемаПисьма = "[#"+НомерЗадачи+"] "+ТемаПисьмаСобытие + НаименованиеЗадачи; + ТекстПисьма = " + |Добрый день. + | + |"+ТемаПисьмаСобытие+" "+НаименованиеЗадачи+" + |Номер задачи: #"+НомерЗадачи+" + |"; + Если ЗначениеЗаполнено(ТекстСодержания) Тогда + ТекстПисьма = ТекстПисьма + " + | + |Описание задачи: + |"+ТекстСодержания+" + |"; + Конецесли; + ДопПараметры = Новый Структура(); + ДопПараметры.Вставить("ВажностьЗадачи",Важность); + ДопПараметры.Вставить("ТекстПисьма",ТекстПисьма); + ДопПараметры.Вставить("ТемаПисьма",ТемаПисьма); + ДопПараметры.Вставить("ПользовательКому",Исполнитель); + узОбщийМодульСервер.ОтправитьПисьмо(ДопПараметры); + КонецЕсли; +КонецПроцедуры Функция ЕстьПодчиненныеЗадачи(Задача,ЗадачаРебенок = Неопределено) Экспорт пЕстьПодчиненныеЗадачи = Ложь; diff --git a/src/CommonModules/узОбщийМодульСервер.xml b/src/CommonModules/узОбщийМодульСервер.xml new file mode 100644 index 000000000..e3302c5fb --- /dev/null +++ b/src/CommonModules/узОбщийМодульСервер.xml @@ -0,0 +1,23 @@ + + + + + узОбщийМодульСервер + + + ru + Уз общий модуль сервер + + + + false + false + true + true + false + true + false + DontUse + + + \ No newline at end of file diff --git a/src/CommonModules/узОбщийМодульСервер/Ext/Module.bsl b/src/CommonModules/узОбщийМодульСервер/Ext/Module.bsl new file mode 100644 index 000000000..3f54710a1 --- /dev/null +++ b/src/CommonModules/узОбщийМодульСервер/Ext/Module.bsl @@ -0,0 +1,75 @@ + +Процедура ОтправитьПисьмо(ДопПараметры) Экспорт + + ВажностьЗадачи = ДопПараметры.ВажностьЗадачи; + ТекстПисьма = ДопПараметры.ТекстПисьма; + ТемаПисьма = ДопПараметры.ТемаПисьма; + ПользовательКому = ДопПараметры.ПользовательКому; + + МассивПользователей = Новый Массив(); + МассивПользователей.Добавить(ПользовательКому); + МассивАдресовЭлектроннойПочты = ПолучитьМассивАдресовЭлектроннойПочты(МассивПользователей); + Если МассивАдресовЭлектроннойПочты.Количество() = 0 Тогда + Сообщить("Ошибка! при отправке письма не удалось получить адреса электронной почты для ["+ПользовательКому+"]"); + Возврат; + Конецесли; + + ТекПользователь = Пользователи.ТекущийПользователь(); + ДокОбъект = Документы.ЭлектронноеПисьмоИсходящее.СоздатьДокумент(); + ДокОбъект.Дата = ТекущаяДата(); + ДокОбъект.Автор = ТекПользователь; + + ДокОбъект.Важность = Перечисления.ВариантыВажностиВзаимодействия[""+ВажностьЗадачи]; + ДокОбъект.Кодировка = "UTF-8"; + ДокОбъект.Ответственный = ТекПользователь; + ДокОбъект.ОтправительПредставление = "1с: Управление задачами"; + ДокОбъект.СтатусПисьма = ПредопределенноеЗначение("Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Исходящее"); + ДокОбъект.Текст = ТекстПисьма; + ДокОбъект.Тема = ТемаПисьма; + ДокОбъект.ТипТекста = ПредопределенноеЗначение("Перечисление.ТипыТекстовЭлектронныхПисем.ПростойТекст"); + ДокОбъект.УчетнаяЗапись = ПредопределенноеЗначение("Справочник.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты"); + ДокОбъект.УдалятьПослеОтправки = Истина; + + //ДокОбъект.ДатаКогдаОтправить = ; + + Для каждого ЭлМассивАдресовЭлектроннойПочты из МассивАдресовЭлектроннойПочты цикл + СтрокаПолучателиПисьма = ДокОбъект.ПолучателиПисьма.Добавить(); + СтрокаПолучателиПисьма.Адрес = ЭлМассивАдресовЭлектроннойПочты; + СтрокаПолучателиПисьма.Представление = ""+ПользовательКому+" <"+ЭлМассивАдресовЭлектроннойПочты+">"; + СтрокаПолучателиПисьма.Контакт = ПользовательКому; + Конеццикла; + ДокОбъект.СформироватьПредставленияКонтактов(); + ДокОбъект.Записать(); +КонецПроцедуры + +Функция ПолучитьМассивАдресовЭлектроннойПочты(МассивПользователей) + МассивАдресовЭлектроннойПочты = Новый Массив(); + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ПользователиКонтактнаяИнформация.Ссылка, + | ПользователиКонтактнаяИнформация.Тип, + | ПользователиКонтактнаяИнформация.Вид, + | ПользователиКонтактнаяИнформация.АдресЭП + |ИЗ + | Справочник.Пользователи.КонтактнаяИнформация КАК ПользователиКонтактнаяИнформация + |ГДЕ + | ПользователиКонтактнаяИнформация.Ссылка В(&МассивПользователей) + | И ПользователиКонтактнаяИнформация.Тип = &Тип + | И ПользователиКонтактнаяИнформация.Вид = &Вид + |"; + + Запрос.УстановитьПараметр("Вид", ПредопределенноеЗначение("Справочник.ВидыКонтактнойИнформации.EmailПользователя")); + Запрос.УстановитьПараметр("МассивПользователей", МассивПользователей); + Запрос.УстановитьПараметр("Тип", ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты")); + + РезультатЗапроса = Запрос.Выполнить(); + + Выборка = РезультатЗапроса.Выбрать(); + + Пока Выборка.Следующий() Цикл + МассивАдресовЭлектроннойПочты.Добавить(Выборка.АдресЭП); + КонецЦикла; + Возврат МассивАдресовЭлектроннойПочты; +КонецФункции + diff --git a/src/Configuration.xml b/src/Configuration.xml index b61dbaa9a..0451b1a9a 100644 --- a/src/Configuration.xml +++ b/src/Configuration.xml @@ -770,6 +770,7 @@ ФайловыеФункцииСлужебныйКлиентСервер ФайловыеФункцииСлужебныйПовтИсп ФизическиеЛицаКлиентСервер + узОбщийМодульСервер ОбновлениеИнформационнойБазы ApplicationExtensionsManifest_1_0_0_1 ApplicationExtensionsPermissions_1_0_0_1 diff --git a/src/Reports/АнализЖурналаРегистрации/Templates/ПродолжительностьРаботыРегламентныхЗаданий/Ext/Template.xml b/src/Reports/АнализЖурналаРегистрации/Templates/ПродолжительностьРаботыРегламентныхЗаданий/Ext/Template.xml index 782973db7..984117bd8 100644 --- a/src/Reports/АнализЖурналаРегистрации/Templates/ПродолжительностьРаботыРегламентныхЗаданий/Ext/Template.xml +++ b/src/Reports/АнализЖурналаРегистрации/Templates/ПродолжительностьРаботыРегламентныхЗаданий/Ext/Template.xml @@ -2982,9 +2982,9 @@ Day 1 true - 2016-09-16T12:00:00 - 2016-09-25T12:59:59 - 2016-09-16T12:00:00 + 2016-09-16T15:00:00 + 2016-09-25T15:59:59 + 2016-09-16T15:00:00 Gradient 3 Day