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

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

  1. laspavel

    laspavel Гость

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

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

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

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

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

    Спасибо.
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    READERS поле
     
  3. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
     
  4. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    создать роль Root
    создать поле ридерс со значением [Root]
    поставить роль Root тем кто должен видеть єти доки

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

    laspavel Гость

    Поставил Флаг Reader-с. Осталось все как и было. Неужели нет механизма сделать это условием отбора ?
     
  6. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    где - на форме?
    А в документах оно есть и типа readers?
     
  7. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Если Вы добавили поле типа Readers в форму, то это не значит, что оно автоматически добавилось в документы. Оно будет добавляться в новые или редактируемые документы. Для обновления документов нужно написать/запустить агента.
     
  8. laspavel

    laspavel Гость

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

    Добавлено:
    А есть какой-то пример этого агента ?
     
  9. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    "кто на ком стоял?"
    фома (это то что в дизайнере):
    - убрать галку с читателей
    - добавить ридерс поля (себе не забыть - роль)

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

    есть еще тонкости с локальными репликами (тиипа ЕСЛ)
    один из вариантов смар-айкона для коррекции полей:
    Код (Text):
    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))
    )
     
Загрузка...

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