|  | вычесть месяца 
 Михаил Козлов, _alex1974 , Волшебник , Fedor-1971 , arsik , comp2006 , Dotoshin , Гость из Мариуполя , Prog_man , Dedal , mikecool , obs191 , Elf_80_lvl , ALCAPONA , kvark5d , zenik , CepeLLlka , okmail , DiMel_77 , Масянька , dedmoroz777 , AlexKimp , Шурик71 , KJlag , PuhUfa , Tarlich , Доминошник , viraboy , d4rkmesa , rozz , Кирпич , Seriy_Volk , ass1c , Бычье сердце , mmg , Jackman , b_ru , АгентБезопаснойНацио , LRK , ads55 , yurikmellon2 , Rovan , Mr_Boogie , Ненавижу 1С , alex73 , Timon1405 , Saval1986 , D3O , Nst , laeg , TStan , Мультук , Pprog151713 , Homer , maxab72 , FormatC , Krendel , igouranga , RVN , программистище , Джордж1 , Builder , новичекВ1С , nick86 , kir-g , alexela , rbcvg , DimR_71 , takefive , Lama12 , backfire , Многолетний Апельсин , boozin , SleepyHead , Asmody , formista2000 , qwerty , vbus , Kongo2019 , Никита М , Забияка , El_Duke , 2S , Gucci76 , scanduta , Буковка , _Batoo | ☑ | 
    
        | 0
    
        Nst   naïve 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   naïve 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 тоже нужно откинуть?     |  |