Есть запрос, который получает график платежей (рис.1) .
Дата платежа формируется от периода затрат, способа платежа и указанного пользователем числа оплаты.
Данный механизм работает, но в случае, если указать число 30 или 31, то, соответственно, проблемы с февралем, и вместо, например, 29.02.2018 формируется дата 02.03.2018.
Вот как избежать такой момент в запросе?
Дата платежа формируется от периода затрат, способа платежа и указанного пользователем числа оплаты.
ВЫБОР
КОГДА Итог_Вт.СпособОплаты = &СпособОплатыДоНачалаОП
ТОГДА ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(Итог_Вт.ПериодЗатрат.ПериодЗатрат, МЕСЯЦ, -1), ДЕНЬ, &СрокОплаты - 1)
ИНАЧЕ ВЫБОР
КОГДА Итог_Вт.СпособОплаты = &СпособОплатыСНачалаОП
ТОГДА ДОБАВИТЬКДАТЕ(Итог_Вт.ПериодЗатрат.ПериодЗатрат, ДЕНЬ, &СрокОплаты - 1)
ИНАЧЕ ВЫБОР
КОГДА Итог_Вт.СпособОплаты = &СпособОплатыПослеНачалаОП
ТОГДА ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(Итог_Вт.ПериодЗатрат.ПериодЗатрат, МЕСЯЦ, 1), ДЕНЬ, &СрокОплаты - 1)
КОНЕЦ
КОНЕЦ
КОНЕЦ
ПоказатьДанный механизм работает, но в случае, если указать число 30 или 31, то, соответственно, проблемы с февралем, и вместо, например, 29.02.2018 формируется дата 02.03.2018.
Вот как избежать такой момент в запросе?
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
(7) я же написал тебе
ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ПериодЗатрат, МЕСЯЦ, 1), ДЕНЬ, - 1);
Если у тебя в периоде 1 февраля, то она добавит месяц - получит 1 марта, потом отнимет 1 день, получит 29, или 28 февраля, смотря какой високосный или нет год.
т.е. не с количеством дней нужно заморачиваться, сколько прибавлять...а наоборот, отнимать 1 день, от первого числа следующего месяца.
А с календарем, система сама разберется
ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ПериодЗатрат, МЕСЯЦ, 1), ДЕНЬ, - 1);
Если у тебя в периоде 1 февраля, то она добавит месяц - получит 1 марта, потом отнимет 1 день, получит 29, или 28 февраля, смотря какой високосный или нет год.
т.е. не с количеством дней нужно заморачиваться, сколько прибавлять...а наоборот, отнимать 1 день, от первого числа следующего месяца.
А с календарем, система сама разберется
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) вопрос то методологический.
Если вы указываете срок оплаты 31 день, то она как должна считать ? 31 это обозначает сутки, или календарный месяц ? Что это вообще за параметр , откуда он берется ? Период затрат - я так понимаю, всегда первое число месяца так ?
С апрелем такая же проблема будет, там 30 дней, а у вас указано 31..получим 1 мая.
Если вы указываете срок оплаты 31 день, то она как должна считать ? 31 это обозначает сутки, или календарный месяц ? Что это вообще за параметр , откуда он берется ? Период затрат - я так понимаю, всегда первое число месяца так ?
С апрелем такая же проблема будет, там 30 дней, а у вас указано 31..получим 1 мая.
(3) Да, действительно. Здесь будут проблемы и с 31м числом. Суть в том, что оплата должна быть, например, каждого 31 числа каждого месяца Тогда получается, с месяцами, где 30 дней, например, взять апрель, при сроке оплаты - 31, дата оплаты 30.04.2018.
И вот как это в запросе написать..
И вот как это в запросе написать..
(7) я же написал тебе
ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ПериодЗатрат, МЕСЯЦ, 1), ДЕНЬ, - 1);
Если у тебя в периоде 1 февраля, то она добавит месяц - получит 1 марта, потом отнимет 1 день, получит 29, или 28 февраля, смотря какой високосный или нет год.
т.е. не с количеством дней нужно заморачиваться, сколько прибавлять...а наоборот, отнимать 1 день, от первого числа следующего месяца.
А с календарем, система сама разберется
ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ПериодЗатрат, МЕСЯЦ, 1), ДЕНЬ, - 1);
Если у тебя в периоде 1 февраля, то она добавит месяц - получит 1 марта, потом отнимет 1 день, получит 29, или 28 февраля, смотря какой високосный или нет год.
т.е. не с количеством дней нужно заморачиваться, сколько прибавлять...а наоборот, отнимать 1 день, от первого числа следующего месяца.
А с календарем, система сама разберется
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот