![]() |
|
вычесть месяца | ☑ | ||
---|---|---|---|---|
0
Nst
16.01.25
✎
13:02
|
Здравствуйте всем. пожалуйста, подскажите
ситуация такая - нужно вычесть месяца МояПеременная = Месяц(Выборка.ДатаПоказания) - Месяц(Выборка.ДатаПредыдущегоПоказания); например, моя переменная = месяц(15.01.25) - месяц(04.09.24) равно -8, но по факту прошло же 3 месяца, а не 8. как сделать правильный расчет, подскажите? |
|||
1
Волшебник
16.01.25
✎
13:03
|
РазницаМес = (ДатаПоказания - ДатаПредыдущегоПоказания) / 86400 / 30;
|
|||
2
Буковка
16.01.25
✎
13:04
|
(0) выспользуйтесь отладкой и пропишите условие на случай, если одна/обе даты не заполнены
|
|||
3
arsik
гуру
16.01.25
✎
13:07
|
(0)(1) РазницаМес = (Год(ДатаПоказания)*12 + Месяц(ДатаПоказания)) - (Год(ДатаПредыдущегоПоказания)*12 + Месяц(ДатаПредыдущегоПоказания))
|
|||
4
Fedor-1971
16.01.25
✎
13:08
|
(0) Если уже использованы запросы, то РазностьДат(ххх, ууу, Месяц) - и не парься
|
|||
5
Волшебник
16.01.25
✎
13:11
|
(3) или так
|
|||
6
KJlag
16.01.25
✎
13:20
|
РазницаСек = ДатаПоказания - ДатаПредыдущегоПоказания;
РасчетнаяДата = Дата(1,1,1,0,0,0) + РазницаСек; РазницаМес = (Год(РасчетнаяДата)-1)*12 + Месяц(РасчетнаяДата); |
|||
7
Ненавижу 1С
гуру
16.01.25
✎
13:30
|
МояПеременная = (Год(Выборка.ДатаПоказания) - Год(Выборка.ДатаПредыдущегоПоказания))*12 + Месяц(Выборка.ДатаПоказания) - Месяц(Выборка.ДатаПредыдущегоПоказания)
|
|||
8
Asmody
16.01.25
✎
13:37
|
(0) (7) сколько месяцев прошло между 29.02.2024 и 28.02.2023?
|
|||
9
Михаил Козлов
16.01.25
✎
13:41
|
(7) Ещё от дней даты зависит. Для (0): (2025-2024)*12+1-9=4, а полных месяцев 3.
|
|||
10
Elf_80_lvl
16.01.25
✎
13:50
|
(0) Функция месяц(Дата) возвращает номер месяца из даты.
Поэтому и получается: месяц(15.01.25) = 1 месяц(04.09.24) = 9 Ну и разница 8 А то что тебе нужно (1) или (3) |
|||
11
Волшебник
16.01.25
✎
13:49
|
(10) разница "-8"
|
|||
12
Ненавижу 1С
гуру
16.01.25
✎
13:56
|
(8) а сколько между 31.12.24 и 01.01.25?
|
|||
13
Волшебник
16.01.25
✎
14:02
|
(12) где-то от 0 до 1, точнее 0,033(3)
|
|||
14
Ненавижу 1С
гуру
16.01.25
✎
14:06
|
(13) чтобы начать говорить о точном значении надо определиться с единицей измерения "месяц", а это очень неоднозначно
|
|||
15
arsik
гуру
16.01.25
✎
14:17
|
Судя по контексту, показания числятся в том месяце, в котором поданы. Тем более у нас например показания с 15 по 25 принимают.
|
|||
16
Nst
16.01.25
✎
14:21
|
спасибо, помог (1)
этот вариант подходящий, т.к получается на моем примере, что между сентябрем и январем прошло 3 месяца (октябрь, ноябрь, декабрь) |
|||
17
arsik
гуру
16.01.25
✎
14:25
|
(16) Вообще то 4 месяца. если уж так
09-10 - 1 месяц 10-11 - 1 месяц 11-12 - 1 месяц 12-01 - 1 месяц |
|||
18
Волшебник
16.01.25
✎
14:24
|
(16) 🤦 но моя формула выдаёт 4,43
|
|||
19
Fedor-1971
16.01.25
✎
14:40
|
(16) Что есть Выборка из "Выборка.ДатаПоказания"? Если результат запроса, то сразу подготовь как в (4), будет ещё одно поле, например, РазностьДат(Таб.ДатаПредыдущегоПоказания, Таб.ДатаПоказания, Месяц) КАК КолМесяцев (вместо Таб подставь что там у тебя в запросе)
И пустые даты сможешь обработать там же |
|||
20
Михаил Козлов
16.01.25
✎
15:20
|
(17) 12-01 - неполный месяц. Формально 0.
|
|||
21
KJlag
16.01.25
✎
15:24
|
(20) учитывая что там 15.01.25 и 04.09.24, то 12-01 - полный месяц, а вот 01-02 не полный и с 05.01 по 15.01 - откидываем
|
|||
22
Михаил Козлов
16.01.25
✎
17:25
|
(21) А с 04.09.2024 по 30.09.2024 тоже нужно откинуть?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |