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

  • Автор темы Slava Rahmatov
  • Дата начала
S

Slava Rahmatov

Гость
#1
Всем известно, что в локальной адресной книге есть представление, отображающие значения из полей 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";"Декабрь";"[Вне периода[")

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

Xalet

Well-Known Member
08.08.2008
410
0
Вильнюс. Литва.
#2
Пытался сделать замену цифрового обозанчения месяца

@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";"Декабрь";"[Вне периода[")
Что есть дд? И если оно цифровое, то почему со стрингом сравнивается?
 
S

Slava Rahmatov

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

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

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

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#4
Чтобы по номеру месяца сортировалось, добавь перед столбцом с именем месяца скрытый осортированный столбец, содержащий номер месяца в числовом формате.
 
S

Slava Rahmatov

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

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

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

Вложения

abbatik

Well-Known Member
Lotus team
20.10.2008
277
0
35
Москва
#6
Вот так наверное будет красивей, и если мне не изменяет сколероз, то при таком варианте они отсортированы так, как надо без доп. столбца:

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

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#7
Slava Rahmatov
Думаю, что не получится сделать как ты хочешь.
Сделай две категории: День рождения и Юбилей. А в них уже по месяцам.
 

abbatik

Well-Known Member
Lotus team
20.10.2008
277
0
35
Москва
#8
Думаю вполне логично будет выводить просто дни рождения, а у тех, у кого юбилей, в соседнем столбце выводить какую-нибудь картинку.. всем будет понятно и без гимора :)
 
S

SlavaRahmatov

Гость
#9
Slava Rahmatov
Думаю, что не получится сделать как ты хочешь.
Сделай две категории: День рождения и Юбилей. А в них уже по месяцам.
Я пока так и сделал, только уж больно задачка интересная, интуитивно кажется, что алгортим (или решение) должно быть очень красивым.
Тогда можно будет указывать не только два поля, а гораздо больше.

Ладно, если что надыбаю- поделюсь :)