Как в 1с посчитать кол месяцев между двумя датами #143725


#0 by BVM
Как в 1с посчитать кол месяцев между двумя датами. Пример Дата1  04.2005, Дата2 04.2006 КолМес должно быть 12
#1 by Скользящий
#2 by PR
04.2005 - это не дата, это твоя фантазия
#3 by VadimG
Сообщить((ДатаГод(КонДата)-ДатаГод(НачДата))*12+(ДатаМесяц(КонДата)-ДатаМесяц(НачДата)));
#4 by Рупор абсурда
#5 by VadimG
Интересно, что будет быстрей? =) Не лень проверить?
#6 by AeDen
Адаптировал "Золотое сечение"?
#7 by Рупор абсурда
Нет смысла проверять ..., т.к. работает неправильно ...
#8 by VadimG
Это почему? Потому что проверку не сделал, если НачДата > КонДата??
#9 by Рупор абсурда
НачДата='31.01.05'; КонДата='01.02.05';
#10 by VadimG
Тесты показали следующее: 1. Если первая дата равна к примеру 01.01.21, а вторая 01.01.05, то твоя функция виснет в бесконечном цикле. =) (хотя, конечно, и моя выдаёт отрицательное значение). 2. Замер производительности. Дата1 = 01.01.60, Дата2 = 31.12.05. Тест субъективен, конечно, т.к. запускался 1 раз, но всё равно, результат говорит сам за себя. Моя строка отрабатывает за 0,000520, а твоя за 0,000840!
#11 by Пкфте
Далеко копаешь, его функция на простом примере сыпется... ЗЫ Но в БЗ!
#12 by VadimG
Тогда доработаем. Получаем: Сообщить((ДатаГод(КонДата)-ДатаГод(НачДата))*12+(ДатаМесяц(КонДата)-ДатаМесяц(НачДата))-?(ДатаЧисло(КонДата)<ДатаЧисло(НачДата),1,0));
#13 by Рупор абсурда
НачДата='31.01.05'; КонДата='28.02.05';
#14 by smaharbA
#15 by VadimG
Частный случай можно описать.. =) Нуу, давай ещё отдельными инструментами вычислять... =)))
#16 by Рупор абсурда
Ну, не такой уж и частный ...
#17 by КонецЦикла
А я бы копипастнул из ЗиКа... по-тупому
#18 by VadimG
Нарываесся. =) После перекура дам свою доработку =)
#19 by smaharbA
А чем не нравится, простенько и со вкусом...
#20 by Рупор абсурда
а) на порядок медленней б) кое-где может и не заработать в) сертификацию не пройдёт
#21 by VadimG
Наш ответ Чемберлену =)))))
#22 by КонецЦикла
Пепец! Лишь бы в одну строку? :)
#23 by VadimG
Можно и разбить =))
#24 by Рупор абсурда
Разбей ...
#25 by smaharbA
Тогда напрямую через ие, тока ие в самом начале конфы определить На порядок не медленнее, проверь
#26 by VadimG
А зачем? Так тоже ничё..
#27 by VadimG
2SKrin: требую добавления и 21 поста! =)
#28 by DimG
Рупор, а сколько месяцев между 01.01.05 и 30.11.05?
#29 by Рупор абсурда
Что за тупняк? 10, разумеется ...
#30 by DimG
Так и знал. :)) А моя бухша утверждает что 11.
#31 by Рупор абсурда
Ну, объясни ей ...
#32 by Рупор абсурда
НачДата='02.01.05'; КонДата='01.01.05';
#33 by VadimG
Перечитай что я писал в .. =)
#34 by Рупор абсурда
Ну, хорошо ... Давай теперь затестим скорость ...
#35 by VadimG
Гы. =) 1 тест. дата1 = 01.01.60, дата2 = 01.01.05. Результаты: моя за 0,000690, твоя за 0,000609. Супер! =) Жмём руки друг другу?
#36 by 427
Воттттт такой толщины... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ____. . . . . . . . . . . . . . . . .,,,,, . . . . . . . . . . . . . .____ . . . . . . . . . . . . . . ____(. . . . . . . . . . . . . . . , ~~“”. . .””~~, . . . . . . . . / . . . . ) ____ . . . . . . _(____. . . . . . . _________/. . .(O . . . O). . ______/. . . . . . ._____). . . . . (______. . . . . . . . ________{ . . . . . .L . . . . . } _____ . . . . . . ._____) . . . . . . . (____ . . . . . . . / . . . . . . . . . . ______/. . ./. . . . . . .. . . . . . _____). . . . . . . . . (_________ /. . . . . . . . . . .’-, . . . . . . . ,-‘ . . . . . . . . _________) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .``~~~~`` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _________________________________________________________...___________ | ' | ' | ' | ' | ' | ' | ' | ' | ' | ' | ' | ' | ' | ' | ' | ' | ' | ' | ' | ' | ' | ' | ' | ' | ' |' |' |' |' |' |' |' |' |' |' |…'|' |' |' |' |' |' |' |' | |_____1____2____3____ 4_____5____6____7_____8____9____10__...__20____30_|
#37 by Рупор абсурда
Добавишь проверку , проиграешь в скорости ... Да и код твой куда более поганей моего ...
#38 by VadimG
Ты свою функцию то проверял, если ??? В цикле вешается. В курсе? А красивость кода - это личное дело каждого.
#39 by Рупор абсурда
Лгёшь!
#40 by VadimG
Нет. Просто перепутал местами даты. Попробуй Дата1=01.01.05, а дата2=01.01.60. Висяк гарантирую.. =)
#41 by VadimG
+ Рупор, сегодня тяпница, давай не будем уже спорить, а? Или тебе надо, чтобы я признался, что твоё решение оптимизировано для читаемости и скорости работы? Аллилуя! Твоя функция - рулез, а моя - кривая недоделка. Чес слово! =)
#42 by 427
У Ропора толще и длиннее... сдафайся!
#43 by smaharbA
Извини конечно но эти минусы и кучи скобок это лажа...
#44 by VadimG
Я ж смайлы для чего ставил? =) P.S. Закрывайте тему! =)
#45 by smaharbA
А 14 тестировали ?
#46 by smaharbA
Я видел...
#47 by VadimG
Твой монстр выполнялся 87.9%, Рупора - 6.11%, моя - 6% ровно. Делайте выводы.
#48 by Таня-рак
зачОт
#49 by smaharbA
Чего какие проценты, я не понял... ты его что в цикле крутил вместе с созданием объекта ?
#50 by smaharbA
выполняется вместе с зоданием объекта и с выводом сообщения о разнице 6 мсек...
#51 by VadimG
Какой цикл? Твой вариант по определению будет тормозом. Чего спорить то? Скриншот выслать?
#52 by smaharbA
Я не спорю, что за проценты то ? Да и создание объекта недолжно входить в код, это должнобыть определено до(в начале конфы или обработки)
#53 by КонецЦикла
2 Давай для точности прокрути в цикле раз 10000, а создание объекта вынеси оттуда
#54 by VadimG
Конечно! Я субъективно оценил решение в целом, а не отдельные операторы! полностью прав, но у меня сейчас нет времени это сделать. Тело модуля я уже  запостил, так что кто-то из вас может поэкспериментировать.. Результаты в студию!
#55 by Рупор абсурда
>>создание объекта недолжно входить в код Без создания объекта не работает ...
#56 by NS
Где траву раздают?
#57 by NS
О прикол... Это уже в базе знаний... Круто!
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С