diff --git a/src/cf/Catalogs/узЗадачи/Ext/ObjectModule.bsl b/src/cf/Catalogs/узЗадачи/Ext/ObjectModule.bsl index 97675676f..3e41d05ac 100644 --- a/src/cf/Catalogs/узЗадачи/Ext/ObjectModule.bsl +++ b/src/cf/Catalogs/узЗадачи/Ext/ObjectModule.bsl @@ -81,18 +81,27 @@ СобытияВИстории = Новый Структура(); СобытияВИстории.Вставить("СтарыйИсполнитель",СтарыйИсполнитель); - ТЗСобытияВИстории = Новый ТаблицаЗначений; - ТЗСобытияВИстории.Колонки.Добавить("ВидСобытия",Новый ОписаниеТипов("ПеречислениеСсылка.узВидыСобытий")); + ТЗСобытияВИсторииДляУведомлений = Новый ТаблицаЗначений; + ТЗСобытияВИсторииДляУведомлений.Колонки.Добавить("ВидСобытия",Новый ОписаниеТипов("ПеречислениеСсылка.узВидыСобытий")); ДатаСобытия = ТекущаяДата(); пАвтор = Пользователи.ТекущийПользователь(); + ПараметрыДляИстории = Новый Структура(); + ПараметрыДляИстории.Вставить("ДатаСобытия",ДатаСобытия); + ПараметрыДляИстории.Вставить("Автор",пАвтор); + ПараметрыДляИстории.Вставить("НовыйСтатус",Статус); + Если ЭтоНовый() Тогда ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ДобавленаЗадача"); Событие = "Добавлена задача"; - ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,ТЗСобытияВИстории); + + ПараметрыДляИстории.Вставить("ВидСобытия",ВидСобытия); + ПараметрыДляИстории.Вставить("Событие",Событие); + ДобавитьВИсторию(ПараметрыДляИстории,ТЗСобытияВИсторииДляУведомлений); + ДобавитьВИсториюСтатусов(); - СобытияВИстории.Вставить("ТЗСобытияВИстории",ТЗСобытияВИстории); + СобытияВИстории.Вставить("ТЗСобытияВИсторииДляУведомлений",ТЗСобытияВИсторииДляУведомлений); Возврат СобытияВИстории; Конецесли; @@ -104,7 +113,11 @@ Иначе Событие = "Изменен исполнитель с ["+СтарыйИсполнитель+"] на [" + Исполнитель+"]"; Конецесли; - ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,ТЗСобытияВИстории); + + ПараметрыДляИстории.Вставить("ВидСобытия",ВидСобытия); + ПараметрыДляИстории.Вставить("Событие",Событие); + ДобавитьВИсторию(ПараметрыДляИстории,ТЗСобытияВИсторииДляУведомлений); + ДобавитьВИсториюСтатусов(); Конецесли; @@ -114,20 +127,31 @@ ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзменениеСтатуса"); Событие = "Изменен статус с ["+СтарыйСтатус+"] на [" + Статус+"]"; - ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,ТЗСобытияВИстории); + + ПараметрыДляИстории.Вставить("ВидСобытия",ВидСобытия); + ПараметрыДляИстории.Вставить("Событие",Событие); + ДобавитьВИсторию(ПараметрыДляИстории,ТЗСобытияВИсторииДляУведомлений); Конецесли; СтарыеКомментарии = Ссылка.Комментарии; Если Комментарии.Количество() <> СтарыеКомментарии.Количество() Тогда ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ДобавленКомментарий"); Событие = "Добавлен новый комментарий"; - ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,ТЗСобытияВИстории); + + ПараметрыДляИстории.Вставить("ВидСобытия",ВидСобытия); + ПараметрыДляИстории.Вставить("Событие",Событие); + ДобавитьВИсторию(ПараметрыДляИстории,ТЗСобытияВИсторииДляУведомлений); + Иначе ИзменилисьЛиКомментарии = ПолучитьИзменилисьЛиКомментарии(); Если ИзменилисьЛиКомментарии Тогда ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзмененКомментарий"); Событие = "Изменили комментарий"; - ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,ТЗСобытияВИстории); + + ПараметрыДляИстории.Вставить("ВидСобытия",ВидСобытия); + ПараметрыДляИстории.Вставить("Событие",Событие); + ДобавитьВИсторию(ПараметрыДляИстории,ТЗСобытияВИсторииДляУведомлений); + Конецесли; Конецесли; @@ -138,12 +162,15 @@ ИЛИ СокрЛП(ТекстСодержания) <> СтароеТекстСодержания Тогда ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзмененоОписаниеЗадачи"); Событие = "Изменено описание задачи"; - ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,ТЗСобытияВИстории); + + ПараметрыДляИстории.Вставить("ВидСобытия",ВидСобытия); + ПараметрыДляИстории.Вставить("Событие",Событие); + ДобавитьВИсторию(ПараметрыДляИстории,ТЗСобытияВИсторииДляУведомлений); Конецесли; История.Сортировать("ДатаСобытия УБЫВ"); - СобытияВИстории.Вставить("ТЗСобытияВИстории",ТЗСобытияВИстории); + СобытияВИстории.Вставить("ТЗСобытияВИсторииДляУведомлений",ТЗСобытияВИсторииДляУведомлений); Возврат СобытияВИстории; @@ -196,16 +223,20 @@ СтрокаИсторияСтатусов.ДатаОкончания = ТекущаяДата(); КонецПроцедуры -Процедура ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,ТЗСобытияВИстории) +Процедура ДобавитьВИсторию(ПараметрыДляИстории,ТЗСобытияВИсторииДляУведомлений) СтрокаИстория = История.Добавить(); - СтрокаИстория.ДатаСобытия = ДатаСобытия; - СтрокаИстория.Автор = пАвтор; - СтрокаИстория.ВидСобытия = ВидСобытия; - СтрокаИстория.Событие = Событие; + СтрокаИстория.ДатаСобытия = ПараметрыДляИстории.ДатаСобытия; + СтрокаИстория.Автор = ПараметрыДляИстории.Автор; + СтрокаИстория.ВидСобытия = ПараметрыДляИстории.ВидСобытия; + СтрокаИстория.Событие = ПараметрыДляИстории.Событие; - СтрокаТЗСобытияВИстории = ТЗСобытияВИстории.Добавить(); - СтрокаТЗСобытияВИстории.ВидСобытия = ВидСобытия; + Если ПараметрыДляИстории.НовыйСтатус = ПредопределенноеЗначение("Справочник.узСтатусыЗадачи.Архив") Тогда + Возврат; + Конецесли; + + СтрокаТЗСобытияВИсторииДляУведомлений = ТЗСобытияВИсторииДляУведомлений.Добавить(); + СтрокаТЗСобытияВИсторииДляУведомлений.ВидСобытия = ПараметрыДляИстории.ВидСобытия; КонецПроцедуры Процедура ОтправитьУведомлениеНаПочту(СобытияВИстории) @@ -273,8 +304,8 @@ Если ТекПользователь = Исполнитель Тогда Возврат; Конецесли; - ТЗСобытияВИстории = СобытияВИстории.ТЗСобытияВИстории; - ВсегоСобытий = ТЗСобытияВИстории.Количество(); + ТЗСобытияВИсторииДляУведомлений = СобытияВИстории.ТЗСобытияВИсторииДляУведомлений; + ВсегоСобытий = ТЗСобытияВИсторииДляУведомлений.Количество(); Если ВсегоСобытий = 0 Тогда Возврат; Конецесли; @@ -317,8 +348,8 @@ Возврат; КонецЕсли; - ТЗСобытияВИстории = СобытияВИстории.ТЗСобытияВИстории; - ВсегоСобытий = ТЗСобытияВИстории.Количество(); + ТЗСобытияВИсторииДляУведомлений = СобытияВИстории.ТЗСобытияВИсторииДляУведомлений; + ВсегоСобытий = ТЗСобытияВИсторииДляУведомлений.Количество(); Если ВсегоСобытий = 0 Тогда Возврат; Конецесли; @@ -343,8 +374,8 @@ КонецПроцедуры Процедура ОтправитьУведомлениеНаПочтуНаблюдателям(НастройкиСобытий,СобытияВИстории) - ТЗСобытияВИстории = СобытияВИстории.ТЗСобытияВИстории; - ВсегоСобытий = ТЗСобытияВИстории.Количество(); + ТЗСобытияВИсторииДляУведомлений = СобытияВИстории.ТЗСобытияВИсторииДляУведомлений; + ВсегоСобытий = ТЗСобытияВИсторииДляУведомлений.Количество(); Если ВсегоСобытий = 0 Тогда Возврат; Конецесли; @@ -399,7 +430,7 @@ Функция ПолучитьТемаПисьмаСобытие(ДопПараметры,СобытияВИстории) - ТЗСобытияВИстории = СобытияВИстории.ТЗСобытияВИстории; + ТЗСобытияВИсторииДляУведомлений = СобытияВИстории.ТЗСобытияВИсторииДляУведомлений; РезультатФункции = Новый Структура(); НастройкиСобытий = ДопПараметры.НастройкиСобытий; @@ -425,10 +456,10 @@ НеобходимоОтправитьУведомление = Ложь; ТемаПисьмаСобытие = ""; - ВсегоСобытий = ТЗСобытияВИстории.Количество(); + ВсегоСобытий = ТЗСобытияВИсторииДляУведомлений.Количество(); Если ВсегоСобытий = 1 Тогда - СтрокаТЗСобытияВИстории = ТЗСобытияВИстории[0]; - ВидСобытия = СтрокаТЗСобытияВИстории.ВидСобытия; + СтрокаТЗСобытияВИсторииДляУведомлений = ТЗСобытияВИсторииДляУведомлений[0]; + ВидСобытия = СтрокаТЗСобытияВИсторииДляУведомлений.ВидСобытия; Если ВидСобытия = НастройкиСобытий.ВидыСобытий_ДобавленаЗадача Тогда Если ЭтоОтправкаИсполнителю Тогда НеобходимоОтправитьУведомление = Истина; @@ -463,7 +494,7 @@ Конецесли; Конецесли; Иначе - Если ТЗСобытияВИстории.Найти(НастройкиСобытий.ВидыСобытий_НовыйИсполнитель,"ВидСобытия") <> Неопределено Тогда + Если ТЗСобытияВИсторииДляУведомлений.Найти(НастройкиСобытий.ВидыСобытий_НовыйИсполнитель,"ВидСобытия") <> Неопределено Тогда Если ЭтоОтправкаИсполнителю Тогда НеобходимоОтправитьУведомление = Истина; ТемаПисьмаСобытие = "Вам была назначена задача: "; @@ -474,8 +505,8 @@ ТемаПисьмаСобытие = "Изменился исполнитель у задачи:"; Конецесли; Иначе - Для каждого СтрокаТЗСобытияВИстории из ТЗСобытияВИстории цикл - ВидСобытия = СтрокаТЗСобытияВИстории.ВидСобытия; + Для каждого СтрокаТЗСобытияВИсторииДляУведомлений из ТЗСобытияВИсторииДляУведомлений цикл + ВидСобытия = СтрокаТЗСобытияВИсторииДляУведомлений.ВидСобытия; Если МассивСобытийКоторыеПодлежатОтправки.Найти(ВидСобытия) <> Неопределено Тогда НеобходимоОтправитьУведомление = Истина; ТемаПисьмаСобытие = "Изменена задача: ";