|
Найти сколько месяцев в интервале дат | ☑ | ||
---|---|---|---|---|
0
Олег
13.09.12
✎
16:16
|
Задался целью узнать колько месяцев между 2-мя датами, чутьё подстазывает что в УПП есть такая функция в общих модулях, но инсайт ударил в голову и родил это, пользуйтесь:
Функция СколькоМесяцев(НачДата, КонДата, ЕдИзмерения) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РАЗНОСТЬДАТ(&НачДата, &КонДата, МЕСЯЦ) КАК Период"; Запрос.Текст = СтрЗаменить(Запрос.Текст, "МЕСЯЦ", ЕдИзмерения); Запрос.УстановитьПараметр("НачДата", НачДата); Запрос.УстановитьПараметр("КонДата", КонДата); Возврат Запрос.Выполнить().Выгрузить()[0].Период; КонецФункции |
|||
1
Лефмихалыч
13.09.12
✎
16:22
|
(0) тебя @Гений1С укусил?
|
|||
2
Олег
13.09.12
✎
16:25
|
(1) Но ведь красиво... :)
|
|||
3
Мимо Проходил
13.09.12
✎
16:25
|
(0) Во сколько см оцениваешь?
|
|||
4
Олег
13.09.12
✎
16:27
|
(3) "см" это сантиметров? ;)
|
|||
5
МихаилМ
13.09.12
✎
16:31
|
те в случае трехзвенки.
чтобы узнать на клиенте потребуется лезть на сервер субд ? вместо того чтобы вычесть колво месяцев и в зависимости от числа месяца отнять еще один. да это задача для школьной информатики на 4 в 10 классе. так что постыдное "красиво" |
|||
6
1C-band
13.09.12
✎
16:33
|
Человек хочет отбить бобло, потраченное на лицензию SQL Server'а. ))
|
|||
7
ptiz
13.09.12
✎
16:35
|
(0) Слабенький запрос: вложенных нет, временных таблиц нет.
|
|||
8
azernot
13.09.12
✎
16:36
|
КоличествохМесяцев = (Год(ДатаОкончания) - Год(ДатаНачала)) * 12 + Месяц(ДатаОкончания) - Месяц(ДатаНачала) + 1;
|
|||
9
Лефмихалыч
13.09.12
✎
16:36
|
(0) в книгу знаний запостить не забудь. Там много статей упомянутого долбодемона типа:
Элегантный способ сложить 1 и 1:
|
|||
10
Олег
13.09.12
✎
16:37
|
(7) Я бы сказал совсем слабый, ни одной таблицы нет.
|
|||
11
Олег
13.09.12
✎
16:37
|
(9) не работает.
при Один = 3.1416; |
|||
12
МихаилМ
13.09.12
✎
16:39
|
(8)
проверьте если ДатаОкончания = ДатаНачала |
|||
13
Бледно Золотистый
13.09.12
✎
16:40
|
(0)Разве между 30.09.2012 и 01.10.2012 1 месяц?
|
|||
14
Лефмихалыч
13.09.12
✎
16:41
|
(11) так я о том и говорю - (12),(13)
|
|||
15
azernot
13.09.12
✎
16:43
|
(12) От задачи зависит. Чисто математически, разумеется должен быть 0. В прикладном смысле - обычно один.
Конечно, тамм неплохо бы ещё и на корректность дат проверить, вдруг начало позже чем конец? |
|||
16
Олег
13.09.12
✎
16:45
|
(15) с Минусом будет.
|
|||
17
Лефмихалыч
13.09.12
✎
16:45
|
кстати, ЕМНИП, это (0) в книге Митичкина описано
|
|||
18
Олег
13.09.12
✎
16:46
|
(17) дома валяется надо глянуть
|
|||
19
Сергей Д
13.09.12
✎
16:48
|
(9) А параметры зачем?
Меня в SAP убивает конструкция: ADD число TO переменная. Т.е. написать переменная = переменная + число считается некошерным? |
|||
20
Лефмихалыч
13.09.12
✎
17:05
|
(19) чукча-писатель?
|
|||
21
ilpar
14.09.12
✎
07:25
|
(0) уверен что такой результат хотел получить?
разность между 21.07 и 02.08 получи и скажи нам |
|||
22
ilpar
14.09.12
✎
07:28
|
так то смешной первый пост :) Похоже на первые шаги студента.
Когда с 1С то дружить стал? |
|||
23
ilpar
14.09.12
✎
07:31
|
Вообще же результат в (0) аналог
Месяц(02.08)- Месяц(21.07) Дату приводите сами к правильному |
|||
24
Эмбеддер
14.09.12
✎
08:06
|
(23) не аналог. сработает неправильно если год один и тот же. у автора работает и в этом случае
|
|||
25
ilpar
14.09.12
✎
08:48
|
Ну так
(Год(02.08)*12+Месяц(02.08))-(Год(21.07)*12+Месяц(21.07)) |
|||
26
ilpar
14.09.12
✎
08:48
|
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение |
|||
27
Олег
14.09.12
✎
10:25
|
А вы так и не поняли что я написал. Я написал как использовать функции реализованные только в языке запросов в модулях, показал вам нетривиальный путь решения задачи, авось кому и пригодится. Не думаю что это сильно загрузит скуль, там и таблицы-то не задействованы, а вот ваша реакция с годами не меняется, как всегда вязнете в мелочах и частности не видя главного.
Впрочем это нормальная реакция социума принимать "в штыки" все непривычное, даже если это непонятное и непривычное всего-навсего: находит "длину" периода между датами в годах, месяцах, неделях, днях, минутах, и секундах, при этом не валит систему, и даже не грузит её сверх меры. ЗЫ: Прошу прощения что не исправил в коде название функции, вы так уткнулись в период в месяцах, что и не заметили что функция универсальна. ЗЗЫ: (22) 1С-ю с 2001 года, на мисте с 2003. |
|||
28
МихаилМ
14.09.12
✎
10:32
|
(27)
вот еще ондин изобретатель велика v8: Новый способ вычислить разницу между датами с учетом произв. календаря а нетривиальность в Вашем случае лишняя |
|||
29
Reset
14.09.12
✎
10:48
|
Затрудняюсь определить, чего больше в посте (27): радости открывшего что-то для себя новичка или глупых понтов
|
|||
30
fisher
14.09.12
✎
11:06
|
(27) Осипов, перелогинтесь.
|
|||
31
Бледно Золотистый
14.09.12
✎
11:09
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |