Имя: Пароль:
1C
1С v8
Вычисление номера недели в году
0 pavlushov
 
10.06.16
12:36
Народ! Поделитесь пожалуйста функцией для вычисления номера недели в году по указанной дате, встроенную функцию НеделяГода() не предлагать, она считает начиная с первого дня в году а надо исходя из правила: первой рабочей неделей года считается та, на которую выпадает первый четверг года (или 4 января, если хотите).
1 DDwe
 
10.06.16
12:38
(0) Написать тяжело? Будем сидеть и ждать пока кто-то подаст?
2 Arya Stark
 
10.06.16
12:40
первой рабочей неделей года считается та, на которую выпадает первый четверг года.

Вот у вас Евреев и с Пасхой все не так. как не щапрограммирована ситсемная функция - делайте календари. в ам в помощь
3 Arya Stark
 
10.06.16
12:41
Календари, и к ним регистр значений - или свой календарь придумывайте из 750 суток и не насилуйте 1с
4 pavlushov
 
10.06.16
12:42
(1) ага
5 DDwe
 
10.06.16
12:43
(4) Писать одну строчку. Шесть лет на форуме бамбук курил? Программисты мля.
6 Arya Stark
 
10.06.16
12:45
Пятница!!!
7 DDwe
 
10.06.16
12:52
Ну, времени с открытия темы прошло достаточно, написать, отладить, проверить, продать. Тему можно закрывать ))
8 Arya Stark
 
10.06.16
12:55
DDwe - монголия какая по счету республика?
9 Чайник Рассела
 
10.06.16
12:56
по какому стандарту? Европейскому?
10 Чайник Рассела
 
10.06.16
12:57
Функция ЕвропейскаяНеделяГода(дНужнаяДата) ЭКСПОРТ
Если НЕ ЗначениеЗаполнено(дНужнаяДата) Тогда
   Возврат 0;
КонецЕсли;
чДеньНеделиНачалаГода = ДеньНедели(НачалоГода(дНужнаяДата));
Если чДеньНеделиНачалаГода <= 4 Тогда
   чСмещение = 0;
Иначе
   чСмещение = 1;
КонецЕсли;
чЕвропейскаяНеделя = НеделяГода(дНужнаяДата) - чСмещение;
Если чЕвропейскаяНеделя = 0 Тогда
   Возврат НеделяГода(НачалоГода(дНужнаяДата) - 1);
Иначе
   Возврат чЕвропейскаяНеделя;
КонецЕсли;
КонецФункции
11 Arya Stark
 
10.06.16
13:00
да кто ж вас так заставил коверкать имена переменных? в институе дельфи преподавали?
12 Чайник Рассела
 
10.06.16
13:01
(11) Завидуйте молча, мусье
13 DDwe
 
10.06.16
13:02
(10)Вот это зачем

"Если чЕвропейскаяНеделя = 0 Тогда
   Возврат НеделяГода(НачалоГода(дНужнаяДата) - 1);
Иначе" ?
14 DDwe
 
10.06.16
13:02
(11) +100500
15 Arya Stark
 
10.06.16
13:05
Если НЕ ЗначениеЗаполнено(дНужнаяДата) Тогда
   Возврат 0;
КонецЕсли;

я уже тут отсановился компилировать - функция явно выдает ложный результат
16 Arya Stark
 
10.06.16
13:06
и конечно же она должна быть ЭКСПОРТ
17 DDwe
 
10.06.16
13:06
(16) А как же без этого )))
18 Arya Stark
 
10.06.16
13:10
ты коммент оставишь? ромик ждет
19 Arya Stark
 
10.06.16
13:10
фирсов
20 DDwe
 
10.06.16
13:11
(18) ?
21 DDwe
 
10.06.16
13:12
Счастливый ТС ушел пользоваться ))
22 Arya Stark
 
10.06.16
13:13
забей ищу тут одного под ником ЗАпись_ДАмпа. любит ники менять
23 Arya Stark
 
10.06.16
13:15
не пробегал в последних топиках? или под ником Pistol?
шибко много знает, прикидывается программистом. и даже в 1с что странно.
24 Pistol
 
10.06.16
13:30
(18) Подождет до вечера
25 Чайник Рассела
 
10.06.16
13:47
(16) наблюдаю у вас обычный случай мозаичной акцентуации: шизоидная+демонстративная.
26 Повелитель
 
10.06.16
13:54
(25) +Чайник Рассела
Пока все гундели и ныли, сделал функцию для лентяя из (0)
Так бы все отвечали ))
27 pavlushov
 
10.06.16
14:36
(10) Спасибо!
28 pavlushov
 
10.06.16
15:27
(10)
единственная поправка в функции
вместо
Если чЕвропейскаяНеделя = 0 Тогда
   Возврат НеделяГода(НачалоГода(дНужнаяДата) - 1);
надо
Если чЕвропейскаяНеделя = 0 Тогда
   Возврат ЕвропейскаяНеделяГода(НачалоГода(дНужнаяДата) - 1);

и тогда получается замечательная рекурсия :)
29 Jokero
 
23.06.16
10:43
(10) Мне такую же отсыпьте в СКД, я ее в поля в выражение представления запилю.
А вообще, это эпопея уже сто лет длится, 1С так и не решилась поддерживать российский ГОСТ аппаратно?
30 Jokero
 
23.06.16
15:08
не врублюсь в гост, идея такова, что если 1е января позже четверга, то неделя начинается со след. понедельника, а если меньше либо равно четвергу, то это первая неделя?
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.