3_1_7_79
This commit is contained in:
1 parent
514ae42c64
commit
074fce3a4a
155 files changed
+4073
-2508
No files matched your search
@@ -14,16 +14,43 @@
|
||||
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиентаПриЗапуске.
|
||||
Процедура ПриДобавленииПараметровРаботыКлиентаПриЗапуске(Параметры) Экспорт
|
||||
|
||||
Параметры.Вставить("НастройкиНапоминаний",
|
||||
Новый ФиксированнаяСтруктура("ИспользоватьНапоминания", ПолучитьНастройкиНапоминаний().ИспользоватьНапоминания));
|
||||
|
||||
ИспользоватьНапоминания = ПолучитьНастройкиНапоминаний().ИспользоватьНапоминания;
|
||||
СписокТекущихНапоминаний = ?(ИспользоватьНапоминания,
|
||||
СписокТекущихНапоминанийПользователя(), Новый Массив);
|
||||
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("ИспользоватьНапоминания", ИспользоватьНапоминания);
|
||||
Результат.Вставить("СписокТекущихНапоминаний", СписокТекущихНапоминаний);
|
||||
|
||||
Параметры.Вставить("НастройкиНапоминаний", Новый ФиксированнаяСтруктура(Результат));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиента.
|
||||
Процедура ПриДобавленииПараметровРаботыКлиента(Параметры) Экспорт
|
||||
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииСерверныхОповещений
|
||||
Процедура ПриДобавленииСерверныхОповещений(Оповещения) Экспорт
|
||||
|
||||
Параметры.Вставить("НастройкиНапоминаний",
|
||||
Новый ФиксированнаяСтруктура(ПолучитьНастройкиНапоминаний()));
|
||||
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьНапоминанияПользователя") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Оповещение = СерверныеОповещения.НовоеСерверноеОповещение(
|
||||
НапоминанияПользователяКлиентСервер.ИмяСерверногоОповещения());
|
||||
|
||||
Оповещение.ИмяМодуляОтправки = "НапоминанияПользователяСлужебный";
|
||||
Оповещение.ИмяМодуляПолучения = "НапоминанияПользователяКлиент";
|
||||
|
||||
Оповещения.Вставить(Оповещение.Имя, Оповещение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// См. СтандартныеПодсистемыСервер.ПриОтправкеСерверногоОповещения
|
||||
Процедура ПриОтправкеСерверногоОповещения(ИмяОповещения, ВариантыПараметров) Экспорт
|
||||
|
||||
// Добавление оповещений выполняется при записи регистра сведений НапоминанияПользователя.
|
||||
// Периодическое оповещение требуется для гарантии доставки добавленных оповещений и
|
||||
// для актуализации списка напоминаний всех пользователей.
|
||||
|
||||
АктуализироватьСписокНапоминаний(Ложь);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -155,8 +182,9 @@
|
||||
Функция ПолучитьНастройкиНапоминаний()
|
||||
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("ИспользоватьНапоминания", ЕстьПравоИспользованияНапоминаний() И ПолучитьФункциональнуюОпцию("ИспользоватьНапоминанияПользователя"));
|
||||
Результат.Вставить("ИнтервалПроверкиНапоминаний", ПолучитьИнтервалПроверкиНапоминаний());
|
||||
Результат.Вставить("ИспользоватьНапоминания",
|
||||
ЕстьПравоИспользованияНапоминаний()
|
||||
И ПолучитьФункциональнуюОпцию("ИспользоватьНапоминанияПользователя"));
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
@@ -527,32 +555,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает интервал времени в минутах, через который необходимо повторять проверку текущих напоминаний.
|
||||
Функция ПолучитьИнтервалПроверкиНапоминаний(Пользователь = Неопределено)
|
||||
Интервал = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
"НастройкиНапоминаний",
|
||||
"ИнтервалПроверкиНапоминаний",
|
||||
1,
|
||||
,
|
||||
ПолучитьИмяПользователяИБ(Пользователь));
|
||||
Возврат Макс(Интервал, 1);
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьИмяПользователяИБ(Пользователь)
|
||||
Если Не ЗначениеЗаполнено(Пользователь) Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
|
||||
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Пользователь, "ИдентификаторПользователяИБ"));
|
||||
Если ПользовательИБ = Неопределено Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ПользовательИБ.Имя;
|
||||
КонецФункции
|
||||
|
||||
// Проверяет изменения реквизитов предметов, на которые есть пользовательская подписка,
|
||||
// изменяет срок напоминания в случае необходимости.
|
||||
//
|
||||
@@ -645,9 +647,12 @@
|
||||
КонецПроцедуры
|
||||
|
||||
// Создает напоминание пользователя. Если по объекту уже есть напоминание, то сдвигает время напоминания на секунды вперед.
|
||||
Процедура ПодключитьНапоминание(ПараметрыНапоминания, ОбновитьСрокНапоминания = Ложь) Экспорт
|
||||
Процедура ПодключитьНапоминание(ПараметрыНапоминания, ОбновитьСрокНапоминания = Ложь, БезОповещенияКлиента = Ложь) Экспорт
|
||||
|
||||
НаборЗаписей = РегистрыСведений.НапоминанияПользователя.СоздатьНаборЗаписей();
|
||||
Если БезОповещенияКлиента Тогда
|
||||
НаборЗаписей.ДополнительныеСвойства.Вставить("БезОповещенияКлиента");
|
||||
КонецЕсли;
|
||||
НаборЗаписей.Отбор.Пользователь.Установить(ПараметрыНапоминания.Пользователь);
|
||||
НаборЗаписей.Отбор.Источник.Установить(ПараметрыНапоминания.Источник);
|
||||
|
||||
@@ -694,7 +699,7 @@
|
||||
КонецПроцедуры
|
||||
|
||||
// Отключает напоминание, если оно есть. Если напоминание периодическое, подключает его на ближайшую дату по расписанию.
|
||||
Процедура ОтключитьНапоминание(ПараметрыНапоминания, ПодключатьПоРасписанию = Истина) Экспорт
|
||||
Процедура ОтключитьНапоминание(ПараметрыНапоминания, ПодключатьПоРасписанию = Истина, БезОповещенияКлиента = Ложь) Экспорт
|
||||
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ
|
||||
@@ -738,6 +743,9 @@
|
||||
|
||||
// Удаляем существующую запись.
|
||||
НаборЗаписей = РегистрыСведений.НапоминанияПользователя.СоздатьНаборЗаписей();
|
||||
Если БезОповещенияКлиента Тогда
|
||||
НаборЗаписей.ДополнительныеСвойства.Вставить("БезОповещенияКлиента");
|
||||
КонецЕсли;
|
||||
НаборЗаписей.Отбор.Пользователь.Установить(ПараметрыНапоминания.Пользователь);
|
||||
НаборЗаписей.Отбор.Источник.Установить(ПараметрыНапоминания.Источник);
|
||||
НаборЗаписей.Отбор.ВремяСобытия.Установить(ПараметрыНапоминания.ВремяСобытия);
|
||||
@@ -759,7 +767,7 @@
|
||||
Если ОпределенаСледующаяДатаПоРасписанию Тогда
|
||||
Напоминание.ВремяСобытия = СледующаяДатаПоРасписанию;
|
||||
Напоминание.СрокНапоминания = Напоминание.ВремяСобытия - Напоминание.ИнтервалВремениНапоминания;
|
||||
ПодключитьНапоминание(Напоминание);
|
||||
ПодключитьНапоминание(Напоминание, БезОповещенияКлиента);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -874,8 +882,19 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращаемое значение:
|
||||
// Структура:
|
||||
// * Добавленные - см. СписокТекущихНапоминанийПользователя
|
||||
// * Удаленные - см. СписокТекущихНапоминанийПользователя
|
||||
//
|
||||
Функция НовыеИзмененныеНапоминания() Экспорт
|
||||
|
||||
Возврат Новый Структура("Добавленные, Удаленные", Новый Массив, Новый Массив);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Прекращает просроченные периодические напоминания.
|
||||
Процедура АктуализироватьСписокНапоминаний()
|
||||
Процедура АктуализироватьСписокНапоминаний(ПриЗапуске)
|
||||
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
|
||||
@@ -894,12 +913,18 @@
|
||||
| РегистрСведений.НапоминанияПользователя КАК Напоминания
|
||||
|ГДЕ
|
||||
| Напоминания.ВремяСобытия <= &ТекущаяДата
|
||||
| И Напоминания.Пользователь = &Пользователь";
|
||||
| И &ОтборПоПользователю";
|
||||
|
||||
Запрос = Новый Запрос(ТекстЗапроса);
|
||||
|
||||
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
|
||||
Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь());
|
||||
Если ПриЗапуске Тогда
|
||||
Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь());
|
||||
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОтборПоПользователю",
|
||||
"Напоминания.Пользователь = &Пользователь");
|
||||
Иначе
|
||||
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОтборПоПользователю", "ИСТИНА");
|
||||
КонецЕсли;
|
||||
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
СписокНапоминаний = Запрос.Выполнить().Выгрузить();
|
||||
@@ -925,7 +950,7 @@
|
||||
НачатьТранзакцию();
|
||||
Попытка
|
||||
Если ПодошедшееВремяСобытия.Количество() > 0 Тогда
|
||||
ОтключитьНапоминание(Напоминание, Ложь);
|
||||
ОтключитьНапоминание(Напоминание, Ложь, ПриЗапуске);
|
||||
|
||||
ПараметрыНапоминания = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(Напоминание);
|
||||
ПараметрыНапоминания.Расписание = Напоминание.Расписание.Получить();
|
||||
@@ -933,9 +958,9 @@
|
||||
Напоминание.ВремяСобытия = ПодошедшееВремяСобытия[ПодошедшееВремяСобытия.ВГраница()];
|
||||
Напоминание.СрокНапоминания = Напоминание.ВремяСобытия - Напоминание.ИнтервалВремениНапоминания;
|
||||
|
||||
ПодключитьНапоминание(Напоминание);
|
||||
ПодключитьНапоминание(Напоминание,, ПриЗапуске);
|
||||
КонецЕсли;
|
||||
ОтключитьНапоминание(Напоминание, Истина);
|
||||
ОтключитьНапоминание(Напоминание, Истина, ПриЗапуске);
|
||||
ЗафиксироватьТранзакцию();
|
||||
Исключение
|
||||
ОтменитьТранзакцию();
|
||||
@@ -947,6 +972,10 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Выполняет запрос по напоминаниям для текущего пользователя на 30 минут вперед от текущего времени.
|
||||
// Момент времени смещен от текущего для того, чтобы данные были актуальны в течение жизни кэша.
|
||||
// При обработке результата выполнения функции необходимо учитывать эту особенность.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив из Структура:
|
||||
// * Пользователь - СправочникСсылка.Пользователи
|
||||
@@ -958,7 +987,7 @@
|
||||
//
|
||||
Функция СписокТекущихНапоминанийПользователя() Экспорт
|
||||
|
||||
АктуализироватьСписокНапоминаний();
|
||||
АктуализироватьСписокНапоминаний(Истина);
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст =
|
||||
@@ -972,13 +1001,15 @@
|
||||
|ИЗ
|
||||
| РегистрСведений.НапоминанияПользователя КАК Напоминания
|
||||
|ГДЕ
|
||||
| Напоминания.СрокНапоминания <= &ТекущаяДата
|
||||
| Напоминания.СрокНапоминания <= &ГраницаСрокаНапоминания
|
||||
| И Напоминания.Пользователь = &Пользователь
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| ВремяСобытия";
|
||||
|
||||
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса() + 30*60);// +30 минут для кэша
|
||||
Запрос.УстановитьПараметр("ГраницаСрокаНапоминания",
|
||||
ТекущаяДатаСеанса() + ЗапасВремениНапоминанийДляКэша());
|
||||
|
||||
Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь());
|
||||
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
@@ -988,4 +1019,10 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗапасВремениНапоминанийДляКэша() Экспорт
|
||||
|
||||
Возврат 30*60;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
Reference in new issue
Block a user