Сортировка По Важности В Виде

Mitya

Well-Known Member
13.06.2012
111
0
#1
Подскажите пожалуйста, как правильно реализовать данный момент.
Есть 2 формы. Одна «основная» форма, другая «справочник». «Основная» берет данные из «справочника»
Есть представление, где сортируются данные из «основной» форм + группируются. Как мне реализовать сортировку по «важности» должности в этом представлении?
Есть идея в форме справочника добить цифровое поле - «важность» должности (типа 1, 2, 3…)
А в «основной» форме добавить скрытое, вычисляемое поле. И при выборе должности из «справочника», автоматически определять значение поля «важности». А в представлении потом все просто настроить.

Может кто сталкивался с данной задачей. Хотелось бы на примере увидеть все это.
Спасибо.
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#2
Mitya
В представлении нет возможности консолидировать в одной записи данные из разных документов — нужно значение "важности" также копировать в "основную" форму.
 

Mitya

Well-Known Member
13.06.2012
111
0
#3
Mitya
В представлении нет возможности консолидировать в одной записи данные из разных документов — нужно значение "важности" также копировать в "основную" форму.
Я вроде и писал, что поле "важность" будет вычисляемое на "основной” форме.
Т.е. при создании нового документа по "основной" форме тянут должность из ”справочника” - поле "важность" вычисляется, берет значение из того же "справочника"

Вот как это реализовать, пока, не начитал. Поэтом, хотел видеть пример, коротенький =)
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#4
Mitya
Что Вы имеете ввиду под "вычисляемое на основной форме"? Если значение важности будет браться из справочника в computed for display поле на форме, то в представлениях оно будет не доступно и сортировать по нему будет невозможно. Поэтому при выборе из справочника названия должности "подтягивайте" и сохраняйте также и значение важности. Делать можно как на дог-фомулах, так и на лс-скрипте.
Поскольку справочник в Lotus Notes понятие растяжимое, опишите сперва Вашу реализацию, чтобы можно было что-то посоветовать.
 

Altaya

Active Member
01.03.2012
34
0
35
Москва
#5
На сколько я поняла, то ответ содержится в самом вопросе. Mitya, как сделать вы уже все описали, осталось только сделать.
А по поводу важности "1,2,3", если у вас должности делятся только на "руководитель" и "подчиненный", то достаточно поля "Руководитель" со значениями да/нет и по ним потом сортировать.
 

Mitya

Well-Known Member
13.06.2012
111
0
#6
Mitya
Что Вы имеете ввиду под "вычисляемое на основной форме"? Если значение важности будет браться из справочника в computed for display поле на форме, то в представлениях оно будет не доступно и сортировать по нему будет невозможно. Поэтому при выборе из справочника названия должности "подтягивайте" и сохраняйте также и значение важности. Делать можно как на дог-фомулах, так и на лс-скрипте.
Поскольку справочник в Lotus Notes понятие растяжимое, опишите сперва Вашу реализацию, чтобы можно было что-то посоветовать.
Чем дальше в лес, тем больше дров
Спасибо за понимание к новичку и разъяснения.

Реализация задумывается быть такой:
Есть форма “справочника” состоящая из 2 полей (1-е - "классификатор", 2-е - "значение") + добавлю дополнительное поля "важность". Вот не знаю стоит это поле делать числовым?
Есть "основная" форма документа. Куда в поле "должность" из справочника тянуться значения (@DbLookup(””:”NoCache”;@DbName;"list";"Post";2)
Хотелка в том, как заставить в зависимости от выбранной должности тянуть данные из поля "важность" в "основной" документ.
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#7
У функции @DbLookup есть ключ [RETURNDOCUMENTUNIQUEID] (см. справку). Название должности, важность и другие поля можно получить функцией @GetDocField( documentUNID ; fieldName ).

Подозреваю, что поле должности у Вас типа диалогбокса, а @DbLookup в формуле списка значений. Я бы сделал поле должности текстовым, а для выбора должности добавил на форму кнопку с @PickList, в представлении для выбора добавил скрытую колонку, в которой через разделители (например, "|") указал все нужные значения, которые бы потом разбивал через @Explode.

Вот не знаю стоит это поле делать числовым?
Текстовые поля сортируются не так, как числовые, например:
1
10
11
2
Если это то, что Вам нужно, делайте поле текстовым
 

Mitya

Well-Known Member
13.06.2012
111
0
#8
У функции @DbLookup есть ключ [RETURNDOCUMENTUNIQUEID] (см. справку). Название должности, важность и другие поля можно получить функцией @GetDocField( documentUNID ; fieldName ).

Подозреваю, что поле должности у Вас типа диалогбокса, а @DbLookup в формуле списка значений. Я бы сделал поле должности текстовым, а для выбора должности добавил на форму кнопку с @PickList, в представлении для выбора добавил скрытую колонку, в которой через разделители (например, "|") указал все нужные значения, которые бы потом разбивал через @Explode.
Изначально тип поля ”должность” на "основной форме" был «поле со списком», где значения брались так: @DbLookup(””:”NoCache”;@DbName;"list";"Post";2)
я не понял как пристроить ключ [RETURNDOCUMENTUNIQUEID] =) и сделал через @PickList, повесил на "основную" форму кнопку:
ch:=@PickList([Custom]:[Single];@DbName;"list"; "Выберите должность"; "Cписок должностей";1;"Должности");
@SetField("post";@GetDocField(ch;"value"));
@SetField("pn";@GetDocField(ch;"pn"))

Но, пишет "Ошибка в UNID; UNID должен представлять собой 32-разрядную шестнадцатеричную строку!!
что тут не так? Спасибо

Разобрался: добавил в виде "list" 4-ю колонку:@Text( @DocumentUniqueID)
и подправил ch:=@PickList([Custom]:[Single];@DbName;"list"; "Выберите должность"; "Cписок должностей";4;"Должности");

Может через [RETURNDOCUMENTUNIQUEID] было бы проще, но как это прикрутить?
 

hosm

* so what *
18.05.2009
2 442
9
42
Kiev, Ukraine
#9
> я не понял как пристроить ключ [RETURNDOCUMENTUNIQUEID] =) См. хелп @DbLookup (Domino data source): @DbLookup("":"NoCache";@DbName;"list";"Post";2;[RETURNDOCUMENTUNIQUEID])
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#10
Изначально тип поля ”должность” на "основной форме" был «поле со списком», где значения брались так: @DbLookup(””:”NoCache”;@DbName;"list";"Post";2)
я не понял как пристроить ключ [RETURNDOCUMENTUNIQUEID] =) и сделал через @PickList, повесил на "основную" форму кнопку:
ch:=@PickList([Custom]:[Single];@DbName;"list"; "Выберите должность"; "Cписок должностей";1;"Должности");
@SetField("post";@GetDocField(ch;"value"));
@SetField("pn";@GetDocField(ch;"pn"))

Но, пишет "Ошибка в UNID; UNID должен представлять собой 32-разрядную шестнадцатеричную строку!!
что тут не так? Спасибо

Разобрался: добавил в виде "list" 4-ю колонку:@Text( @DocumentUniqueID)
и подправил ch:=@PickList([Custom]:[Single];@DbName;"list"; "Выберите должность"; "Cписок должностей";4;"Должности");
Я предлагал в скрытую колонку помещать все нужные данные, т.е. формула колнки была бы примерно такая:
Код:
@Text(@DocumentUniqueID) + "|" + post + "|" + @Text(pn);
Формула кнопки соответственно:
Код:
ch:=@PickList([Custom]:[Single];@DbName;"list"; "Выберите должность"; "Cписок должностей";4;"Должности");
@SetField("postUNID"; @Word(ch; "|"; 1));
@SetField("post"; @Word(ch; "|"; 2));
@SetField("pn"; @TextToNumber(@Word(ch; "|"; 3)));
Может через [RETURNDOCUMENTUNIQUEID] было бы проще, но как это прикрутить?
поместить в InputTranslation
@SetField("post";@GetDocField(ch;"value"));
@SetField("pn";@GetDocField(ch;"pn"))