Как скрыть документы в представлении

  • Автор темы laspavel
  • Дата начала
L

laspavel

#1
Здравствуйте !

Есть представление. В нем находиться 120 000 документов. Так вот нужно скрыть документы которые удовлетворяют отпределенному условию для всех пользователей которые не имеют роль [Root]. Пытался сделать так:

Условие отбора: SELECT (MUSTDIE!=1) & (IsMainForm="1") & (Archive="0") & (@Like(Enterprise;
@If(@IsNotMember("[Root]";@UserRoles);"%Den%" ; "kkkkkkk"))=0)

В результата постоянно скрываются поля даже при роли [Root].

Помогите найти ошибку ? Как правильно сформировать условие отбора ?

Спасибо.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#4
создать роль Root
создать поле ридерс со значением [Root]
поставить роль Root тем кто должен видеть єти доки

и всё, дальше лотус сам, и для всех представлений :newconfus:
 

nvyush

Lotus team
22.04.2009
2 317
0
#7
Поставил Флаг Reader-с. Осталось все как и было. Неужели нет механизма сделать это условием отбора ?
Если Вы добавили поле типа Readers в форму, то это не значит, что оно автоматически добавилось в документы. Оно будет добавляться в новые или редактируемые документы. Для обновления документов нужно написать/запустить агента.
 
L

laspavel

#8
где - на форме?
А в документах оно есть и типа readers?
Поставил на нескольких документах которіе нужно скрыть.
Убрал галочку... "все пользователи с правом не ниже читателя" и поставил галочку [Root]. Документі не скрілись. Их свободно можно открівать !

Добавлено:
Если Вы добавили поле типа Readers в форму, то это не значит, что оно автоматически добавилось в документы. Оно будет добавляться в новые или редактируемые документы. Для обновления документов нужно написать/запустить агента.
А есть какой-то пример этого агента ?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#9
"кто на ком стоял?"
фома (это то что в дизайнере):
- убрать галку с читателей
- добавить ридерс поля (себе не забыть - роль)

документ:
- отрефрешить (например - пересохранить, в UI, программно - ComputeWithForm, либо смарт-айкон с соответ @Command([ToolsRefreshSelectedDocs]))
-удалить поле $Readers (например программно, можно с пом., спец. созданной, смарт-айкон), либо откорректировать список

есть еще тонкости с локальными репликами (тиипа ЕСЛ)
один из вариантов смар-айкона для коррекции полей:
Код:
unid:= @Text(@DocumentUniqueID);

theField := @Prompt([OkCancelList]; "Change Field";
"Select Field"; @Environment("theField"); "":@DocFields);
@If(theField="";@Do(val:=@Prompt([OkCancelEdit]; "New Field"; "New Name:"; "");@If(@Trim(val)!="";@Eval("FIELD "+val+":=\"\";");""));"");
@If(val!="";@Set("theField";val);"");
@Environment("theField";theField);
currValueTemp:= @If( @IsAvailable(theField); @GetDocField(unid; theField);
"errorTemp" );
currValue:= @If( @IsError(currValueTemp); "errorValue"; @Text(currValueTemp) );
theValue := @Prompt([OkCancelEdit]; "Change Field"; "New Value: use semicolon separator for lists."; currValue);

@If(theValue = "@Delete"; @Do(@SetField(theField; @DeleteField);@Return(0));"");

currType:= @If( @IsNumber(currValueTemp); "Number";
@IsTime(currValueTemp); "Time"; "Text" );
theType := @Prompt([OkCancelList]; "Change Field";
"Data Type"; currType; "Text" : "Time" : "Number" : "Text List" : "Number List" :
"Time List");

@If(

theType = "Time";
@SetField(theField; @TextToTime(theValue));

theType = "Number";
@SetField(thefield; @TextToNumber(theValue));

theType = "Text List";
@SetField(theField; @Trim(@Explode(theValue;";")));

theType = "Number List";
@SetField(theField; @TextToNumber(@Explode(@Trim(@ReplaceSubstring
(theValue;" ";""));";")));

theType = "Time List";
@SetField(theField; @TextToTime(@Explode(theValue;";")));

@SetField(theField; @Text(theValue))
)