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

Тема в разделе "Lotus - Программирование", создана пользователем wowa, 18 окт 2010.

  1. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Подскажите, возможно ли сделать частную папку, чтобы доки в ней выглядили след. образом?

    Код (Text):
    week№1
    doc1
    doc2
    week№2
    doc3
    doc4
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    А почему нет? :)
    Посчитай, впиши (QS, кнопки или где там дата заполняется) и сортируй как угодно...
     
  3. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Omh , спасибо за совет, а я и не догадывался....
    Хотел бы уже готовый алгоритм, чтобы не изобретать велосипед
    нашел вот такой полезный источник:
    http://www.keysolutions.com/NotesFAQ/howweek.html

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

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Код (Text):
    @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))
    "Правильная" формула:
    Код (Text):
    _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)
     
  5. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    nvy, спасибо, вроде все правильно работает.
    +1
     
  6. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Прочитал по ссылке — там отмечают, что первая неделя должна содержать четверг, т.е. если начинается с пятницы — то это не первая неделя этого года, а последняя предыдущего. Мой код этот нюанс не учитывает, но допилить не сложно.
     
  7. NetWood

    NetWood Lotus team
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    308
    Симпатии:
    0
    Было это в 2003 году. Может подойдет. Перечитал - немного не в кассу топика, но, думаю, тоже полезно будет :sorry:

    Код (Text):
    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-ой
     
Загрузка...

Поделиться этой страницей