Номер недели во View

wowa

Well-known member
01.02.2007
845
0
#1
Подскажите, возможно ли сделать частную папку, чтобы доки в ней выглядили след. образом?

Код:
week№1
doc1
doc2
week№2
doc3
doc4
 

Omh

Lotus team
04.07.2007
2 210
1
#2
А почему нет? :)
Посчитай, впиши (QS, кнопки или где там дата заполняется) и сортируй как угодно...
 

wowa

Well-known member
01.02.2007
845
0
#3
Omh , спасибо за совет, а я и не догадывался....
Хотел бы уже готовый алгоритм, чтобы не изобретать велосипед
нашел вот такой полезный источник:
http://www.keysolutions.com/NotesFAQ/howweek.html

Есть поле, допустим, FieldDate, в нем значения, типа 19.10.2010

Дак вот, как во вью отображать не дату, а week№42
 

nvyush

Lotus team
22.04.2009
2 317
0
#4
Код:
@Set("_yearFirstDay"; @Date(@Year(FieldDate); 1; 1));
@Set("_weekDayNumber"; @Weekday(_yearFirstDay));
@Set("_weekDayNumber"; @If(_weekDayNumber = 1; 6; _weekDayNumber - 2));
@Integer(((FieldDate - _yearFirstDay) / 86400 + _weekDayNumber) / 7) + 1))
"Правильная" формула:
Код:
_tmpDate := @Date(@Year(@Adjust(FieldDate; 0; 0; - @Weekday(@Adjust(FieldDate; 0; 0; -1; 0; 0; 0)) + 4; 0; 0; 0)); 1; 3);
@Integer(((FieldDate -_tmpDate) / 86400 + @Weekday(_tmpDate) + 5) / 7)
 

nvyush

Lotus team
22.04.2009
2 317
0
#6
Прочитал по ссылке — там отмечают, что первая неделя должна содержать четверг, т.е. если начинается с пятницы — то это не первая неделя этого года, а последняя предыдущего. Мой код этот нюанс не учитывает, но допилить не сложно.
 

NetWood

Lotus team
17.04.2008
372
19
#7
Было это в 2003 году. Может подойдет. Перечитал - немного не в кассу топика, но, думаю, тоже полезно будет :sorry:

Код:
1 колонка
@Word("Январь,Февраль,Март,Апрель,Май,Июнь,Июль,Август,Сентябрь,Октябрь,Ноябрь,Дека
брь"; ","; (@Month(dDate )))+" "+@Text(@Year(dDate))

2 колонка (скрытая. для порядка)
dweek:=@If((@Weekday(dDate)-1)=0;7;@Weekday(dDate)-1);
fdate:=@Adjust(@Date(dDate);0;0;1-dweek;0;0;0 );
fdate

3 колонка (тут недели)
dweek:=@If((@Weekday(dDate)-1)=0;7;@Weekday(dDate)-1);
fdate:=@Adjust(@Date(dDate);0;0;1-dweek;0;0;0 );
ldate:=@Adjust(@Date(dDate);0;0;7-dweek;0;0;0 );
Mname:="января,февраля,марта,апреля,мая,июня,июля,августа,сентября,октября,ноября,де
кабря";
tmd:=@Word(Mname; ","; (@Month(fDate )));
ntmd:=@Word(Mname; ","; (@Month(lDate)));

@If(@Month(ldate)!=@Month(fdate);"c "+@Text(@Day(fdate))+" "+tmd+" по "+@Text(@Day(ldate))+" "+ntmd;"c "+@Text(@Day(fdate))+" по "+@Text(@Day(ldate))+" "+tmd)

4 колонка (доки внутри недели)
tmd:=@Word("января,февраля,марта,апреля,мая,июня,июля,августа,сентября,октября,ноября,де
кабря"; ","; (@Month(dDate )));
wday:=@Text(@Weekday(dDate));
dweek:=@If((@Weekday(dDate)-1)=0;7;@Weekday(dDate)-1);
twd:=@Word("Понедельник,Вторник,Среда,Четверг,Пятница,Суббота,Воскресенье";",";dweek);
@Text(twd+", "+@Text(@Day(dDate))+" "+tmd)
колонки соответственно сортированные. внутри опущено одна несущественная @DocChildren("";"%") перед 4-ой