Имя: Пароль:
1C
 
Количество недель в месяце
0 pessok
 
11.07.11
11:32
Доброго времени суток. Вот тут подумал, а как бы получить количество недель в месяце? Обходить циклом через НеделяГода, наверное, не самый гибкий вариант. Подскажите, если не сложно.
1 simol
 
11.07.11
11:34
52
2 Murzz
 
11.07.11
11:34
ну это зависит от того, каким днем недели являетяс первый день месяца, и сколько дней в месяце. Надо только зависимость точную найти
3 Sakura
 
11.07.11
11:34
(1) в месяце?!
4 Fragster
 
гуру
11.07.11
11:34
дней в месяце / 7
5 Murzz
 
11.07.11
11:34
(1) скорее уж 4
6 Fragster
 
гуру
11.07.11
11:35
автору учится задавать вопросы. срочно.
7 pessok
 
11.07.11
11:38
(6) насколько невнятно я задал вопрос? :)
мне надо получить количество рабочих недель в месяце. Т.к. в каждом месяце оно разное, где-то 4, где-то 5, а где-то и 6
8 pessok
 
11.07.11
11:38
(2) вот это ближе. Я пока сам не придумаю, как сделать правильно...
9 ice777
 
11.07.11
11:39
(7) 6?  это что-то новое )
10 Sakura
 
11.07.11
11:39
(9) у автора свои, особенные месяцы :)
11 ice777
 
11.07.11
11:40
(8) перебери дни в месяце, никак по-другому.
12 pessok
 
11.07.11
11:41
(11) май 2011 года :) ну да, у меня воскресенье - рабочий день
13 pessok
 
11.07.11
11:41
(10) см (12)
14 pessok
 
11.07.11
11:42
(11) тогда второй вопрос, а как их перебрать?
Для А = Выборка.ВремяНач По Выборка.ВремяКон Цикл
не работает
15 Sakura
 
11.07.11
11:42
(12) Э, и что? Недель больше 4,5 просто по количеству дней быть не может :)
16 pessok
 
11.07.11
11:43
(1) в неделе месяца может быть 2 дня. Посмотри календарик. Май 2011. Посмотри сколько там недель в мае. Не полных недель по 7 дней, а всего недель.
17 pessok
 
11.07.11
11:43
ой, (16) было в ответ на (15)
18 ice777
 
11.07.11
11:44
(13) а пофигу. 31/7 < 5.
кто ясно мыслит- тот ясно излагает )

(16) так и излагай - неполных.
19 acsent
 
11.07.11
11:46
(18) Зачем ты придумал про полные недели?
20 basicm
 
11.07.11
11:46
(7) дык рабочих или просто недель?
21 pessok
 
11.07.11
11:46
(18) каюсь, не догадался, что такое может быть неочевидным. Просто у меня такое сплошь и рядом. Так как правильно перебрать?
22 pessok
 
11.07.11
11:48
(20) так. ставим вопрос ребром. мне просто нужно получить количество _всех_ _полных_ и _неполных_ недель в месяце. Грубо говоря так, как их показывает календарь ОС, 1С и прочее. Т.е. для мая 2011 мне надо получить 5 :) Вот!
23 ice777
 
11.07.11
11:48
(21) Со дня НачалоМесяца() по день КонецМесяца.
фя ДеньНедели
24 ice777
 
11.07.11
11:49
вот тока не пойму, какой расчет может требовать такую инормацию ;)
25 basicm
 
11.07.11
11:50
(22) если в мае 2011 пять недель - то это рабочие недели
26 73
 
11.07.11
11:52
(КонецНедели(КонецМесяца(ТекущаяДата()))+1 - НачалоНедели(НачалоМесяца(ТекущаяДата())))/60/60/24/7
27 pessok
 
11.07.11
11:53
(23) попробуем
(24) специфическая конфа по мерчандайзингу. есть 20 в месяц, надо расчитать сколько их будет за неделю
(25) так я вроде так и писал сначала, но народ не понял про "рабочих недель"...
28 vudo
 
11.07.11
11:54
(0)А вопрос не такой уж и тупой!


Предлагаю:
Функция ОпределениеКвоНедельВМесяце(Дата)

ДатаНачалаМесяца = НачалоМесяца(Дата);

ПервыйНомерНеделиВГоду =  НеделяГода(ДатаНачалаМесяца);
ПоследнийНомерНеделиВГоду = 0;

Для КвоНедель = 1 по 5 Цикл
   РасчетнаяДата = ДатаНачалаМесяца + (КвоНедель * 7)
   Если РасчетнаяДата > КонецМесяца(Дата) Тогда
         Превать;
   КонецЕсли;
   ПоследнийНомерНеделиВГоду = НеделяГода(ДатаНачалаМесяца);
КонецЦикла;

Возврат ПоследнийНомерНеделиВГоду - ПервыйНомерНеделиВГоду ;

КонецФункции

Как-то так! Сам не проверял! Может где ошибки. :) Но идея такая...
29 vudo
 
11.07.11
11:55
ПоследнийНомерНеделиВГоду = НеделяГода(ДатаНачалаМесяца);

читать как


   ПоследнийНомерНеделиВГоду = НеделяГода(РасчетнаяДата);
30 pessok
 
11.07.11
11:56
(23) не хочет он даты по циклу обходить. в семерке, помнится, обходил, в 8-ке не хочет. надо преобразовывать.
(28) спасибо за поддержку, сейчас попробую.
(29) попробую, но опять таки не обходятся даты в цикле :(
31 73
 
11.07.11
11:57
(30) А (26) попробуй...
32 pessok
 
11.07.11
11:59
(31) попробую
(28) 0 возвращает...
33 pessok
 
11.07.11
12:03
(31) (26) работает, спасибо! :) надо записать, елки-палки :)
34 vudo
 
11.07.11
12:04
Я лучше придумал и проверил!
Вот так надо:

(НеделяГода(КонецМесяца(ТекущаяДата())) - НеделяГода(НачалоМесяца(ТекущаяДата())))
35 73
 
11.07.11
12:05
(34) А теперь для декабря или января попробуй...
36 vudo
 
11.07.11
12:07
(35)И что? Я то номер недели последней и начальной даты получаю!
37 pessok
 
11.07.11
12:10
(35) для января работает нормально
38 pessok
 
11.07.11
12:10
(35) да и для декабря тоже
39 vudo
 
11.07.11
12:11
(37)(38)Кто бы сомневался! Удачи!
40 73
 
11.07.11
12:12
Я просто спросил)

ЗЫ. +1 добавить надо в (34)
41 pessok
 
11.07.11
12:15
(40) да, я тоже заметил, иначе с декабрем и январем косяки. я имел ввиду, что по (26) считается правильно :)
42 vudo
 
11.07.11
12:16
(40)И зачем?
Начало месяца может на воскресенье, конечно, припадать, но это же все равно другая неделя.
43 73
 
11.07.11
12:17
(42) Ну посчитай для текущей даты и посмотри в календарь июля...
44 Naumov
 
11.07.11
12:17
НомерНедели(КонПериода) - НомерНедели(НачПериода) ?
45 pessok
 
11.07.11
12:20
(44) НомерНедели? Это что?
46 Naumov
 
11.07.11
12:23
Встроенные функции языка (Script functions)
НеделяГода (WeekOfYear)
Синтаксис:

НеделяГода(<Дата>)
Параметры:

<Дата> (обязательный)

Тип: Дата. Исходная дата.
Возвращаемое значение:

Тип: Число. Номер недели в году.
Описание:

Определяет номер недели в году для указанной даты.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Пример:

Сообщить(НеделяГода(ТекущаяДата()));
47 Naumov
 
11.07.11
12:24
Ну не помню точное название функции
48 73
 
11.07.11
12:25
Это то же, что и (34). +1 тоже надо.
49 vudo
 
11.07.11
12:27
(43)(48) Точно! +1 обязательно надо!

[code]
НеделяГода(КонецМесяца(ТекущаяДата())) - НеделяГода(НачалоМесяца(ТекущаяДата())) + 1

[/code]
50 pessok
 
11.07.11
12:29
(49) угу. с этим расправился, щас создам новую тему, это только часть гемморроя моего :)
51 pessok
 
11.07.11
12:30
Еще раз спасибо всем откликнувшемся!
Независимо от того, куда вы едете — это в гору и против ветра!