Периодические напоминания каждый месяц и каждую неделю
Как сделать так, чтобы свойство "интервал повтора" Доставляемого уведомления срабатывал каждый месяц (например в четверг 05.12.2019 13:00:00 ставим периодическое напоминание) и как сделать так ,чтобы каждое 5-ое число каждого месяца срабатывало уведомление? Если просто секунды добавлять, то уведомления будут приходить и не в те же дни, так как в месяце может быть 30,31 а то и 28 дней.
И ещё. В тот же четверг хотим создать периодическое напомание, чтобы каждый вторник в 10:00 срабатывало уведомление. Как это лучше сделать?
И ещё. В тот же четверг хотим создать периодическое напомание, чтобы каждый вторник в 10:00 срабатывало уведомление. Как это лучше сделать?
По теме из базы знаний
- "Процессы 3.0: CRM, Бизнес-процессы, Управление по целям". Универсальная система управления процессами и показателями для любой конфигурации 1С
- FAQ: Продажа собственного программного обеспечения - теория и практика
- Интеграция сценарного тестирования в процесс разработки
- Конфигурация Flowcon: Набор инструментов для управления задачами, проектами и бизнесом в 1С
- Не спеша, эффективно и правильно – путь разработки. Часть 3. Практика
Найденные решения
(15) указывается именно дата с учетом часового пояса, получить ее можно с помощью функции УниверсальноеВремя
Т.е. ближайший вторник это завтра, получаем дату УниверсальноеВремя('20191210100000')
Если нужно создать в четверг 12.12.2019 на вторник, то получаем дату УниверсальноеВремя('20191217100000')
Если ДеньНедели<=2 тогда
ДеньБлижайшегоВторника = НачалоДня(ТекущаяДата())+86400*(7-(ДеньНедели+5));
Иначе
ДеньБлижайшегоВторника = НачалоДня(ТекущаяДата())+86400*(7-(ДеньНедели-2));
КонецЕсли
Т.е. ближайший вторник это завтра, получаем дату УниверсальноеВремя('20191210100000')
Если нужно создать в четверг 12.12.2019 на вторник, то получаем дату УниверсальноеВремя('20191217100000')
Если ДеньНедели<=2 тогда
ДеньБлижайшегоВторника = НачалоДня(ТекущаяДата())+86400*(7-(ДеньНедели+5));
Иначе
ДеньБлижайшегоВторника = НачалоДня(ТекущаяДата())+86400*(7-(ДеньНедели-2));
КонецЕсли
Вот как раз что бы добавить Месяц или несколько, существует функция
Глобальный контекст (Global context)
ДобавитьМесяц (AddMonth)
Синтаксис:
ДобавитьМесяц(<Дата>, <ЧислоМесяцев>)
Параметры:
<Дата> (обязательный)
Тип: Дата.
Исходная дата.
<ЧислоМесяцев> (обязательный)
Тип: Число.
Количество месяцев, которое необходимо добавить к исходной дате. Если принимает отрицательное значение, то число месяцев вычитается.
Возвращаемое значение:
Тип: Дата.
Дата, полученная в результате добавления.
Описание:
Добавляет (или вычитает) к указанной дате заданное число месяцев.
Глобальный контекст (Global context)
ДобавитьМесяц (AddMonth)
Синтаксис:
ДобавитьМесяц(<Дата>, <ЧислоМесяцев>)
Параметры:
<Дата> (обязательный)
Тип: Дата.
Исходная дата.
<ЧислоМесяцев> (обязательный)
Тип: Число.
Количество месяцев, которое необходимо добавить к исходной дате. Если принимает отрицательное значение, то число месяцев вычитается.
Возвращаемое значение:
Тип: Дата.
Дата, полученная в результате добавления.
Описание:
Добавляет (или вычитает) к указанной дате заданное число месяцев.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вот как раз что бы добавить Месяц или несколько, существует функция
Глобальный контекст (Global context)
ДобавитьМесяц (AddMonth)
Синтаксис:
ДобавитьМесяц(<Дата>, <ЧислоМесяцев>)
Параметры:
<Дата> (обязательный)
Тип: Дата.
Исходная дата.
<ЧислоМесяцев> (обязательный)
Тип: Число.
Количество месяцев, которое необходимо добавить к исходной дате. Если принимает отрицательное значение, то число месяцев вычитается.
Возвращаемое значение:
Тип: Дата.
Дата, полученная в результате добавления.
Описание:
Добавляет (или вычитает) к указанной дате заданное число месяцев.
Глобальный контекст (Global context)
ДобавитьМесяц (AddMonth)
Синтаксис:
ДобавитьМесяц(<Дата>, <ЧислоМесяцев>)
Параметры:
<Дата> (обязательный)
Тип: Дата.
Исходная дата.
<ЧислоМесяцев> (обязательный)
Тип: Число.
Количество месяцев, которое необходимо добавить к исходной дате. Если принимает отрицательное значение, то число месяцев вычитается.
Возвращаемое значение:
Тип: Дата.
Дата, полученная в результате добавления.
Описание:
Добавляет (или вычитает) к указанной дате заданное число месяцев.
(9)Я правда на месяц не пробовал. Но вот в чём дело, это можно сделать элементарно с периодическим регистром и с проверкой при начале работы приложения. А вот с уведомлением на месяцы вперед интересно, я пробовал максимум на сутки вперед. Вроде и на месяц должно и на год. Ведь за напоминашки в локальных уведомлениях уже сама ос Андроид отвечает.
Отпишитесь если попробуете, очень интересно.
Отпишитесь если попробуете, очень интересно.
(10)каждый месяц делать не проблема и каждый день сделать не проблема.Для каждого месяца функция "ДобавитьМесяц", а для периодического напоминания каждый день,просто добавляем 86400 секунд.
С периодическим РС не то, потому что не при начале работе должны приходить уведомления, а независимо от того, запущено приложение или нет
С периодическим РС не то, потому что не при начале работе должны приходить уведомления, а независимо от того, запущено приложение или нет
(12)Вот пример:
&НаКлиенте
Процедура ЛокальноеУведомление(Команда)
#Если МобильноеПриложениеКлиент Тогда
Уведомление = Новый ДоставляемоеУведомление;
Уведомление.Заголовок = "Тестовое сообщение!!";
Уведомление.ДатаПоявленияУниверсальноеВремя = УниверсальноеВремя(ТекущаяДата()+3);
Сработает через три секунды после нажатия кнопки если приложение свернуто
Уведомление.Текст = "Текущее время: " +ТекущаяДата();
Уведомление.ЗвуковоеОповещение=ЗвуковоеОповещение.ПоУмолчанию;
ДоставляемыеУведомления.ДобавитьЛокальноеУведомление(Уведомление);
#КонецЕсли
КонецПроцедуры
// ПриНачалеРаботыСистемы() и ПриПолученииУведомления прописываются в модуле управляемого приложения
Процедура ПриНачалеРаботыСистемы()
#Если МобильноеПриложениеКлиент Тогда
ДоставляемыеУведомления.ПодключитьОбработчикУведомлений("ПриПолученииУведомления");
#КонецЕсли
КонецПроцедуры
//Эта фигня отрабатывает при получении уведомления даже если приложение свернуто
//пихать в ПриНачалеРаботыСистемы()
Процедура ПриПолученииУведомления(Уведомление, Локальное, Показано, Параметры) Экспорт
Если Локальное Тогда
Сообщить("бла бла бла");
//Сигнал();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЛокальноеУведомление(Команда)
#Если МобильноеПриложениеКлиент Тогда
Уведомление = Новый ДоставляемоеУведомление;
Уведомление.Заголовок = "Тестовое сообщение!!";
Уведомление.ДатаПоявленияУниверсальноеВремя = УниверсальноеВремя(ТекущаяДата()+3);
Сработает через три секунды после нажатия кнопки если приложение свернуто
Уведомление.Текст = "Текущее время: " +ТекущаяДата();
Уведомление.ЗвуковоеОповещение=ЗвуковоеОповещение.ПоУмолчанию;
ДоставляемыеУведомления.ДобавитьЛокальноеУведомление(Уведомление);
#КонецЕсли
КонецПроцедуры
// ПриНачалеРаботыСистемы() и ПриПолученииУведомления прописываются в модуле управляемого приложения
Процедура ПриНачалеРаботыСистемы()
#Если МобильноеПриложениеКлиент Тогда
ДоставляемыеУведомления.ПодключитьОбработчикУведомлений("ПриПолученииУведомления");
#КонецЕсли
КонецПроцедуры
//Эта фигня отрабатывает при получении уведомления даже если приложение свернуто
//пихать в ПриНачалеРаботыСистемы()
Процедура ПриПолученииУведомления(Уведомление, Локальное, Показано, Параметры) Экспорт
Если Локальное Тогда
Сообщить("бла бла бла");
//Сигнал();
КонецЕсли;
КонецПроцедуры
(12) из описания свойства "ИнтервалПовтора" следует, что сначала нужно в ДатаПоявленияУниверсальноеВремя указать дату ближайшего вторника 10.00, а в свойстве "ИнтервалПовтора" указать 86400*7 для Андроид и любое значение с 86401 - 604800 для иОС
ИнтервалПовтора (RepeatInterval)
Использование:
Чтение и запись.
Описание:
Тип: Число.
Период времени в секундах, через который вызов локального уведомления повторяется.
Чтобы уведомление было повторено, следует в явном виде указать время первого срабатывания.
Использование:
Чтение и запись.
Описание:
Тип: Число.
Период времени в секундах, через который вызов локального уведомления повторяется.
Чтобы уведомление было повторено, следует в явном виде указать время первого срабатывания.
(14)как указать дату ближайшего вторника? например в четверг я создам напоминание на 10:00 вторника, в пятницу на 11:00 вторника. Как ДатаПоявленияУниверсальноеВремя указать вторник?
В 1С есть функция ДеньНедели, но пока не представляю как может помочь эта функция
В 1С есть функция ДеньНедели, но пока не представляю как может помочь эта функция
(15) указывается именно дата с учетом часового пояса, получить ее можно с помощью функции УниверсальноеВремя
Т.е. ближайший вторник это завтра, получаем дату УниверсальноеВремя('20191210100000')
Если нужно создать в четверг 12.12.2019 на вторник, то получаем дату УниверсальноеВремя('20191217100000')
Если ДеньНедели<=2 тогда
ДеньБлижайшегоВторника = НачалоДня(ТекущаяДата())+86400*(7-(ДеньНедели+5));
Иначе
ДеньБлижайшегоВторника = НачалоДня(ТекущаяДата())+86400*(7-(ДеньНедели-2));
КонецЕсли
Т.е. ближайший вторник это завтра, получаем дату УниверсальноеВремя('20191210100000')
Если нужно создать в четверг 12.12.2019 на вторник, то получаем дату УниверсальноеВремя('20191217100000')
Если ДеньНедели<=2 тогда
ДеньБлижайшегоВторника = НачалоДня(ТекущаяДата())+86400*(7-(ДеньНедели+5));
Иначе
ДеньБлижайшегоВторника = НачалоДня(ТекущаяДата())+86400*(7-(ДеньНедели-2));
КонецЕсли
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот