Контакты - День рождения и Юбилей

Тема в разделе "Lotus - Программирование", создана пользователем Slava Rahmatov, 4 май 2009.

  1. Slava Rahmatov

    Slava Rahmatov Гость

    Всем известно, что в локальной адресной книге есть представление, отображающие значения из полей Birthday и Anniversary
    Стандартное представление состоит из 4 колонок (hidden, дата, имя и возраст(лет))
    Само представление отображает документы в линейном виде, а формулы в коолнках делают проверку на ниличие непустого знаечния в полях Birthday и Anniversary и в зависимости от состояния отображают документ, иногда даже по два, если указан и день рождения и юбилей.

    Вот формулы для столбца hidden
    [codebox]d := @If(Birthday != "" & Anniversary != ""; @Month(Birthday) : @Month(Anniversary);
    Birthday!= "" & Aniversary = ""; @Month(Birthday);
    Birthday = "" & Anniversary != ""; @Month(Anniversary); "");
    @Right("0" + @Text(d); 2)[/codebox]
    для столбца date
    [codebox]dspBday := @Text(Birthday);
    dspAday := @Text(Anniversary);

    @If(Birthday != "" & Anniversary != ""; dspBday : dspADay;
    Birthday!= "" & Aniversary = ""; dspBday;
    Birthday = "" & Anniversary != ""; dspAday; "")
    [/codebox]
    для столбца Name
    [codebox]tBday := "День рождения";
    tAnniv := "Юбилей";

    txt := @If(Birthday != "" & Anniversary != ""; tBday : tAnniv;
    Birthday!= "" & Aniversary = ""; tBday;
    Birthday = "" & Anniversary != ""; tAnniv; "");

    @Name([CN]; Fullname) + " / " + txt
    [/codebox]

    В приципе каждый наверное видел этот код, но просто чтобы не лазить в дизанер лишний раз, если что.

    Как сделать отображение дат дней рождений и юбилеев по следующему принципу:
    Первый столбец - категоризированное имя месяца(сортированное по номеру-не по алфавиту), второй - категоризированный тип даты(день рождения, юбилей)
    Примерно вот так:

    Январь​
    День рождения
    Юбилей
    ....​
    Декабрь​
    День рождения
    Юбилей​

    Пытался сделать замену цифрового обозанчения месяца

    @If(dd="01";
    "Январь";dd="02";"Февраль";dd="03";"Март";dd="04";"Апрель";dd="05";"Май";dd="06";"Июнь";dd="07";"Июль";dd="08";"Август";dd="09";"Сентябрь";dd="10";"Октябрь";dd="11";"Ноябрь";dd="12";"Декабрь";"[Вне периода[")

    но что то плохо выходит, либо сотрировка по алфавиту, либо по две даты или вообще вразрброс.
    Как это реализовать правильно ?
     
  2. Xalet

    Xalet Well-Known Member

    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    Что есть дд? И если оно цифровое, то почему со стрингом сравнивается?
     
  3. Slava Rahmatov

    Slava Rahmatov Гость

    Извиняюсь, это новая переменная, которую я добавил, чтобы hidden оставить скрытым.
    берется она из

    d := @If(Birthday != "" & Anniversary != ""; @Month(Birthday) : @Month(Anniversary);
    Birthday!= "" & Aniversary = ""; @Month(Birthday);
    Birthday = "" & Anniversary != ""; @Month(Anniversary); "");
    dd:=@Right("0" + @Text(d); 2)

    Поэтому и строковая.
     
  4. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Чтобы по номеру месяца сортировалось, добавь перед столбцом с именем месяца скрытый осортированный столбец, содержащий номер месяца в числовом формате.
     
  5. Slava Rahmatov

    Slava Rahmatov Гость

    Что-то не получается, уже по разному перепробовал.
    • убрал все столбцы, оставил только 2 - hidden и месяц.
    • для столбца hidden установлено show multilpe values as separate entries(чтобы и День рождения и юбилей были отображались отдельными строками), - это было предустановлено.
    • Сортировка идет, но почему то показывает 3 месяца января,(у некоторых документов заполнены поля День рождения и юбилей)
    • пытался категоризировать и hidden и месяц и поочереди, и одновременно, что выходит - на рисунке:

    То есть что- то я не учел, что не пойму.

    На форуме читал, что скрытый отсортированный столбец помогает отсортировать месяц по алфавиту, и даже отрабатывал такой пример, но тут тонкость, в данном примере документ отображается дважды, в случае если в контакте заполнено поле Дня рождения, и в случае, если заполнено поле Юбилей, то есть поодиночке ничего, а еслт оба поля, то получается каша.
     

    Вложения:

    • dr_hidden.JPG
      dr_hidden.JPG
      Размер файла:
      144,6 КБ
      Просмотров:
      29
  6. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Вот так наверное будет красивей, и если мне не изменяет сколероз, то при таком варианте они отсортированы так, как надо без доп. столбца:

    @Select ( @TextToNumber ( dd);"Январь";"Февраль";"Март";"Апрель";"Май";"Июнь";"Июль";"Август";"Сентябрь";"Октябрь";"Ноябрь";"Декабрь")
     
  7. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Slava Rahmatov
    Думаю, что не получится сделать как ты хочешь.
    Сделай две категории: День рождения и Юбилей. А в них уже по месяцам.
     
  8. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Думаю вполне логично будет выводить просто дни рождения, а у тех, у кого юбилей, в соседнем столбце выводить какую-нибудь картинку.. всем будет понятно и без гимора :)
     
  9. SlavaRahmatov

    SlavaRahmatov Гость

    Я пока так и сделал, только уж больно задачка интересная, интуитивно кажется, что алгортим (или решение) должно быть очень красивым.
    Тогда можно будет указывать не только два поля, а гораздо больше.

    Ладно, если что надыбаю- поделюсь :)
     
Загрузка...

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