|
|
|
Сколько месяцев (кварталов, лет) в периоде. Нет стандартной функции? | ☑ | ||
|---|---|---|---|---|
|
0
zalexey
22.02.08
✎
23:40
|
Понадобилось вот узнать сколько месяцев в заданном периоде. Не нашел ничего стандартного. В типовой УТ вообще считают, что в месяце 28 дней :))
Искал-искал не нашел. Написал свою, вот думаю может зря велосипед изобретал. |
|||
|
1
MTM777
22.02.08
✎
23:54
|
(0) мне тоже пришлось изобретать на похожую тему, типа:
передается период, и я должен понять еденицу измерения переданного периода - в секундах, минутах, часах, днях, месяцах, годах или ваще в веках))) так шо правильно сделал!! |
|||
|
2
MaxS
23.02.08
✎
08:11
|
А это не подойдёт?
Особенности функции языка запросов РАЗНОСТЬДАТ Функция языка запросов РАЗНОСТЬДАТ предназначена для получения разницы между двумя датами в указанных единицах измерения. Синтаксис функции выглядит следующим образом: РАЗНОСТЬДАТ(<Выражение>, <Выражение>, Секунда | Минута | Час | День | Месяц | Квартал | Год) В качестве первого параметра передается выражение, значение которого необходимо вычесть из значения второго параметра. В качестве второго параметра функции передается выражение, из которого необходимо вычесть значение первого параметра. Третий параметр содержит единицу измерения, в которой необходимо получить результат функции. В качестве третьего параметра можно использовать следующие значения: Секунда, Минута, Час, День, Месяц, Квартал, Год. При расчете результата функция игнорирует единицы измерения, которые меньше, чем указанная в данном параметре единица. Например, если в качестве третьего параметра указать Час, то при расчете результата будут игнорироваться минуты и секунды, присутствующие в первых двух параметрах. Если же в третьем параметре указать Месяц, то игнорироваться будут дни, часы, минуты и секунды. |
|||
|
3
DimG
23.02.08
✎
10:26
|
В 7.7 в зике была такая в глобальнике, мож в 8 тоже есть. На крайняк переделать по образцу можно.
|
|||
|
4
zalexey
23.02.08
✎
21:56
|
(2) Функция языка запросов РАЗНОСТЬДАТ
это для ЗАПРОСА!!! Что запрос фигачить для этих целей? Хотя вариант :) Выкладываю свою может кому пригодится. Если можно оптимизировать пишите. Особо не напрягался этим. Да, и возвращает она не целое количество месяцев, т.к. мне именно так надо было получить, но можно немного откорректировать и получите количество полных месяцев или окргуленное число месяцев. Функция ПолучитьКоличествоМесяцевВПериоде(НачалоПериода, КонецПериода) Экспорт // Определяем количество месяце в периоде КоличествоМесяцев = 0; ВременнаяДата = НачалоПериода; Пока ВременнаяДата < КонецДня(КонецПериода) Цикл Если КонецДня(ДобавитьМесяц(ВременнаяДата,1)) <= КонецДня(КонецПериода) Тогда КоличествоМесяцев = КоличествоМесяцев + 1; ВременнаяДата = ДобавитьМесяц(ВременнаяДата,1); Иначе // Проверим, что даты в одном месяце Если Месяц(ВременнаяДата) = Месяц(КонецПериода) Тогда КоличествоДнейВМесяце = (КонецМесяца(КонецПериода) - НачалоМесяца(КонецПериода)+1)/86400; КоличествоДнейВПериоде = (КонецДня(КонецПериода)-НачалоДня(ВременнаяДата)+1)/86400; КоличествоМесяцев = КоличествоМесяцев + Окр(КоличествоДнейВПериоде/КоличествоДнейВМесяце,2); Иначе КоличествоДнейВМесяце_1 = (КонецМесяца(ВременнаяДата) - НачалоМесяца(ВременнаяДата)+1)/86400; КоличествоДнейВПериоде_1 = (КонецМесяца(ВременнаяДата)-НачалоДня(ВременнаяДата)+1)/86400; КоличествоДнейВМесяце_2 = (КонецМесяца(КонецПериода) - НачалоМесяца(КонецПериода)+1)/86400; КоличествоДнейВПериоде_2 = (КонецДня(КонецПериода)-НачалоМесяца(КонецПериода)+1)/86400; КоличествоМесяцев = КоличествоМесяцев + Окр(КоличествоДнейВПериоде_1/КоличествоДнейВМесяце_1 + КоличествоДнейВПериоде_2/КоличествоДнейВМесяце_2,2); КонецЕсли; Прервать; КонецЕсли; КонецЦикла; Возврат КоличествоМесяцев; КонецФункции |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |