mirror of
https://github.com/BlizD/Tasks.git
synced 2025-03-19 21:07:53 +02:00
#4, Управление задачами, Уведомления пользователям
This commit is contained in:
parent
37cfb1ada0
commit
62b047e694
@ -36,39 +36,43 @@
|
||||
Конецесли;
|
||||
Конецесли;
|
||||
|
||||
ОбновитьИсторию();
|
||||
МассивСобытийВИстории = ОбновитьИсторию();
|
||||
|
||||
ОтправитьУведомлениеНаПочту(МассивСобытийВИстории);
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбновитьИсторию()
|
||||
Функция ОбновитьИсторию()
|
||||
МассивСобытийВИстории = Новый Массив();
|
||||
|
||||
ДатаСобытия = ТекущаяДата();
|
||||
пАвтор = Пользователи.ТекущийПользователь();
|
||||
|
||||
Если ЭтоНовый() Тогда
|
||||
ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ДобавленаЗадача");
|
||||
Событие = "Добавлена задача";
|
||||
ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие);
|
||||
Возврат;
|
||||
ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,МассивСобытийВИстории);
|
||||
Возврат МассивСобытийВИстории;
|
||||
Конецесли;
|
||||
|
||||
СтарыйИсполнитель = Ссылка.Исполнитель;
|
||||
Если Исполнитель <> СтарыйИсполнитель Тогда
|
||||
ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.НовыйИсполнитель");
|
||||
Событие = "Изменен исполнитель с ["+СтарыйИсполнитель+"] на [" + Исполнитель+"]";
|
||||
ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие);
|
||||
ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,МассивСобытийВИстории);
|
||||
Конецесли;
|
||||
|
||||
СтарыйСтатус = Ссылка.Статус;
|
||||
Если Статус <> СтарыйСтатус Тогда
|
||||
ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзменениеСтатуса");
|
||||
Событие = "Изменен статус с ["+СтарыйСтатус+"] на [" + Статус+"]";
|
||||
ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие);
|
||||
ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,МассивСобытийВИстории);
|
||||
Конецесли;
|
||||
|
||||
СтарыеКомментарии = Ссылка.Комментарии;
|
||||
Если Комментарии.Количество() <> СтарыеКомментарии.Количество() Тогда
|
||||
ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ДобавленКомментарий");
|
||||
Событие = "Добавлен новый комментарий";
|
||||
ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие);
|
||||
ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,МассивСобытийВИстории);
|
||||
Конецесли;
|
||||
|
||||
СтароеНаименование = СокрЛП(Ссылка.Наименование);
|
||||
@ -77,20 +81,110 @@
|
||||
ИЛИ СокрЛП(ТекстСодержания) <> СтароеТекстСодержания Тогда
|
||||
ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзмененоОписаниеЗадачи");
|
||||
Событие = "Изменено описание задачи";
|
||||
ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие);
|
||||
ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,МассивСобытийВИстории);
|
||||
Конецесли;
|
||||
|
||||
История.Сортировать("ДатаСобытия УБЫВ");
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие)
|
||||
Возврат МассивСобытийВИстории;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ДобавитьВИсторию(ДатаСобытия,пАвтор,ВидСобытия,Событие,МассивСобытийВИстории)
|
||||
СтрокаИстория = История.Добавить();
|
||||
СтрокаИстория.ДатаСобытия = ДатаСобытия;
|
||||
СтрокаИстория.Автор = пАвтор;
|
||||
СтрокаИстория.ВидСобытия = ВидСобытия;
|
||||
СтрокаИстория.Событие = Событие;
|
||||
|
||||
МассивСобытийВИстории.Добавить(ВидСобытия);
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОтправитьУведомлениеНаПочту(МассивСобытийВИстории)
|
||||
ТекПользователь = Пользователи.ТекущийПользователь();
|
||||
Если ТекПользователь = Исполнитель Тогда
|
||||
Возврат;
|
||||
Конецесли;
|
||||
|
||||
ВсегоСобытий = МассивСобытийВИстории.Количество();
|
||||
Если ВсегоСобытий = 0 Тогда
|
||||
Возврат;
|
||||
Конецесли;
|
||||
|
||||
НеобходимоОтправитьУведомление = Ложь;
|
||||
|
||||
ТемаПисьмаСобытие = "";
|
||||
|
||||
ВидыСобытий_ДобавленаЗадача = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ДобавленаЗадача");
|
||||
ВидыСобытий_НовыйИсполнитель = ПредопределенноеЗначение("Перечисление.узВидыСобытий.НовыйИсполнитель");
|
||||
ВидыСобытий_ДобавленКомментарий = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ДобавленКомментарий");
|
||||
ВидыСобытий_ИзмененоОписаниеЗадачи = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзмененоОписаниеЗадачи");
|
||||
|
||||
МассивСобытийКоторыеПодлежатОтправки = Новый Массив();
|
||||
МассивСобытийКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ДобавленаЗадача);
|
||||
МассивСобытийКоторыеПодлежатОтправки.Добавить(ВидыСобытий_НовыйИсполнитель);
|
||||
МассивСобытийКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ДобавленКомментарий);
|
||||
//МассивСобытийКоторыеПодлежатОтправки.Добавить(ВидыСобытий_ИзмененоОписаниеЗадачи);
|
||||
|
||||
|
||||
Если ВсегоСобытий = 1 Тогда
|
||||
ЭлМассивСобытийВИстории = МассивСобытийВИстории[0];
|
||||
Если ЭлМассивСобытийВИстории = ВидыСобытий_ДобавленаЗадача Тогда
|
||||
НеобходимоОтправитьУведомление = Истина;
|
||||
ТемаПисьмаСобытие = "Вам была назначена задача:";
|
||||
ИначеЕсли ЭлМассивСобытийВИстории = ВидыСобытий_НовыйИсполнитель Тогда
|
||||
НеобходимоОтправитьУведомление = Истина;
|
||||
ТемаПисьмаСобытие = "Вам была назначена задача:";
|
||||
ИначеЕсли ЭлМассивСобытийВИстории = ВидыСобытий_ДобавленКомментарий Тогда
|
||||
НеобходимоОтправитьУведомление = Истина;
|
||||
ТемаПисьмаСобытие = "Добален комментарий по задаче:";
|
||||
//ИначеЕсли ЭлМассивСобытийВИстории = ВидыСобытий_ИзмененоОписаниеЗадачи Тогда
|
||||
// НеобходимоОтправитьУведомление = Истина;
|
||||
// ТемаПисьмаСобытие = "Изменено описание по задаче:";
|
||||
Конецесли;
|
||||
Иначе
|
||||
Если МассивСобытийВИстории.Найти(ВидыСобытий_НовыйИсполнитель) <> Неопределено
|
||||
ИЛИ МассивСобытийВИстории.Найти(ВидыСобытий_ДобавленаЗадача) <> Неопределено Тогда
|
||||
НеобходимоОтправитьУведомление = Истина;
|
||||
ТемаПисьмаСобытие = "Вам была назначена задача:";
|
||||
Иначе
|
||||
Для каждого ЭлМассивСобытийВИстории из МассивСобытийВИстории цикл
|
||||
Если МассивСобытийКоторыеПодлежатОтправки.Найти(ЭлМассивСобытийВИстории) <> Неопределено Тогда
|
||||
НеобходимоОтправитьУведомление = Истина;
|
||||
ТемаПисьмаСобытие = "Изменена задача:";
|
||||
Прервать;
|
||||
Конецесли;
|
||||
Конеццикла;
|
||||
Конецесли;
|
||||
Конецесли;
|
||||
|
||||
|
||||
Если НеобходимоОтправитьУведомление Тогда
|
||||
НаименованиеЗадачи = СокрЛП(Наименование);
|
||||
НомерЗадачи = ""+Код;
|
||||
ТемаПисьма = "[#"+НомерЗадачи+"] "+ТемаПисьмаСобытие + НаименованиеЗадачи;
|
||||
ТекстПисьма = "
|
||||
|Добрый день.
|
||||
|
|
||||
|"+ТемаПисьмаСобытие+" "+НаименованиеЗадачи+"
|
||||
|Номер задачи: #"+НомерЗадачи+"
|
||||
|";
|
||||
Если ЗначениеЗаполнено(ТекстСодержания) Тогда
|
||||
ТекстПисьма = ТекстПисьма + "
|
||||
|
|
||||
|Описание задачи:
|
||||
|"+ТекстСодержания+"
|
||||
|";
|
||||
Конецесли;
|
||||
ДопПараметры = Новый Структура();
|
||||
ДопПараметры.Вставить("ВажностьЗадачи",Важность);
|
||||
ДопПараметры.Вставить("ТекстПисьма",ТекстПисьма);
|
||||
ДопПараметры.Вставить("ТемаПисьма",ТемаПисьма);
|
||||
ДопПараметры.Вставить("ПользовательКому",Исполнитель);
|
||||
узОбщийМодульСервер.ОтправитьПисьмо(ДопПараметры);
|
||||
КонецЕсли;
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ЕстьПодчиненныеЗадачи(Задача,ЗадачаРебенок = Неопределено) Экспорт
|
||||
пЕстьПодчиненныеЗадачи = Ложь;
|
||||
|
23
src/CommonModules/узОбщийМодульСервер.xml
Normal file
23
src/CommonModules/узОбщийМодульСервер.xml
Normal file
@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.1">
|
||||
<CommonModule uuid="0bc2d419-32bf-452b-984a-6432543713e3">
|
||||
<Properties>
|
||||
<Name>узОбщийМодульСервер</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Уз общий модуль сервер</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Global>false</Global>
|
||||
<ClientManagedApplication>false</ClientManagedApplication>
|
||||
<Server>true</Server>
|
||||
<ExternalConnection>true</ExternalConnection>
|
||||
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
|
||||
<ServerCall>true</ServerCall>
|
||||
<Privileged>false</Privileged>
|
||||
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
|
||||
</Properties>
|
||||
</CommonModule>
|
||||
</MetaDataObject>
|
75
src/CommonModules/узОбщийМодульСервер/Ext/Module.bsl
Normal file
75
src/CommonModules/узОбщийМодульСервер/Ext/Module.bsl
Normal file
@ -0,0 +1,75 @@
|
||||
|
||||
Процедура ОтправитьПисьмо(ДопПараметры) Экспорт
|
||||
|
||||
ВажностьЗадачи = ДопПараметры.ВажностьЗадачи;
|
||||
ТекстПисьма = ДопПараметры.ТекстПисьма;
|
||||
ТемаПисьма = ДопПараметры.ТемаПисьма;
|
||||
ПользовательКому = ДопПараметры.ПользовательКому;
|
||||
|
||||
МассивПользователей = Новый Массив();
|
||||
МассивПользователей.Добавить(ПользовательКому);
|
||||
МассивАдресовЭлектроннойПочты = ПолучитьМассивАдресовЭлектроннойПочты(МассивПользователей);
|
||||
Если МассивАдресовЭлектроннойПочты.Количество() = 0 Тогда
|
||||
Сообщить("Ошибка! при отправке письма не удалось получить адреса электронной почты для ["+ПользовательКому+"]");
|
||||
Возврат;
|
||||
Конецесли;
|
||||
|
||||
ТекПользователь = Пользователи.ТекущийПользователь();
|
||||
ДокОбъект = Документы.ЭлектронноеПисьмоИсходящее.СоздатьДокумент();
|
||||
ДокОбъект.Дата = ТекущаяДата();
|
||||
ДокОбъект.Автор = ТекПользователь;
|
||||
|
||||
ДокОбъект.Важность = Перечисления.ВариантыВажностиВзаимодействия[""+ВажностьЗадачи];
|
||||
ДокОбъект.Кодировка = "UTF-8";
|
||||
ДокОбъект.Ответственный = ТекПользователь;
|
||||
ДокОбъект.ОтправительПредставление = "1с: Управление задачами";
|
||||
ДокОбъект.СтатусПисьма = ПредопределенноеЗначение("Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Исходящее");
|
||||
ДокОбъект.Текст = ТекстПисьма;
|
||||
ДокОбъект.Тема = ТемаПисьма;
|
||||
ДокОбъект.ТипТекста = ПредопределенноеЗначение("Перечисление.ТипыТекстовЭлектронныхПисем.ПростойТекст");
|
||||
ДокОбъект.УчетнаяЗапись = ПредопределенноеЗначение("Справочник.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты");
|
||||
ДокОбъект.УдалятьПослеОтправки = Истина;
|
||||
|
||||
//ДокОбъект.ДатаКогдаОтправить = ;
|
||||
|
||||
Для каждого ЭлМассивАдресовЭлектроннойПочты из МассивАдресовЭлектроннойПочты цикл
|
||||
СтрокаПолучателиПисьма = ДокОбъект.ПолучателиПисьма.Добавить();
|
||||
СтрокаПолучателиПисьма.Адрес = ЭлМассивАдресовЭлектроннойПочты;
|
||||
СтрокаПолучателиПисьма.Представление = ""+ПользовательКому+" <"+ЭлМассивАдресовЭлектроннойПочты+">";
|
||||
СтрокаПолучателиПисьма.Контакт = ПользовательКому;
|
||||
Конеццикла;
|
||||
ДокОбъект.СформироватьПредставленияКонтактов();
|
||||
ДокОбъект.Записать();
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПолучитьМассивАдресовЭлектроннойПочты(МассивПользователей)
|
||||
МассивАдресовЭлектроннойПочты = Новый Массив();
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ
|
||||
| ПользователиКонтактнаяИнформация.Ссылка,
|
||||
| ПользователиКонтактнаяИнформация.Тип,
|
||||
| ПользователиКонтактнаяИнформация.Вид,
|
||||
| ПользователиКонтактнаяИнформация.АдресЭП
|
||||
|ИЗ
|
||||
| Справочник.Пользователи.КонтактнаяИнформация КАК ПользователиКонтактнаяИнформация
|
||||
|ГДЕ
|
||||
| ПользователиКонтактнаяИнформация.Ссылка В(&МассивПользователей)
|
||||
| И ПользователиКонтактнаяИнформация.Тип = &Тип
|
||||
| И ПользователиКонтактнаяИнформация.Вид = &Вид
|
||||
|";
|
||||
|
||||
Запрос.УстановитьПараметр("Вид", ПредопределенноеЗначение("Справочник.ВидыКонтактнойИнформации.EmailПользователя"));
|
||||
Запрос.УстановитьПараметр("МассивПользователей", МассивПользователей);
|
||||
Запрос.УстановитьПараметр("Тип", ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты"));
|
||||
|
||||
РезультатЗапроса = Запрос.Выполнить();
|
||||
|
||||
Выборка = РезультатЗапроса.Выбрать();
|
||||
|
||||
Пока Выборка.Следующий() Цикл
|
||||
МассивАдресовЭлектроннойПочты.Добавить(Выборка.АдресЭП);
|
||||
КонецЦикла;
|
||||
Возврат МассивАдресовЭлектроннойПочты;
|
||||
КонецФункции
|
||||
|
@ -770,6 +770,7 @@
|
||||
<CommonModule>ФайловыеФункцииСлужебныйКлиентСервер</CommonModule>
|
||||
<CommonModule>ФайловыеФункцииСлужебныйПовтИсп</CommonModule>
|
||||
<CommonModule>ФизическиеЛицаКлиентСервер</CommonModule>
|
||||
<CommonModule>узОбщийМодульСервер</CommonModule>
|
||||
<ExchangePlan>ОбновлениеИнформационнойБазы</ExchangePlan>
|
||||
<XDTOPackage>ApplicationExtensionsManifest_1_0_0_1</XDTOPackage>
|
||||
<XDTOPackage>ApplicationExtensionsPermissions_1_0_0_1</XDTOPackage>
|
||||
|
@ -2982,9 +2982,9 @@
|
||||
<d3p1:fixedVariantMeasure>Day</d3p1:fixedVariantMeasure>
|
||||
<d3p1:fixedVariantInterval>1</d3p1:fixedVariantInterval>
|
||||
<d3p1:autoFullInterval>true</d3p1:autoFullInterval>
|
||||
<d3p1:fullIntervalBegin>2016-09-16T12:00:00</d3p1:fullIntervalBegin>
|
||||
<d3p1:fullIntervalEnd>2016-09-25T12:59:59</d3p1:fullIntervalEnd>
|
||||
<d3p1:visualBegin>2016-09-16T12:00:00</d3p1:visualBegin>
|
||||
<d3p1:fullIntervalBegin>2016-09-16T15:00:00</d3p1:fullIntervalBegin>
|
||||
<d3p1:fullIntervalEnd>2016-09-25T15:59:59</d3p1:fullIntervalEnd>
|
||||
<d3p1:visualBegin>2016-09-16T15:00:00</d3p1:visualBegin>
|
||||
<d3p1:intervalDrawType>Gradient</d3p1:intervalDrawType>
|
||||
<d3p1:noneVariantChars>3</d3p1:noneVariantChars>
|
||||
<d3p1:noneVariantMeasure>Day</d3p1:noneVariantMeasure>
|
||||
|
Loading…
x
Reference in New Issue
Block a user