3_1_2_150
This commit is contained in:
1 parent
28f5f6c774
commit
ccbf98d8bf
1114 files changed
+74111
-42158
No files matched your search
@@ -544,7 +544,7 @@
|
||||
|
||||
// Проверяет изменения реквизитов предметов, на которые есть пользовательская подписка,
|
||||
// изменяет срок напоминания в случае необходимости.
|
||||
Процедура ПроверитьИзмененияДатВПредмете(Предмет)
|
||||
Процедура ОбновитьНапоминанияПоПредметам(Предметы) Экспорт
|
||||
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
|
||||
@@ -565,9 +565,9 @@
|
||||
| РегистрСведений.НапоминанияПользователя КАК Напоминания
|
||||
|ГДЕ
|
||||
| Напоминания.СпособУстановкиВремениНапоминания = ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиВремениНапоминания.ОтносительноВремениПредмета)
|
||||
| И Напоминания.Источник = &Источник";
|
||||
| И Напоминания.Источник В(&Предметы)";
|
||||
|
||||
Запрос.УстановитьПараметр("Источник", Предмет);
|
||||
Запрос.УстановитьПараметр("Предметы", Предметы);
|
||||
|
||||
ТаблицаРезультата = Запрос.Выполнить().Выгрузить();
|
||||
|
||||
@@ -587,6 +587,7 @@
|
||||
ПодключитьНапоминание(Напоминание);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Обработчик подписки на событие ПриЗаписи объекта, по поводу которого можно создавать напоминания.
|
||||
@@ -601,7 +602,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
Если ПолучитьФункциональнуюОпцию("ИспользоватьНапоминанияПользователя") Тогда
|
||||
ПроверитьИзмененияДатВПредмете(Источник.Ссылка);
|
||||
ОбновитьНапоминанияПоПредметам(ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Источник.Ссылка));
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -613,37 +614,51 @@
|
||||
НаборЗаписей.Отбор.Пользователь.Установить(ПараметрыНапоминания.Пользователь);
|
||||
НаборЗаписей.Отбор.Источник.Установить(ПараметрыНапоминания.Источник);
|
||||
|
||||
Блокировка = Новый БлокировкаДанных;
|
||||
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.НапоминанияПользователя");
|
||||
ЭлементБлокировки.УстановитьЗначение("Пользователь", ПараметрыНапоминания.Пользователь);
|
||||
ЭлементБлокировки.УстановитьЗначение("Источник", ПараметрыНапоминания.Источник);
|
||||
|
||||
Если ОбновитьСрокНапоминания Тогда
|
||||
НаборЗаписей.Отбор.ВремяСобытия.Установить(ПараметрыНапоминания.ВремяСобытия);
|
||||
НаборЗаписей.Прочитать();
|
||||
Если НаборЗаписей.Количество() = 0 Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
Для Каждого Запись Из НаборЗаписей Цикл
|
||||
ЗаполнитьЗначенияСвойств(Запись, ПараметрыНапоминания);
|
||||
КонецЦикла;
|
||||
Иначе
|
||||
НаборЗаписей.Прочитать();
|
||||
Если НаборЗаписей.Количество() > 0 Тогда
|
||||
ЗанятоеВремя = НаборЗаписей.Выгрузить(,"ВремяСобытия").ВыгрузитьКолонку("ВремяСобытия");
|
||||
Пока ЗанятоеВремя.Найти(ПараметрыНапоминания.ВремяСобытия) <> Неопределено Цикл
|
||||
ПараметрыНапоминания.ВремяСобытия = ПараметрыНапоминания.ВремяСобытия + 1;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
НоваяЗапись = НаборЗаписей.Добавить();
|
||||
ЗаполнитьЗначенияСвойств(НоваяЗапись, ПараметрыНапоминания);
|
||||
ЭлементБлокировки.УстановитьЗначение("ВремяСобытия", ПараметрыНапоминания.ВремяСобытия);
|
||||
КонецЕсли;
|
||||
|
||||
НаборЗаписей.Записать();
|
||||
НачатьТранзакцию();
|
||||
Попытка
|
||||
Блокировка.Заблокировать();
|
||||
НаборЗаписей.Прочитать();
|
||||
|
||||
Если ОбновитьСрокНапоминания Тогда
|
||||
Для Каждого Запись Из НаборЗаписей Цикл
|
||||
ЗаполнитьЗначенияСвойств(Запись, ПараметрыНапоминания);
|
||||
КонецЦикла;
|
||||
Иначе
|
||||
Если НаборЗаписей.Количество() > 0 Тогда
|
||||
ЗанятоеВремя = НаборЗаписей.Выгрузить(,"ВремяСобытия").ВыгрузитьКолонку("ВремяСобытия");
|
||||
Пока ЗанятоеВремя.Найти(ПараметрыНапоминания.ВремяСобытия) <> Неопределено Цикл
|
||||
ПараметрыНапоминания.ВремяСобытия = ПараметрыНапоминания.ВремяСобытия + 1;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
НоваяЗапись = НаборЗаписей.Добавить();
|
||||
ЗаполнитьЗначенияСвойств(НоваяЗапись, ПараметрыНапоминания);
|
||||
КонецЕсли;
|
||||
|
||||
Если НаборЗаписей.Количество() > 0 Тогда
|
||||
НаборЗаписей.Записать();
|
||||
КонецЕсли;
|
||||
|
||||
ЗафиксироватьТранзакцию();
|
||||
Исключение
|
||||
ОтменитьТранзакцию();
|
||||
ВызватьИсключение;
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Отключает напоминание, если оно есть. Если напоминание периодическое, подключает его на ближайшую дату по расписанию.
|
||||
Процедура ОтключитьНапоминание(ПараметрыНапоминания, ПодключатьПоРасписанию = Истина) Экспорт
|
||||
|
||||
// ищем существующую запись
|
||||
Запрос = Новый Запрос;
|
||||
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ
|
||||
| НапоминанияПользователя.Пользователь КАК Пользователь,
|
||||
@@ -663,45 +678,59 @@
|
||||
| И НапоминанияПользователя.ВремяСобытия = &ВремяСобытия
|
||||
| И НапоминанияПользователя.Источник = &Источник";
|
||||
|
||||
Запрос = Новый Запрос(ТекстЗапроса);
|
||||
Запрос.УстановитьПараметр("Пользователь", ПараметрыНапоминания.Пользователь);
|
||||
Запрос.УстановитьПараметр("ВремяСобытия", ПараметрыНапоминания.ВремяСобытия);
|
||||
Запрос.УстановитьПараметр("Источник", ПараметрыНапоминания.Источник);
|
||||
|
||||
Запрос.Текст = ТекстЗапроса;
|
||||
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
|
||||
Напоминание = Неопределено;
|
||||
Если РезультатЗапроса.Количество() > 0 Тогда
|
||||
Напоминание = РезультатЗапроса[0];
|
||||
КонецЕсли;
|
||||
Блокировка = Новый БлокировкаДанных;
|
||||
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.НапоминанияПользователя");
|
||||
ЭлементБлокировки.УстановитьЗначение("Пользователь", ПараметрыНапоминания.Пользователь);
|
||||
ЭлементБлокировки.УстановитьЗначение("Источник", ПараметрыНапоминания.Источник);
|
||||
ЭлементБлокировки.УстановитьЗначение("ВремяСобытия", ПараметрыНапоминания.ВремяСобытия);
|
||||
|
||||
// Удаляем существующую запись.
|
||||
НаборЗаписей = РегистрыСведений.НапоминанияПользователя.СоздатьНаборЗаписей();
|
||||
НаборЗаписей.Отбор.Пользователь.Установить(ПараметрыНапоминания.Пользователь);
|
||||
НаборЗаписей.Отбор.Источник.Установить(ПараметрыНапоминания.Источник);
|
||||
НаборЗаписей.Отбор.ВремяСобытия.Установить(ПараметрыНапоминания.ВремяСобытия);
|
||||
|
||||
НаборЗаписей.Очистить();
|
||||
НаборЗаписей.Записать();
|
||||
|
||||
СледующаяДатаПоРасписанию = Неопределено;
|
||||
ОпределенаСледующаяДатаПоРасписанию = Ложь;
|
||||
|
||||
// Подключаем следующее напоминание по расписанию.
|
||||
Если ПодключатьПоРасписанию И Напоминание <> Неопределено Тогда
|
||||
Расписание = Напоминание.Расписание.Получить();
|
||||
Если Расписание <> Неопределено Тогда
|
||||
Если Расписание.ПериодПовтораДней > 0 Тогда
|
||||
СледующаяДатаПоРасписанию = ПолучитьБлижайшуюДатуСобытияПоРасписанию(Расписание, ПараметрыНапоминания.ВремяСобытия + 1);
|
||||
КонецЕсли;
|
||||
ОпределенаСледующаяДатаПоРасписанию = СледующаяДатаПоРасписанию <> Неопределено;
|
||||
НачатьТранзакцию();
|
||||
Попытка
|
||||
Блокировка.Заблокировать();
|
||||
|
||||
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
|
||||
Напоминание = Неопределено;
|
||||
Если РезультатЗапроса.Количество() > 0 Тогда
|
||||
Напоминание = РезультатЗапроса[0];
|
||||
КонецЕсли;
|
||||
|
||||
Если ОпределенаСледующаяДатаПоРасписанию Тогда
|
||||
Напоминание.ВремяСобытия = СледующаяДатаПоРасписанию;
|
||||
Напоминание.СрокНапоминания = Напоминание.ВремяСобытия - Напоминание.ИнтервалВремениНапоминания;
|
||||
ПодключитьНапоминание(Напоминание);
|
||||
// Удаляем существующую запись.
|
||||
НаборЗаписей = РегистрыСведений.НапоминанияПользователя.СоздатьНаборЗаписей();
|
||||
НаборЗаписей.Отбор.Пользователь.Установить(ПараметрыНапоминания.Пользователь);
|
||||
НаборЗаписей.Отбор.Источник.Установить(ПараметрыНапоминания.Источник);
|
||||
НаборЗаписей.Отбор.ВремяСобытия.Установить(ПараметрыНапоминания.ВремяСобытия);
|
||||
НаборЗаписей.Записать();
|
||||
|
||||
// Подключаем следующее напоминание по расписанию.
|
||||
СледующаяДатаПоРасписанию = Неопределено;
|
||||
ОпределенаСледующаяДатаПоРасписанию = Ложь;
|
||||
|
||||
Если ПодключатьПоРасписанию И Напоминание <> Неопределено Тогда
|
||||
Расписание = Напоминание.Расписание.Получить();
|
||||
Если Расписание <> Неопределено Тогда
|
||||
Если Расписание.ПериодПовтораДней > 0 Тогда
|
||||
СледующаяДатаПоРасписанию = ПолучитьБлижайшуюДатуСобытияПоРасписанию(Расписание, ПараметрыНапоминания.ВремяСобытия + 1);
|
||||
КонецЕсли;
|
||||
ОпределенаСледующаяДатаПоРасписанию = СледующаяДатаПоРасписанию <> Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Если ОпределенаСледующаяДатаПоРасписанию Тогда
|
||||
Напоминание.ВремяСобытия = СледующаяДатаПоРасписанию;
|
||||
Напоминание.СрокНапоминания = Напоминание.ВремяСобытия - Напоминание.ИнтервалВремениНапоминания;
|
||||
ПодключитьНапоминание(Напоминание);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
ЗафиксироватьТранзакцию();
|
||||
Исключение
|
||||
ОтменитьТранзакцию();
|
||||
ВызватьИсключение;
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
Reference in new issue
Block a user