mirror of
https://github.com/BlizD/Tasks.git
synced 2025-03-21 21:17:24 +02:00
Восстановление после слияния с Features
This commit is contained in:
parent
29b9c8bb4f
commit
80b0bc6fe4
@ -33,9 +33,39 @@
|
||||
СтрокаТЗСобытия.ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ЗакрытВопрос");
|
||||
Конецесли;
|
||||
|
||||
Если ИзмененОтвет() Тогда
|
||||
СтрокаТЗСобытия = ТЗСобытия.Добавить();
|
||||
СтрокаТЗСобытия.ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзмененОтвет");
|
||||
КонецЕсли;
|
||||
|
||||
Если ИзмененВопрос() Тогда
|
||||
СтрокаТЗСобытия = ТЗСобытия.Добавить();
|
||||
СтрокаТЗСобытия.ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзмененВопрос");
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ТЗСобытия;
|
||||
КонецФункции
|
||||
|
||||
Функция ИзмененОтвет()
|
||||
пИзмененОтвет = Ложь;
|
||||
|
||||
Если Ссылка.Ответ <> Ответ Тогда
|
||||
пИзмененОтвет = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат пИзмененОтвет;
|
||||
КонецФункции
|
||||
|
||||
Функция ИзмененВопрос()
|
||||
пИзмененВопрос = Ложь;
|
||||
|
||||
Если Ссылка.Вопрос <> Вопрос Тогда
|
||||
пИзмененВопрос = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат пИзмененВопрос;
|
||||
КонецФункции
|
||||
|
||||
Процедура ПриЗаписи(Отказ)
|
||||
|
||||
Если ОбменДанными.Загрузка Тогда
|
||||
@ -48,6 +78,10 @@
|
||||
|
||||
РегистрацияАктивностиПользователя(ДополнительныеСвойства.ТЗСобытия,Отказ);
|
||||
|
||||
// + #179 SZ 2020-06-07
|
||||
ОтправитьУведомлениеНаПочту(ДополнительныеСвойства.ТЗСобытия);
|
||||
// - #179 SZ 2020-06-07
|
||||
|
||||
ДополнительныеСвойства.Удалить("ТЗСобытия");
|
||||
КонецПроцедуры
|
||||
|
||||
@ -56,3 +90,196 @@
|
||||
ВТДопПараметры.Вставить("ТЗСобытия",ТЗСобытия);
|
||||
РегистрыСведений.узАктивностиПользователей.ДобавитьАктивностьПользователя(ЭтотОбъект,ВТДопПараметры,Отказ);
|
||||
КонецПроцедуры
|
||||
|
||||
// + #179 SZ 2020-06-07
|
||||
Процедура ОтправитьУведомлениеНаПочту(СобытияВИстории) Экспорт
|
||||
|
||||
ВсегоСобытий = СобытияВИстории.Количество();
|
||||
|
||||
Если ВсегоСобытий = 0 Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого СтрСобытияВИстории из СобытияВИстории Цикл
|
||||
|
||||
ОтправитьУведомлениеНаПочтуПоВидуСобытия(СобытияВИстории, СтрСобытияВИстории.ВидСобытия);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры // - #179 SZ 2020-06-07
|
||||
|
||||
// + #179 SZ 2020-06-07
|
||||
Процедура ОтправитьУведомлениеНаПочтуПоВидуСобытия(СобытияВИстории, ВидСобытия)
|
||||
|
||||
ПараметрыПисьма = ПолучитьПараметрыПисьмаПоСобытию(ВидСобытия);
|
||||
|
||||
ДопПараметры = Новый Структура();
|
||||
ДопПараметры.Вставить("ТекстПисьма",ПараметрыПисьма.ТекстПисьма);
|
||||
ДопПараметры.Вставить("ТемаПисьма",ПараметрыПисьма.ТемаПисьма);
|
||||
ДопПараметры.Вставить("ВажностьЗадачи",ПараметрыПисьма.ВажностьЗадачи);
|
||||
|
||||
ТекПользователь = Пользователи.ТекущийПользователь();
|
||||
Исполнитель = ПредопределенноеЗначение("Справочник.Пользователи.ПустаяСсылка");
|
||||
|
||||
МассивНаблюдателей = Новый Массив();
|
||||
Если ЗначениеЗаполнено(Задача) Тогда
|
||||
МассивНаблюдателей = РегистрыСведений.узНаблюдателиЗаЗадачами.ПолучитьМассивНаблюдателей(Задача);
|
||||
Исполнитель = Задача.Исполнитель;
|
||||
КонецЕсли;
|
||||
|
||||
МассивПользователейКомуПредварительный = Новый Массив();
|
||||
МассивПользователейКомуПредварительный.Добавить(Автор);
|
||||
МассивПользователейКомуПредварительный.Добавить(Исполнитель);
|
||||
МассивПользователейКомуПредварительный.Добавить(КтоМожетОтветить);
|
||||
Для каждого пНаблюдатель из МассивНаблюдателей Цикл
|
||||
МассивПользователейКомуПредварительный.Добавить(пНаблюдатель);
|
||||
КонецЦикла;
|
||||
|
||||
МассивПользователейКому = Новый Массив();
|
||||
|
||||
Для каждого пПользовательПредв из МассивПользователейКомуПредварительный Цикл
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(пПользовательПредв) Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Если пПользовательПредв.узНеОтправлятьУведомленияНаПочту Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Если пПользовательПредв = ТекПользователь
|
||||
И НЕ пПользовательПредв.узОтправлятьУведомленияОДействияхПользователяЕмуНаПочту Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
МассивПользователейКому.Добавить(пПользовательПредв);
|
||||
КонецЦикла;
|
||||
|
||||
ДопПараметры.Вставить("МассивПользователейКому",МассивПользователейКому);
|
||||
|
||||
узОбщийМодульСервер.ОтправитьПисьмо(ДопПараметры);
|
||||
|
||||
КонецПроцедуры // - #179 SZ 2020-06-07
|
||||
|
||||
Функция ПолучитьПараметрыПисьмаПоСобытию(ВидСобытия)
|
||||
|
||||
ТемаПисьма = "";
|
||||
ТекстПисьма = "";
|
||||
ВажностьЗадачи = ПредопределенноеЗначение("Справочник.узВариантыВажностиЗадачи.Обычная");
|
||||
|
||||
ПараметрыПисьма = Новый Структура();
|
||||
ПараметрыПисьма.Вставить("ТемаПисьма",ТемаПисьма);
|
||||
ПараметрыПисьма.Вставить("ТекстПисьма",ТекстПисьма);
|
||||
ПараметрыПисьма.Вставить("ВажностьЗадачи",ВажностьЗадачи);
|
||||
|
||||
ЗаполненаЗадача = Ложь;
|
||||
НомерЗадачи = "";
|
||||
ПредставлениеЗадачи = "";
|
||||
Если ЗначениеЗаполнено(Задача) Тогда
|
||||
ЗаполненаЗадача = Истина;
|
||||
ВажностьЗадачи = Задача.Важность;
|
||||
НомерЗадачи = ""+Формат(Задача.Код,"ЧГ=0");
|
||||
ПредставлениеЗадачи = "#" + НомерЗадачи + " " + Задача.Наименование;
|
||||
КонецЕсли;
|
||||
|
||||
ТемаПисьма = "Изменения по вопросу";
|
||||
ТекстПисьма = "Изменения по вопросу ";
|
||||
ДобавитьВТекстПисьмаВопрос(ТекстПисьма);
|
||||
ДобавитьВТекстПисьмаОтвет(ТекстПисьма);
|
||||
|
||||
Если ВидСобытия = Перечисления.узВидыСобытий.ДобавленВопрос Тогда
|
||||
|
||||
ТемаПисьма = "Новый вопрос ";
|
||||
|
||||
ТекстПисьма = "" + Автор + " задал вопрос к " + КтоМожетОтветить;
|
||||
ДобавитьВТекстПисьмаВопрос(ТекстПисьма);
|
||||
|
||||
Если ЗаполненаЗадача Тогда
|
||||
|
||||
ТемаПисьма = "Новый вопрос к задаче " + ПредставлениеЗадачи;
|
||||
|
||||
ТекстПисьма = "К задаче " + ПредставлениеЗадачи + " " + Автор + " задал вопрос " + КтоМожетОтветить;
|
||||
ДобавитьВТекстПисьмаВопрос(ТекстПисьма);
|
||||
|
||||
КонецЕсли
|
||||
|
||||
ИначеЕсли ВидСобытия = Перечисления.узВидыСобытий.ИзмененОтвет Тогда
|
||||
|
||||
ТемаПисьма = "Изменен ответ ";
|
||||
|
||||
ТекстПисьма = "Изменен ответ ";
|
||||
ДобавитьВТекстПисьмаВопрос(ТекстПисьма);
|
||||
ДобавитьВТекстПисьмаОтвет(ТекстПисьма);
|
||||
|
||||
Если ЗаполненаЗадача Тогда
|
||||
|
||||
ТемаПисьма = "Изменен ответ по вопросу к задаче " + ПредставлениеЗадачи;
|
||||
|
||||
ТекстПисьма = "Изменен ответ по вопросу к задаче " + ПредставлениеЗадачи;
|
||||
ДобавитьВТекстПисьмаВопрос(ТекстПисьма);
|
||||
ДобавитьВТекстПисьмаОтвет(ТекстПисьма);
|
||||
|
||||
КонецЕсли
|
||||
|
||||
ИначеЕсли ВидСобытия = Перечисления.узВидыСобытий.ИзмененВопрос Тогда
|
||||
|
||||
ТемаПисьма = "Изменен вопрос ";
|
||||
|
||||
ТекстПисьма = "Изменен вопрос ";
|
||||
ДобавитьВТекстПисьмаВопрос(ТекстПисьма);
|
||||
ДобавитьВТекстПисьмаОтвет(ТекстПисьма);
|
||||
|
||||
Если ЗаполненаЗадача Тогда
|
||||
|
||||
ТемаПисьма = "Изменен вопрос к задаче " + ПредставлениеЗадачи;
|
||||
|
||||
ТекстПисьма = "Изменен вопрос к задаче " + ПредставлениеЗадачи;
|
||||
ДобавитьВТекстПисьмаВопрос(ТекстПисьма);
|
||||
ДобавитьВТекстПисьмаОтвет(ТекстПисьма);
|
||||
|
||||
КонецЕсли
|
||||
|
||||
ИначеЕсли ВидСобытия = Перечисления.узВидыСобытий.ЗакрытВопрос Тогда
|
||||
|
||||
ТемаПисьма = "Вопрос закрыт";
|
||||
|
||||
ТекстПисьма = "Вопрос закрыт";
|
||||
ДобавитьВТекстПисьмаВопрос(ТекстПисьма);
|
||||
ДобавитьВТекстПисьмаОтвет(ТекстПисьма);
|
||||
|
||||
Если ЗаполненаЗадача Тогда
|
||||
|
||||
ТемаПисьма = "Вопрос закрыт к задаче " + ПредставлениеЗадачи;
|
||||
ТекстПисьма = "Вопрос закрыт к задаче " + ПредставлениеЗадачи;
|
||||
|
||||
ДобавитьВТекстПисьмаВопрос(ТекстПисьма);
|
||||
ДобавитьВТекстПисьмаОтвет(ТекстПисьма);
|
||||
|
||||
КонецЕсли
|
||||
|
||||
Иначе
|
||||
ТекстОшибки = "Ошибка! нет алгоритма для " + ВидСобытия;
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыПисьма.ТемаПисьма = ТемаПисьма;
|
||||
ПараметрыПисьма.ТекстПисьма = ТекстПисьма;
|
||||
ПараметрыПисьма.ВажностьЗадачи = ВажностьЗадачи;
|
||||
|
||||
Возврат ПараметрыПисьма;
|
||||
КонецФункции
|
||||
|
||||
Процедура ДобавитьВТекстПисьмаВопрос(ТекстПисьма)
|
||||
|
||||
ТекстПисьма = ТекстПисьма + Символы.ПС + "Вопрос: "
|
||||
+ Символы.ПС + Вопрос + Символы.ПС;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьВТекстПисьмаОтвет(ТекстПисьма)
|
||||
|
||||
ТекстПисьма = ТекстПисьма + Символы.ПС + "Ответ: "
|
||||
+ Символы.ПС + Ответ + Символы.ПС;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -27,8 +27,6 @@
|
||||
// Объект.Наименование = Объект.Вопрос;
|
||||
//КонецПроцедуры
|
||||
//}milanse 31.05.2020 20:46:11
|
||||
|
||||
&НаСервере
|
||||
//+ #201 Иванов А.Б. 2020-05-23 Изменения от Дениса Урянского @d-hurricane
|
||||
&НаСервере
|
||||
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
|
||||
|
@ -693,95 +693,98 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьМассивНаблюдателей()
|
||||
пЗадача = Ссылка;
|
||||
|
||||
МассивНаблюдателей = Новый Массив();
|
||||
Возврат РегистрыСведений.узНаблюдателиЗаЗадачами.ПолучитьМассивНаблюдателей(Ссылка);
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ
|
||||
| узНаблюдателиЗаЗадачами.Пользователь
|
||||
|ИЗ
|
||||
| РегистрСведений.узНаблюдателиЗаЗадачами КАК узНаблюдателиЗаЗадачами
|
||||
|ГДЕ
|
||||
| узНаблюдателиЗаЗадачами.Задача = &Задача
|
||||
| И узНаблюдателиЗаЗадачами.Пользователь.узНеОтправлятьУведомленияНаПочту = ЛОЖЬ
|
||||
| И узНаблюдателиЗаЗадачами.Пользователь <> &Исполнитель";
|
||||
|
||||
|
||||
//+ #190 SZ 16.03.2020
|
||||
// Убираем из запроса проверку на Текущего пользователя.
|
||||
// Проверку сделаем в обработке результата запроса
|
||||
//пЗадача = Ссылка;
|
||||
//
|
||||
// | И узНаблюдателиЗаЗадачами.Пользователь <> &ТекущийПользователь
|
||||
//МассивНаблюдателей = Новый Массив();
|
||||
//
|
||||
//- #190 SZ 16.03.2020
|
||||
|
||||
|
||||
ТекущийПользователь = Пользователи.ТекущийПользователь();
|
||||
//+ #190 SZ 16.03.2020
|
||||
// Убираем из запроса проверку на Текущего пользователя.
|
||||
//Запрос = Новый Запрос;
|
||||
//Запрос.Текст =
|
||||
//"ВЫБРАТЬ
|
||||
//| узНаблюдателиЗаЗадачами.Пользователь
|
||||
//|ИЗ
|
||||
//| РегистрСведений.узНаблюдателиЗаЗадачами КАК узНаблюдателиЗаЗадачами
|
||||
//|ГДЕ
|
||||
//| узНаблюдателиЗаЗадачами.Задача = &Задача
|
||||
//| И узНаблюдателиЗаЗадачами.Пользователь.узНеОтправлятьУведомленияНаПочту = ЛОЖЬ
|
||||
//| И узНаблюдателиЗаЗадачами.Пользователь <> &Исполнитель";
|
||||
//
|
||||
//Запрос.УстановитьПараметр("ТекущийПользователь", ТекущийПользователь);
|
||||
//
|
||||
// Проверку сделаем в обработке результата запроса
|
||||
//- #190 SZ 16.03.2020
|
||||
|
||||
Запрос.УстановитьПараметр("Исполнитель", Исполнитель);
|
||||
Запрос.УстановитьПараметр("Задача", пЗадача);
|
||||
|
||||
РезультатЗапроса = Запрос.Выполнить();
|
||||
Если НЕ РезультатЗапроса.Пустой() Тогда
|
||||
Выборка = РезультатЗапроса.Выбрать();
|
||||
Пока Выборка.Следующий() Цикл
|
||||
МассивНаблюдателей.Добавить(Выборка.Пользователь);
|
||||
КонецЦикла;
|
||||
Конецесли;
|
||||
|
||||
Для каждого СтрокаНаблюдатели из Статус.Наблюдатели цикл
|
||||
Если МассивНаблюдателей.Найти(СтрокаНаблюдатели.Пользователь) <> Неопределено Тогда
|
||||
Продолжить;
|
||||
Конецесли;
|
||||
|
||||
//+ #190 SZ 16.03.2020
|
||||
//Если СтрокаНаблюдатели.Пользователь = Пользователи.ТекущийПользователь() Тогда
|
||||
// Продолжить;
|
||||
//Конецесли;
|
||||
Если СтрокаНаблюдатели.Пользователь = ТекущийПользователь
|
||||
И НЕ СтрокаНаблюдатели.Пользователь.узОтправлятьУведомленияОДействияхПользователяЕмуНаПочту Тогда
|
||||
Продолжить;
|
||||
Конецесли;
|
||||
//- #190 SZ 16.03.2020
|
||||
|
||||
//Павлюков - отсеем ненужных наблюдателей, у которых явно задано, за кем наблюдать
|
||||
Если Не СтрокаНаблюдатели.Контрагент.Пустая()
|
||||
И Не пЗадача.Контрагент.Пустая()
|
||||
И Не СтрокаНаблюдатели.Контрагент = пЗадача.Контрагент Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
МассивНаблюдателей.Добавить(СтрокаНаблюдатели.Пользователь);
|
||||
Конеццикла;
|
||||
|
||||
пНаблюдателиЗаОснЗадачей = пЗадача.ОсновнаяЗадача.НаблюдателиЗаОсновнойЗадачей;
|
||||
Для каждого СтрокапНаблюдателиЗаОснЗадачей из пНаблюдателиЗаОснЗадачей цикл
|
||||
пНаблюдатель = СтрокапНаблюдателиЗаОснЗадачей.Пользователь;
|
||||
Если МассивНаблюдателей.Найти(пНаблюдатель) <> Неопределено Тогда
|
||||
Продолжить;
|
||||
Конецесли;
|
||||
//+ #190 SZ 16.03.2020
|
||||
//Если пНаблюдатель = Пользователи.ТекущийПользователь() Тогда
|
||||
// Продолжить;
|
||||
//Конецесли;
|
||||
Если пНаблюдатель = ТекущийПользователь
|
||||
И НЕ пНаблюдатель.узОтправлятьУведомленияОДействияхПользователяЕмуНаПочту Тогда
|
||||
Продолжить;
|
||||
Конецесли;
|
||||
//- #190 SZ 16.03.2020
|
||||
|
||||
МассивНаблюдателей.Добавить(пНаблюдатель);
|
||||
Конеццикла;
|
||||
|
||||
Возврат МассивНаблюдателей;
|
||||
////+ #190 SZ 16.03.2020
|
||||
//// Убираем из запроса проверку на Текущего пользователя.
|
||||
//// Проверку сделаем в обработке результата запроса
|
||||
////
|
||||
//// | И узНаблюдателиЗаЗадачами.Пользователь <> &ТекущийПользователь
|
||||
////
|
||||
////- #190 SZ 16.03.2020
|
||||
//
|
||||
//
|
||||
//ТекущийПользователь = Пользователи.ТекущийПользователь();
|
||||
////+ #190 SZ 16.03.2020
|
||||
//// Убираем из запроса проверку на Текущего пользователя.
|
||||
////
|
||||
////Запрос.УстановитьПараметр("ТекущийПользователь", ТекущийПользователь);
|
||||
////
|
||||
//// Проверку сделаем в обработке результата запроса
|
||||
////- #190 SZ 16.03.2020
|
||||
//
|
||||
//Запрос.УстановитьПараметр("Исполнитель", Исполнитель);
|
||||
//Запрос.УстановитьПараметр("Задача", пЗадача);
|
||||
//
|
||||
//РезультатЗапроса = Запрос.Выполнить();
|
||||
//Если НЕ РезультатЗапроса.Пустой() Тогда
|
||||
// Выборка = РезультатЗапроса.Выбрать();
|
||||
// Пока Выборка.Следующий() Цикл
|
||||
// МассивНаблюдателей.Добавить(Выборка.Пользователь);
|
||||
// КонецЦикла;
|
||||
//Конецесли;
|
||||
//
|
||||
//Для каждого СтрокаНаблюдатели из Статус.Наблюдатели цикл
|
||||
// Если МассивНаблюдателей.Найти(СтрокаНаблюдатели.Пользователь) <> Неопределено Тогда
|
||||
// Продолжить;
|
||||
// Конецесли;
|
||||
//
|
||||
// //+ #190 SZ 16.03.2020
|
||||
// //Если СтрокаНаблюдатели.Пользователь = Пользователи.ТекущийПользователь() Тогда
|
||||
// // Продолжить;
|
||||
// //Конецесли;
|
||||
// Если СтрокаНаблюдатели.Пользователь = ТекущийПользователь
|
||||
// И НЕ СтрокаНаблюдатели.Пользователь.узОтправлятьУведомленияОДействияхПользователяЕмуНаПочту Тогда
|
||||
// Продолжить;
|
||||
// Конецесли;
|
||||
// //- #190 SZ 16.03.2020
|
||||
//
|
||||
// //Павлюков - отсеем ненужных наблюдателей, у которых явно задано, за кем наблюдать
|
||||
// Если Не СтрокаНаблюдатели.Контрагент.Пустая()
|
||||
// И Не пЗадача.Контрагент.Пустая()
|
||||
// И Не СтрокаНаблюдатели.Контрагент = пЗадача.Контрагент Тогда
|
||||
// Продолжить;
|
||||
// КонецЕсли;
|
||||
// МассивНаблюдателей.Добавить(СтрокаНаблюдатели.Пользователь);
|
||||
//Конеццикла;
|
||||
//
|
||||
//пНаблюдателиЗаОснЗадачей = пЗадача.ОсновнаяЗадача.НаблюдателиЗаОсновнойЗадачей;
|
||||
//Для каждого СтрокапНаблюдателиЗаОснЗадачей из пНаблюдателиЗаОснЗадачей цикл
|
||||
// пНаблюдатель = СтрокапНаблюдателиЗаОснЗадачей.Пользователь;
|
||||
// Если МассивНаблюдателей.Найти(пНаблюдатель) <> Неопределено Тогда
|
||||
// Продолжить;
|
||||
// Конецесли;
|
||||
// //+ #190 SZ 16.03.2020
|
||||
// //Если пНаблюдатель = Пользователи.ТекущийПользователь() Тогда
|
||||
// // Продолжить;
|
||||
// //Конецесли;
|
||||
// Если пНаблюдатель = ТекущийПользователь
|
||||
// И НЕ пНаблюдатель.узОтправлятьУведомленияОДействияхПользователяЕмуНаПочту Тогда
|
||||
// Продолжить;
|
||||
// Конецесли;
|
||||
// //- #190 SZ 16.03.2020
|
||||
//
|
||||
// МассивНаблюдателей.Добавить(пНаблюдатель);
|
||||
//Конеццикла;
|
||||
//
|
||||
//Возврат МассивНаблюдателей;
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьТемаПисьмаСобытие(ДопПараметры,СобытияВИстории)
|
||||
|
@ -86,11 +86,11 @@
|
||||
Возврат мЗначениеКонстанты;
|
||||
КонецФункции //ПолучитьЗначениеКонстанты(ИмяКонстанты,ТипКонстанты)
|
||||
|
||||
Функция УстановитьЗначениеКонстанты(ИмяКонстанты,ЗначениеКонстанты) Экспорт
|
||||
Процедура УстановитьЗначениеКонстанты(ИмяКонстанты,ЗначениеКонстанты) Экспорт
|
||||
|
||||
пКонстанта = ПредопределенноеЗначение("Справочник.узКонстанты."+ИмяКонстанты);
|
||||
пКонстантаОбъект = пКонстанта.ПолучитьОбъект();
|
||||
пКонстантаОбъект.Значение = ЗначениеКонстанты;
|
||||
пКонстантаОбъект.Записать();
|
||||
|
||||
КонецФункции
|
||||
КонецПроцедуры
|
@ -160,46 +160,6 @@
|
||||
ДиалогВыбораФайла.Показать (Оповещение);
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура КомандаСоздатьVBSФайлДляПланировщикаЗаданий(Команда)
|
||||
//Если НЕ ЗначениеЗаполнено(Объект.КаталогДляЗагрузкиИзмененийИзХранилща) Тогда
|
||||
// Сообщение = Новый СообщениеПользователю;
|
||||
// Сообщение.Текст = "Ошибка! Необходимо заполнить реквизит КаталогДляЗагрузкиИзмененийИзХранилща";
|
||||
// Сообщение.Поле = "Объект.КаталогДляЗагрузкиИзмененийИзХранилща";
|
||||
// Сообщение.Сообщить();
|
||||
// Возврат;
|
||||
//Конецесли;
|
||||
//Если Объект.Ссылка.Пустая() Тогда
|
||||
// Сообщение = Новый СообщениеПользователю;
|
||||
// Сообщение.Текст = "Ошибка! необходиом сначала записать элемент";
|
||||
// Сообщение.Сообщить();
|
||||
// Возврат;
|
||||
//Конецесли;
|
||||
//
|
||||
//ТекстКоманды = ПолучитьТекстКомандыНаСервере();
|
||||
//VBSФайл = Новый ТекстовыйДокумент();
|
||||
//VBSФайл.УстановитьТекст(
|
||||
//"
|
||||
//|Set WshShell = CreateObject(""WScript.Shell"")
|
||||
//|
|
||||
//|TekDate = date
|
||||
//|TekTime = Time
|
||||
//|FileName = ""StorageHistory_"" & Replace(TekDate,""."","""") & ""_"" & Replace(TekTime,"":"","""") & "".mxl""
|
||||
// |
|
||||
//|WshShell.Run """ + ТекстКоманды + ",0,0
|
||||
//|");
|
||||
//ИмяСкриптФайла = Объект.КаталогДляЗагрузкиИзмененийИзХранилща + "DumpStorage.vbs";
|
||||
//VBSФайл.Записать(ИмяСкриптФайла,КодировкаТекста.ANSI);
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Функция ПолучитьТекстКомандыНаСервере()
|
||||
//ОбрОбъект = Обработки.узЗагрузкаИзмененийИзХранилища.Создать();
|
||||
//ОбрОбъект.Конфигурация = Объект.Ссылка;
|
||||
//ФайлВыгрузкиИзменений = ""+Объект.КаталогДляЗагрузкиИзмененийИзХранилща + "\"" & FileName &";
|
||||
//РезультатФункции = ОбрОбъект.ПолучитьНастройкиЗапускаКонфигуратора(ФайлВыгрузкиИзменений);
|
||||
//Возврат РезультатФункции.ТекстКоманды;
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ИспользоватьАльтернативнуюЗагрузкуДанныхИзХранилищаПриИзменении(Элемент)
|
||||
|
@ -48,6 +48,8 @@
|
||||
ДвоичныеДанные = Новый ДвоичныеДанные(АдресНаСервере);
|
||||
ТекущийОбъект.ФайлШаблонаХранилищеЗначений = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));
|
||||
|
||||
УдалитьФайлы(АдресНаСервере);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
|
@ -1754,8 +1754,9 @@
|
||||
&НаСервере
|
||||
Процедура ПриИзмененииИспользованияПодписанияИлиШифрованияНаСервере()
|
||||
|
||||
//++ УправлениеЗадачами: типовой код приводит к ошибке, т.к. опирается на основную таблицу списка.
|
||||
//++ УправлениеЗадачами: типовой код приводит к ошибке, т.к. опирается на основную таблицу списка.
|
||||
// Основной таблицы у нас нет, поэтому всегда прячем все поля, связанные с криптографией.
|
||||
//РаботаСФайламиСлужебный.КриптографияПриСозданииФормыНаСервере(ЭтотОбъект);
|
||||
Элементы.СписокНомерКартинкиПодписанЗашифрован.Видимость = Ложь;
|
||||
Элементы.ФормаГруппаКомандЭлектроннаяПодписьИШифрование.Видимость = Ложь;
|
||||
Элементы.СписокКонтекстноеМенюГруппаКомандЭлектроннаяПодписьИШифрование.Видимость = Ложь;
|
||||
@ -1763,7 +1764,7 @@
|
||||
Возврат;
|
||||
//-- УправлениеЗадачами
|
||||
|
||||
РаботаСФайламиСлужебный.КриптографияПриСозданииФормыНаСервере(ЭтотОбъект);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
|
||||
Описание.Имя = "УправлениеЗадачами";
|
||||
Описание.Версия = "1.0.5.003";
|
||||
Описание.Версия = "1.0.5.004";
|
||||
|
||||
//+ УрянскийД 2020-06-22 (начало)
|
||||
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
|
||||
|
@ -1,11 +1,4 @@
|
||||
Функция Удалить_ПолучитьТекстHTMLMarkdown(ТекстСодержания) Экспорт
|
||||
|
||||
//РезультатФункции = узОбщийМодульСервер.ПолучитьМакетыMardown(ТекстСодержания);
|
||||
//
|
||||
//ТекстHTMLМакет = РезультатФункции.ТекстHTMLМакет;
|
||||
//Возврат ТекстHTMLМакет;
|
||||
КонецФункции
|
||||
|
||||
|
||||
Функция УстановитьТекстВБуферОбмена(ТекстДляКопирования) Экспорт
|
||||
пОбъект = Новый COMОбъект("htmlfile");
|
||||
пОбъект.ParentWindow.ClipboardData.Setdata("Text", ТекстДляКопирования);
|
||||
|
@ -95,7 +95,7 @@
|
||||
|
||||
Ресурс = "bot" + ТокенБота + "/sendMessage?chat_id=" + Формат(элемПолучатель.ИД, "ЧГ=") + "&text=" + ТекстПисьма+"&parse_mode=Markdown&disable_web_page_preview=true";
|
||||
//Ресурс = "bot" + ТокенБота + "/sendMessage?chat_id=" + Формат(элемПолучатель.ИД, "ЧГ=") + "&text=" + ТекстПисьма+"&disable_web_page_preview=true";
|
||||
Соединение = Новый HTTPСоединение("api.telegram.org", 443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
|
||||
Соединение = Новый HTTPСоединение("api.telegram.org", 443,,,,30,Новый ЗащищенноеСоединениеOpenSSL());
|
||||
ЗапросHTTP = Новый HTTPЗапрос(Ресурс);
|
||||
Ответ = Соединение.Получить(ЗапросHTTP);
|
||||
|
||||
|
@ -49,7 +49,7 @@
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</xr:Item>
|
||||
</DefaultRoles>
|
||||
<Vendor>Управление задачами</Vendor>
|
||||
<Version>1.0.5.003</Version>
|
||||
<Version>1.0.5.004</Version>
|
||||
<UpdateCatalogAddress/>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<UseManagedFormInOrdinaryApplication>true</UseManagedFormInOrdinaryApplication>
|
||||
|
@ -750,6 +750,8 @@
|
||||
НастройкиЗапускаКонфигуратора = ПолучитьНастройкиЗапускаКонфигуратора();
|
||||
ТекстКоманды = НастройкиЗапускаКонфигуратора.ТекстКоманды;
|
||||
Сообщить(ТекстКоманды);
|
||||
|
||||
Возврат ТекстКоманды;
|
||||
Конецфункции
|
||||
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -123,7 +123,7 @@
|
||||
УдалитьВременныеФайлы(РезультатВыгрузки);
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ЗаполнитьТЧОбработки()
|
||||
Процедура ЗаполнитьТЧОбработки()
|
||||
ИсторияХранилища.Очистить();
|
||||
ИзмененныеОбъекты.Очистить();
|
||||
|
||||
@ -176,7 +176,7 @@
|
||||
|
||||
Конеццикла;
|
||||
ИсторияХранилища.Сортировать("Версия");
|
||||
КонецФункции
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПолучитьПолноеИмяМетаданных(ПолноеИмяМетаданных,СтрокамТЗHistory)
|
||||
ИмяОбъекта = СтрокамТЗHistory.OBJNAME;
|
||||
|
@ -18,9 +18,11 @@
|
||||
|
||||
пМассивНастроекПроксиСерверов = РегистрыСведений.узПроксиСерверы.ПолучитьМассивНастроекПроксиСерверов();
|
||||
пМассивНастроекПроксиСерверовКоличество = пМассивНастроекПроксиСерверов.Количество();
|
||||
Если пМассивНастроекПроксиСерверовКоличество = 0 Тогда
|
||||
пВсеНастройкиПолучены = Ложь;
|
||||
КонецЕсли;
|
||||
// + #232 Ruflex @RomanUpworksTeam
|
||||
//Если пМассивНастроекПроксиСерверовКоличество = 0 Тогда
|
||||
// пВсеНастройкиПолучены = Ложь;
|
||||
//КонецЕсли;
|
||||
// - #232 Ruflex @RomanUpworksTeam
|
||||
|
||||
пНастройкиДляРаботыСТелеграм.Вставить("ТокенТелеграмБота", пТокенТелеграмБота);
|
||||
пНастройкиДляРаботыСТелеграм.Вставить("МассивНастроекПроксиСерверов", пМассивНастроекПроксиСерверов);
|
||||
@ -85,6 +87,8 @@
|
||||
МассивResult = ОтветСоответсвие["result"];
|
||||
ИДПоследнегоПринятогоСообщения = Неопределено;
|
||||
|
||||
ТЗПользователиТелеграмм = ПолучитьТЗПользователиТелеграмм();
|
||||
|
||||
Для Каждого СоответсвиеMessange Из МассивResult Цикл
|
||||
|
||||
ИДПоследнегоПринятогоСообщения = Формат(СоответсвиеMessange["update_id"] + 1, "ЧГ=");
|
||||
@ -100,32 +104,69 @@
|
||||
Если СоответсвиеMessange_message.Получить("text") <> Неопределено Тогда
|
||||
MessageText = СоответсвиеMessange_message.Получить("text");
|
||||
|
||||
Если Найти(MessageText, "/addwork") <> 0 Тогда
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||||
| Пользователи.Ссылка КАК Пользователь
|
||||
|ИЗ
|
||||
| Справочник.Пользователи КАК Пользователи
|
||||
|ГДЕ
|
||||
| Пользователи.узИДПользователяТелеграмм = &узИДПользователяТелеграмм";
|
||||
|
||||
Запрос.УстановитьПараметр("узИДПользователяТелеграмм", Число(пСhatИД));
|
||||
|
||||
РезультатЗапроса = Запрос.Выполнить();
|
||||
Если РезультатЗапроса.Пустой() Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Выборка = РезультатЗапроса.Выбрать();
|
||||
Пока Выборка.Следующий() Цикл
|
||||
ТекущиеДелаОбъект = Справочники.узТекущиеДела.СоздатьЭлемент();
|
||||
ТекущиеДелаОбъект.Автор = Выборка.Пользователь;
|
||||
ТекущиеДелаОбъект.ТекстСодержания = СтрЗаменить(MessageText, "/addwork", "");
|
||||
ТекущиеДелаОбъект.Записать();
|
||||
КонецЦикла;
|
||||
|
||||
// + Иванов А.Б. 2020-07-11
|
||||
// Если Найти(MessageText, "/addwork") <> 0 Тогда
|
||||
// Запрос = Новый Запрос;
|
||||
// Запрос.Текст =
|
||||
// "ВЫБРАТЬ ПЕРВЫЕ 1
|
||||
// | Пользователи.Ссылка КАК Пользователь
|
||||
// |ИЗ
|
||||
// | Справочник.Пользователи КАК Пользователи
|
||||
// |ГДЕ
|
||||
// | Пользователи.узИДПользователяТелеграмм = &узИДПользователяТелеграмм";
|
||||
//
|
||||
// Запрос.УстановитьПараметр("узИДПользователяТелеграмм", Число(пСhatИД));
|
||||
//
|
||||
// РезультатЗапроса = Запрос.Выполнить();
|
||||
// Если РезультатЗапроса.Пустой() Тогда
|
||||
// Продолжить;
|
||||
// КонецЕсли;
|
||||
//
|
||||
// Выборка = РезультатЗапроса.Выбрать();
|
||||
// Пока Выборка.Следующий() Цикл
|
||||
// ТекущиеДелаОбъект = Справочники.узТекущиеДела.СоздатьЭлемент();
|
||||
// ТекущиеДелаОбъект.Автор = Выборка.Пользователь;
|
||||
// ТекущиеДелаОбъект.ТекстСодержания = СтрЗаменить(MessageText, "/addwork", "");
|
||||
// ТекущиеДелаОбъект.Записать();
|
||||
// КонецЦикла;
|
||||
//
|
||||
// КонецЕсли;
|
||||
|
||||
Если Найти(MessageText, "/addwork") = 0 Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
пузИДПользователяТелеграмм = Число(пСhatИД);
|
||||
|
||||
ПараметрыОтбора=Новый Структура();
|
||||
ПараметрыОтбора.Вставить("узИДПользователяТелеграмм",пузИДПользователяТелеграмм);
|
||||
НайденныеСтроки = ТЗПользователиТелеграмм.НайтиСтроки(ПараметрыОтбора);
|
||||
ВсегоНайденныеСтроки = НайденныеСтроки.Количество();
|
||||
ТекстОшибки = "";
|
||||
Если ВсегоНайденныеСтроки = 1 тогда
|
||||
СтрокаТЗПользователиТелеграмм = НайденныеСтроки[0];
|
||||
ИначеЕсли ВсегоНайденныеСтроки > 1 Тогда
|
||||
ТекстОшибки = "Ошибка! Найдено более 1 строки";
|
||||
Иначе
|
||||
ТекстОшибки = "Ошибка! Не найдена строка";
|
||||
Конецесли;
|
||||
|
||||
Если ЗначениеЗаполнено(ТекстОшибки) Тогда
|
||||
ТекстОшибки = ТекстОшибки
|
||||
+" в ""ТЗПользователиТелеграмм"" для ";
|
||||
Для каждого ЭлементОтбора из ПараметрыОтбора цикл
|
||||
ТекстОшибки = ТекстОшибки
|
||||
+" "+ ЭлементОтбора.Ключ + " = ["+ЭлементОтбора.Значение+"]";
|
||||
Конеццикла;
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
Конецесли;
|
||||
|
||||
ТекущиеДелаОбъект = Справочники.узТекущиеДела.СоздатьЭлемент();
|
||||
ТекущиеДелаОбъект.Автор = СтрокаТЗПользователиТелеграмм.Пользователь;
|
||||
ТекущиеДелаОбъект.ТекстСодержания = СтрЗаменить(MessageText, "/addwork", "");
|
||||
ТекущиеДелаОбъект.Записать();
|
||||
// - Иванов А.Б. 2020-07-11
|
||||
|
||||
|
||||
ИначеЕсли СоответсвиеMessange_message.Получить("photo") <> Неопределено Тогда
|
||||
|
||||
@ -141,6 +182,26 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПолучитьТЗПользователиТелеграмм()
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст = "ВЫБРАТЬ
|
||||
| МАКСИМУМ(Пользователи.Ссылка) КАК Пользователь,
|
||||
| Пользователи.узИДПользователяТелеграмм КАК узИДПользователяТелеграмм
|
||||
|ИЗ
|
||||
| Справочник.Пользователи КАК Пользователи
|
||||
|ГДЕ
|
||||
| Пользователи.узИДПользователяТелеграмм <> 0
|
||||
|
|
||||
|СГРУППИРОВАТЬ ПО
|
||||
| Пользователи.узИДПользователяТелеграмм";
|
||||
|
||||
ТЗПользователиТелеграмм = Запрос.Выполнить().Выгрузить();
|
||||
|
||||
Возврат ТЗПользователиТелеграмм;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ОтправитьСообщениеTelegram(ТекстСообщения, МассивПользователейДляОтправки, УведомлятьОРезультате = Ложь) Экспорт
|
||||
|
||||
Если МассивПользователейДляОтправки.Количество() = 0 Тогда
|
||||
@ -265,16 +326,32 @@
|
||||
Процедура ВыполнитьЗапросHTTP_Telegram(Ответ, ЗапросHTTP, МассивНастроекПроксиСерверов, НомерТекущейНастройкиПрокси, ВОтветОжидаемJSON = Ложь)
|
||||
|
||||
Ответ = Неопределено;
|
||||
Если НомерТекущейНастройкиПрокси >= МассивНастроекПроксиСерверов.Количество() Тогда
|
||||
Возврат;
|
||||
|
||||
// + #232 Ruflex @RomanUpworksTeam
|
||||
///+Ruflex
|
||||
///-Ruflex
|
||||
//Если (НомерТекущейНастройкиПрокси >= МассивНастроекПроксиСерверов.Количество()) ) Тогда
|
||||
// Возврат;
|
||||
//КонецЕсли;
|
||||
|
||||
Если (МассивНастроекПроксиСерверов.Количество()>0) Тогда
|
||||
|
||||
Если (НомерТекущейНастройкиПрокси >= МассивНастроекПроксиСерверов.Количество()) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
НастройкиПрокси = МассивНастроекПроксиСерверов[НомерТекущейНастройкиПрокси];
|
||||
ИнтернетПрокси = Новый ИнтернетПрокси(Ложь);
|
||||
ИнтернетПрокси.Установить("https",НастройкиПрокси.Адрес,НастройкиПрокси.Порт,НастройкиПрокси.Логин,НастройкиПрокси.Пароль,Ложь);
|
||||
Соединение = Новый HTTPСоединение("api.telegram.org", 443,,,ИнтернетПрокси,30,Новый ЗащищенноеСоединениеOpenSSL());
|
||||
|
||||
Иначе
|
||||
|
||||
Соединение = Новый HTTPСоединение("api.telegram.org", 443,,,,30,Новый ЗащищенноеСоединениеOpenSSL());
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
НастройкиПрокси = МассивНастроекПроксиСерверов[НомерТекущейНастройкиПрокси];
|
||||
ИнтернетПрокси = Новый ИнтернетПрокси(Ложь);
|
||||
ИнтернетПрокси.Установить("https",НастройкиПрокси.Адрес,НастройкиПрокси.Порт,НастройкиПрокси.Логин,НастройкиПрокси.Пароль,Ложь);
|
||||
// + #232 Ruflex @RomanUpworksTeam
|
||||
|
||||
Соединение = Новый HTTPСоединение("api.telegram.org", 443,,,ИнтернетПрокси,,Новый ЗащищенноеСоединениеOpenSSL());
|
||||
|
||||
Попытка
|
||||
|
||||
Ответ = Соединение.ОтправитьДляОбработки(ЗапросHTTP);
|
||||
@ -305,9 +382,20 @@
|
||||
КонецЕсли;
|
||||
|
||||
Исключение
|
||||
НомерТекущейНастройкиПрокси = НомерТекущейНастройкиПрокси + 1;
|
||||
РегистрыСведений.узПроксиСерверы.ИзменитьОценкуРаботоспособностиПроксиСервера(НастройкиПрокси.Адрес, НастройкиПрокси.Порт, -1);
|
||||
ВыполнитьЗапросHTTP_Telegram(Ответ, ЗапросHTTP, МассивНастроекПроксиСерверов, НомерТекущейНастройкиПрокси, ВОтветОжидаемJSON);
|
||||
|
||||
// + #232 Ruflex @RomanUpworksTeam
|
||||
//НомерТекущейНастройкиПрокси = НомерТекущейНастройкиПрокси + 1;
|
||||
//РегистрыСведений.узПроксиСерверы.ИзменитьОценкуРаботоспособностиПроксиСервера(НастройкиПрокси.Адрес, НастройкиПрокси.Порт, -1);
|
||||
//ВыполнитьЗапросHTTP_Telegram(Ответ, ЗапросHTTP, МассивНастроекПроксиСерверов, НомерТекущейНастройкиПрокси, ВОтветОжидаемJSON);
|
||||
|
||||
Если (МассивНастроекПроксиСерверов.Количество()>0) Тогда
|
||||
|
||||
НомерТекущейНастройкиПрокси = НомерТекущейНастройкиПрокси + 1;
|
||||
РегистрыСведений.узПроксиСерверы.ИзменитьОценкуРаботоспособностиПроксиСервера(НастройкиПрокси.Адрес, НастройкиПрокси.Порт, -1);
|
||||
ВыполнитьЗапросHTTP_Telegram(Ответ, ЗапросHTTP, МассивНастроекПроксиСерверов, НомерТекущейНастройкиПрокси, ВОтветОжидаемJSON);
|
||||
|
||||
Конецесли;
|
||||
// - #232 Ruflex @RomanUpworksTeam
|
||||
КонецПопытки
|
||||
|
||||
КонецПроцедуры
|
||||
|
@ -282,6 +282,38 @@
|
||||
<Comment/>
|
||||
</Properties>
|
||||
</EnumValue>
|
||||
<EnumValue uuid="143f2600-1803-4f6d-a8fd-cd27d38321df">
|
||||
<Properties>
|
||||
<Name>ИзмененОтвет</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Изменен ответ</v8:content>
|
||||
</v8:item>
|
||||
<v8:item>
|
||||
<v8:lang>en</v8:lang>
|
||||
<v8:content>Add question</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
</Properties>
|
||||
</EnumValue>
|
||||
<EnumValue uuid="5a3fab7e-5452-4a8e-8b30-9d531fa9839b">
|
||||
<Properties>
|
||||
<Name>ИзмененВопрос</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Изменен вопрос</v8:content>
|
||||
</v8:item>
|
||||
<v8:item>
|
||||
<v8:lang>en</v8:lang>
|
||||
<v8:content>Add question</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
</Properties>
|
||||
</EnumValue>
|
||||
</ChildObjects>
|
||||
</Enum>
|
||||
</MetaDataObject>
|
@ -25,6 +25,60 @@
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<UseStandardCommands>false</UseStandardCommands>
|
||||
<StandardAttributes>
|
||||
<xr:StandardAttribute name="Order">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
<xr:StandardAttribute name="Ref">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
</StandardAttributes>
|
||||
<Characteristics/>
|
||||
<QuickChoice>true</QuickChoice>
|
||||
<ChoiceMode>BothWays</ChoiceMode>
|
||||
|
@ -132,10 +132,14 @@
|
||||
|
||||
ВидыСобытий_ДобавленВопрос = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ДобавленВопрос");
|
||||
ВидыСобытий_ЗакрытВопрос = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ЗакрытВопрос");
|
||||
ВидыСобытий_ИзмененОтвет = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзмененОтвет");
|
||||
ВидыСобытий_ИзмененВопрос = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ИзмененВопрос");
|
||||
|
||||
МассивВидовСобытияДляРегистрацииАктивности = Новый Массив();
|
||||
МассивВидовСобытияДляРегистрацииАктивности.Добавить(ВидыСобытий_ДобавленВопрос);
|
||||
МассивВидовСобытияДляРегистрацииАктивности.Добавить(ВидыСобытий_ЗакрытВопрос);
|
||||
МассивВидовСобытияДляРегистрацииАктивности.Добавить(ВидыСобытий_ИзмененОтвет);
|
||||
МассивВидовСобытияДляРегистрацииАктивности.Добавить(ВидыСобытий_ИзмененВопрос);
|
||||
|
||||
Для каждого СтрокаТЗСобытия из ТЗСобытия цикл
|
||||
пВидСобытия = СтрокаТЗСобытия.ВидСобытия;
|
||||
|
@ -69,4 +69,72 @@
|
||||
|
||||
Функция ЕстьЛиСлежениеЗаЗадачейУТекущегоПользователя(Задача) Экспорт
|
||||
Возврат ЕстьЛиСлежениеЗаЗадачейУПользователя(Задача, Пользователи.ТекущийПользователь());
|
||||
КонецФункции
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьМассивНаблюдателей(Задача) Экспорт
|
||||
|
||||
МассивНаблюдателей = Новый Массив();
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ
|
||||
| узНаблюдателиЗаЗадачами.Пользователь
|
||||
|ИЗ
|
||||
| РегистрСведений.узНаблюдателиЗаЗадачами КАК узНаблюдателиЗаЗадачами
|
||||
|ГДЕ
|
||||
| узНаблюдателиЗаЗадачами.Задача = &Задача
|
||||
| И узНаблюдателиЗаЗадачами.Пользователь.узНеОтправлятьУведомленияНаПочту = ЛОЖЬ
|
||||
| И узНаблюдателиЗаЗадачами.Пользователь <> &Исполнитель";
|
||||
|
||||
|
||||
ТекущийПользователь = Пользователи.ТекущийПользователь();
|
||||
|
||||
Запрос.УстановитьПараметр("Исполнитель", Задача.Исполнитель);
|
||||
Запрос.УстановитьПараметр("Задача", Задача);
|
||||
|
||||
РезультатЗапроса = Запрос.Выполнить();
|
||||
Если НЕ РезультатЗапроса.Пустой() Тогда
|
||||
Выборка = РезультатЗапроса.Выбрать();
|
||||
Пока Выборка.Следующий() Цикл
|
||||
МассивНаблюдателей.Добавить(Выборка.Пользователь);
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
ТЧСтатусНаблюдатели = Задача.Статус.Наблюдатели;
|
||||
|
||||
Для каждого СтрокаНаблюдатели из ТЧСтатусНаблюдатели цикл
|
||||
Если МассивНаблюдателей.Найти(СтрокаНаблюдатели.Пользователь) <> Неопределено Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Если СтрокаНаблюдатели.Пользователь = ТекущийПользователь
|
||||
И НЕ СтрокаНаблюдатели.Пользователь.узОтправлятьУведомленияОДействияхПользователяЕмуНаПочту Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ СтрокаНаблюдатели.Контрагент.Пустая()
|
||||
И НЕ Задача.Контрагент.Пустая()
|
||||
И НЕ СтрокаНаблюдатели.Контрагент = Задача.Контрагент Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
МассивНаблюдателей.Добавить(СтрокаНаблюдатели.Пользователь);
|
||||
КонецЦикла;
|
||||
|
||||
пНаблюдателиЗаОснЗадачей = Задача.ОсновнаяЗадача.НаблюдателиЗаОсновнойЗадачей;
|
||||
Для каждого СтрокапНаблюдателиЗаОснЗадачей из пНаблюдателиЗаОснЗадачей цикл
|
||||
пНаблюдатель = СтрокапНаблюдателиЗаОснЗадачей.Пользователь;
|
||||
Если МассивНаблюдателей.Найти(пНаблюдатель) <> Неопределено Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Если пНаблюдатель = ТекущийПользователь
|
||||
И НЕ пНаблюдатель.узОтправлятьУведомленияОДействияхПользователяЕмуНаПочту Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
МассивНаблюдателей.Добавить(пНаблюдатель);
|
||||
КонецЦикла;
|
||||
|
||||
Возврат МассивНаблюдателей;
|
||||
|
||||
КонецФункции
|
Loading…
x
Reference in New Issue
Block a user