|
|
|
Как проверить кратность числа? | ☑ | ||
|---|---|---|---|---|
|
0
dmino
04.08.10
✎
12:11
|
Собственно в теме... Вообще проблема такая, необходимо из задаваемой даты вычесть дату документа и сосчитать сколько между ними дней, недель, месяцев или лет...
|
|||
|
1
IronDemon
04.08.10
✎
12:13
|
Дата1-Дата2=количество секунд
|
|||
|
2
John83
04.08.10
✎
12:13
|
вроде так ДЕНЬ НЕДЕЛЯ МЕСЯЦ
|
|||
|
3
aka AMIGO
04.08.10
✎
12:13
|
вычти одно из другого и подели результат на количество секунд в сутках
|
|||
|
4
IronDemon
04.08.10
✎
12:13
|
Дальше сам догадаешься?
|
|||
|
5
Ненавижу 1С
гуру
04.08.10
✎
12:14
|
чему равна единица измерения месяц в более мелких единицах времени?
|
|||
|
6
aka AMIGO
04.08.10
✎
12:15
|
(5) в наносекундах?
|
|||
|
7
Ненавижу 1С
гуру
04.08.10
✎
12:16
|
(6) можно просто в секундах, секунда это базовая вроде бы единица измерения времени
|
|||
|
8
dmino
04.08.10
✎
12:16
|
(5) вот и я о том же ) в месяце разное количество дней!
вот что пока имею СрокДней = (ДатаОкончанияДействия - ЭтотОбъект.Дата)/60/60/24; Если СрокДней < 7 Тогда СрокДействия = СрокДней; ЕдиницаИзмеренияСрокаДействия = Перечисления.ЕдиницыИзмеренияСрокаДействия.День; ИначеЕсли СрокДней>7 и "ДЕЛИТЬСЯ НАЦЕЛО НА 7" Тогда СрокДействия = СрокДней; ЕдиницаИзмеренияСрокаДействия = Перечисления.ЕдиницыИзмеренияСрокаДействия.Неделя; КонецЕсли; |
|||
|
9
Stepa86
04.08.10
✎
12:17
|
РАЗНОСТЬДАТ поюзать предлагаю
|
|||
|
10
Rie
04.08.10
✎
12:18
|
(8) Сначала найди разницу в месяцах (получи годы и месяцы дат, из неё определи, сколько месяцев там будет).
А потом "хвостик" распиши по неделям, дням, часам, минутам и т.д. |
|||
|
11
butterbean
04.08.10
✎
12:18
|
(8) интересное условие "ДЕЛИТЬСЯ НАЦЕЛО НА 7"
|
|||
|
12
Ненавижу 1С
гуру
04.08.10
✎
12:27
|
(11) это псевдокод
|
|||
|
13
dmino
04.08.10
✎
12:36
|
(11) это мысли по поводу реализации :) если нацело, то есть недели.... А функцию разность дат почему то найти не могу...
|
|||
|
14
butterbean
04.08.10
✎
12:37
|
(13) она в запросе
|
|||
|
15
Kashemir
04.08.10
✎
12:54
|
(11) интересное условие "ДЕЛИТЬСЯ НАЦЕЛО НА 7"
= Если СрокДней % 7 = 0 Тогда |
|||
|
16
Kashemir
04.08.10
✎
12:59
|
ВЫБРАТЬ
РАЗНОСТЬДАТ(&ОтДаты, &ДоДаты, ДЕНЬ) КАК Дней, РАЗНОСТЬДАТ(&ОтДаты, &ДоДаты, МЕСЯЦ) КАК Месяцев, РАЗНОСТЬДАТ(&ОтДаты, &ДоДаты, КВАРТАЛ) КАК Кварталов, РАЗНОСТЬДАТ(&ОтДаты, &ДоДаты, ГОД) КАК Лет |
|||
|
17
dmino
04.08.10
✎
13:01
|
РАЗНОСТЬДАТ врет ))) если задать даты от 04/08/2010 до 01/09/2010 Говорит что месяц ) так что не подходит...
(15) Спасибо то что нужно! ) |
|||
|
18
Kashemir
04.08.10
✎
13:02
|
(17) Почему врет ... 09 месяц - 08 месяц = 1
|
|||
|
19
dmino
04.08.10
✎
13:06
|
Ну он ведь не полный...
|
|||
|
20
Kashemir
04.08.10
✎
13:06
|
А что такое полный месяц ? 28 дней ? 29 ? 30 ? 31 ?
|
|||
|
21
dmino
04.08.10
✎
13:07
|
Полный месяц это 4.09 - 4.08...
|
|||
|
22
Rie
04.08.10
✎
13:12
|
(21) У тебя есть Год1 и Год2 - годы дат, есть Месяц1 и Месяц2 - месяцы дат, есть День1 и День2 - дни месяца дат.
ЧислоМесяцевМежду = (Год2-Год1)*12+(Месяц2-Месяц1)-?(День2<День1,1,0); |
|||
|
23
dmino
04.08.10
✎
13:30
|
Нужно выделить только целое... В общем если вдруг кому-нибудь пригодиться такой бред))) вот
СрокДней = (ДатаОкончанияДействия - НачалоДня(ЭтотОбъект.Дата))/60/60/24; Если Год(ДатаОкончанияДействия)<>Год(ЭтотОбъект.Дата) Тогда //Если месяц и день совпали - то раное количество лет Если Месяц(ЭтотОбъект.Дата)=Месяц(ДатаОкончанияДействия) и День(ЭтотОбъект.Дата)=День(ДатаОкончанияДействия) Тогда СрокДействия = Год(ДатаОкончанияДействия)-Год(ЭтотОбъект.Дата); ЕдиницаИзмеренияСрокаДействия = Перечисления.ЕдиницыИзмеренияСрокаДействия.Год; //Если совпал только день - то ровное количество месяцев>12 Иначе Если Месяц(ЭтотОбъект.Дата)<>Месяц(ДатаОкончанияДействия) и День(ЭтотОбъект.Дата)=День(ДатаОкончанияДействия) Тогда СрокДействия = Месяц(ДатаОкончанияДействия)-Месяц(ЭтотОбъект.Дата)+12; ЕдиницаИзмеренияСрокаДействия = Перечисления.ЕдиницыИзмеренияСрокаДействия.Месяц; //Если День не равен проверяем кратность 7, если да то недель, > 12 месяце ИначеЕсли СрокДней % 7 = 0 Тогда СрокДействия = СрокДней / 7; ЕдиницаИзмеренияСрокаДействия = Перечисления.ЕдиницыИзмеренияСрокаДействия.Неделя; //Если и тут нет, то дни... Иначе СрокДействия = СрокДней; ЕдиницаИзмеренияСрокаДействия = Перечисления.ЕдиницыИзмеренияСрокаДействия.День; КонецЕсли//Конец проверки кратности на месяц КонецЕсли//Конец проверки кратности на год //Если год тот же Иначе //Если совпал только день - то равное количество месяцев<12 Если Месяц(ЭтотОбъект.Дата)<>Месяц(ДатаОкончанияДействия) и День(ЭтотОбъект.Дата)=День(ДатаОкончанияДействия) Тогда СрокДействия = Месяц(ДатаОкончанияДействия)-Месяц(ЭтотОбъект.Дата); ЕдиницаИзмеренияСрокаДействия = Перечисления.ЕдиницыИзмеренияСрокаДействия.Месяц; //Если День не равен проверяем кратность 7, если да то недель < 12 месяце ИначеЕсли СрокДней % 7 = 0 Тогда СрокДействия = СрокДней / 7; ЕдиницаИзмеренияСрокаДействия = Перечисления.ЕдиницыИзмеренияСрокаДействия.Неделя; //Если и тут нет, то дни... Иначе СрокДействия = СрокДней; ЕдиницаИзмеренияСрокаДействия = Перечисления.ЕдиницыИзмеренияСрокаДействия.День; КонецЕсли; КонецЕсли; Только ОБЯЗАТЕЛЬНО проверить везде ли при вычислении я поставил начало дня ) |
|||
|
24
Kashemir
04.08.10
✎
13:52
|
(21) С таким подходом 31.08 - 30.09 для тебя будет не полным месяцем
|
|||
|
25
dmino
04.08.10
✎
13:58
|
:(((( мляяяяяяяяя
|
|||
|
26
ASU_Diamond
04.08.10
✎
14:02
|
количество месяцев:
КолвоМесяцев=0; Пока ДобавитьМесяц(НачДата,КолвоМесяцев)<=Кондата Цикл КолвоМесяцев=КолвоМесяцев+1; КонецЦикла; |
|||
|
27
ASU_Diamond
04.08.10
✎
14:04
|
Пока ДобавитьМесяц(НачДата,КолвоМесяцев+1)<=Кондата Цикл
|
|||
|
28
dmino
04.08.10
✎
14:09
|
(26) спасибо, и + условие...
КолвоМесяцев=0; Пока ДобавитьМесяц(НачДата,КолвоМесяцев)=Кондата Цикл КолвоМесяцев=КолвоМесяцев+1; Если НачДата>КонДата Тогда Прервать; КонецЕсли; КонецЦикла; Как то так, чтобы узнать ровное ли количество месяцев... А вообще слишком уж заморочено получилось |
|||
|
29
ASU_Diamond
04.08.10
✎
14:11
|
(28)
Пока ДобавитьМесяц(НачДата,КолвоМесяцев)=Кондата Цикл не верно, ибо зайдет только тогда когда начДата=КонДата |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |