From 62b047e6948dbccee021f56fb143c5f8954bf413 Mon Sep 17 00:00:00 2001 From: Anton Ivanov <iab@bk.ru> Date: Fri, 16 Sep 2016 15:36:02 +0300 Subject: [PATCH] =?UTF-8?q?#4,=20=D0=A3=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0?= =?UTF-8?q?=D0=BC=D0=B8,=20=D0=A3=D0=B2=D0=B5=D0=B4=D0=BE=D0=BC=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8F=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Catalogs/узЗадачи/Ext/ObjectModule.bsl | 114 ++++++++++++++++-- src/CommonModules/узОбщийМодульСервер.xml | 23 ++++ .../узОбщийМодульСервер/Ext/Module.bsl | 75 ++++++++++++ src/Configuration.xml | 1 + .../ПродолжительностьРаботыРегламентныхЗаданий/Ext/Template.xml | 6 +- 5 files changed, 206 insertions(+), 13 deletions(-) create mode 100644 src/CommonModules/узОбщийМодульСервер.xml create mode 100644 src/CommonModules/узОбщийМодульСервер/Ext/Module.bsl 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 @@ +<?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> \ 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 @@ <CommonModule>ФайловыеФункцииСлужебныйКлиентСервер</CommonModule> <CommonModule>ФайловыеФункцииСлужебныйПовтИсп</CommonModule> <CommonModule>ФизическиеЛицаКлиентСервер</CommonModule> + <CommonModule>узОбщийМодульСервер</CommonModule> <ExchangePlan>ОбновлениеИнформационнойБазы</ExchangePlan> <XDTOPackage>ApplicationExtensionsManifest_1_0_0_1</XDTOPackage> <XDTOPackage>ApplicationExtensionsPermissions_1_0_0_1</XDTOPackage> 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 @@ <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>