Отключить напоминание. Отключает напоминание, если оно есть. Если напоминание периодическое, подключает его на ближайшую дату по расписанию.
// Отключает напоминание, если оно есть. Если напоминание периодическое, подключает его на ближайшую дату по расписанию.
Процедура ОтключитьНапоминание(ПараметрыНапоминания, ПодключатьПоРасписанию = Истина) Экспорт
// ищем существующую запись
Запрос = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
| НапоминанияПользователя.Пользователь КАК Пользователь,
| НапоминанияПользователя.ВремяСобытия КАК ВремяСобытия,
| НапоминанияПользователя.Источник КАК Источник,
| НапоминанияПользователя.СрокНапоминания КАК СрокНапоминания,
| НапоминанияПользователя.Описание КАК Описание,
| НапоминанияПользователя.СпособУстановкиВремениНапоминания КАК СпособУстановкиВремениНапоминания,
| НапоминанияПользователя.Расписание КАК Расписание,
| НапоминанияПользователя.ИнтервалВремениНапоминания КАК ИнтервалВремениНапоминания,
| НапоминанияПользователя.ИмяРеквизитаИсточника КАК ИмяРеквизитаИсточника,
| НапоминанияПользователя.Идентификатор КАК Идентификатор
|ИЗ
| РегистрСведений.НапоминанияПользователя КАК НапоминанияПользователя
|ГДЕ
| НапоминанияПользователя.Пользователь = &Пользователь
| И НапоминанияПользователя.ВремяСобытия = &ВремяСобытия
| И НапоминанияПользователя.Источник = &Источник";
Запрос.УстановитьПараметр("Пользователь", ПараметрыНапоминания.Пользователь);
Запрос.УстановитьПараметр("ВремяСобытия", ПараметрыНапоминания.ВремяСобытия);
Запрос.УстановитьПараметр("Источник", ПараметрыНапоминания.Источник);
Запрос.Текст = ТекстЗапроса;
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Напоминание = Неопределено;
Если РезультатЗапроса.Количество() > 0 Тогда
Напоминание = РезультатЗапроса[0];
КонецЕсли;
// Удаляем существующую запись.
НаборЗаписей = РегистрыСведений.НапоминанияПользователя.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Пользователь.Установить(ПараметрыНапоминания.Пользователь);
НаборЗаписей.Отбор.Источник.Установить(ПараметрыНапоминания.Источник);
НаборЗаписей.Отбор.ВремяСобытия.Установить(ПараметрыНапоминания.ВремяСобытия);
НаборЗаписей.Очистить();
НаборЗаписей.Записать();
СледующаяДатаПоРасписанию = Неопределено;
ОпределенаСледующаяДатаПоРасписанию = Ложь;
// Подключаем следующее напоминание по расписанию.
Если ПодключатьПоРасписанию И Напоминание <> Неопределено Тогда
Расписание = Напоминание.Расписание.Получить();
Если Расписание <> Неопределено Тогда
Если Расписание.ПериодПовтораДней > 0 Тогда
СледующаяДатаПоРасписанию = ПолучитьБлижайшуюДатуСобытияПоРасписанию(Расписание, ПараметрыНапоминания.ВремяСобытия + 1);
КонецЕсли;
ОпределенаСледующаяДатаПоРасписанию = СледующаяДатаПоРасписанию <> Неопределено;
КонецЕсли;
Если ОпределенаСледующаяДатаПоРасписанию Тогда
Напоминание.ВремяСобытия = СледующаяДатаПоРасписанию;
Напоминание.СрокНапоминания = Напоминание.ВремяСобытия - Напоминание.ИнтервалВремениНапоминания;
ПодключитьНапоминание(Напоминание);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПодключитьПроизвольноеНапоминание (БСП)
ОтключитьНебезопасноеСодержимое (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)