Заколдованные Ридерсы

  • Автор темы Idea
  • Дата начала
I

Idea

#1
Ещё раз всем - здравствуйте! Кто о чем, я а всё о своих баранах.
Исходные данные:
форма с полями -
Author (множественное, редактируемое, дефолт @UserName) типа Authors - авторы текущего документа
Auth (множественное, скрытое, вычисляемое поле @Implode(@Unique(@Explode((@ThisValue + "," + Author);","));",")) типа Authors - авторы родительского документа, которые на самом деле тоже могут редактировать текущий

TeamLeader и Members (вычисляемые, хранят имена в каноническом виде) - типа Names
Reader (множественное, редактируемое, дефолт @ThisValue) - типа Names - люди, которые не входят в остальные поля, но должны читать документ
SummReaders (множественное, вычисляемое, формула:
Код:
@Implode(@Unique(@Explode(@If (@IsNull(Readers); ""; Readers + "," +Auth +@If(@IsNull(Team);""; "," + Team) + @If(@IsNull(Members);"";"," + Members));","));",")
- типа Readers - все-все-все, кто может читать этот документ

Что было: раньше не было поля SummerReaders, а у каждого поля из второй группы был тип Readers. Не устраивало то, что прописанные в Auth пользователи, соответственно не имели права читать документ.
Теперь всё так, как описано выше, но ничего не изменилось! Люди есть в SummReaders, пробовала и каноническое имя, и короткое - бесполезно. Человек есть в поле SummReaders, а документ так и не видит. Пересохранять пробовала, рефрешить - ничего. Подскажите плиз, где я накосячила? :)
 

morpheus

скриптописец
07.08.2006
3 915
1
#2
попробуйте - @Unique( Readers:Members:Team:Auth)

SummReaders - у Вас в результате формулы получает ТЕКСТОВОЕ значение потому что @Implode - возвращает СТРОКУ
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#3
<!--QuoteBegin-Morpheus+19:12:2007, 13:06 -->
<span class="vbquote">(Morpheus @ 19:12:2007, 13:06 )</span><!--QuoteEBegin-->SummReaders - у Вас в результате формулы получает ТЕКСТОВОЕ значение потому что @Implode - возвращает СТРОКУ
[snapback]90529" rel="nofollow" target="_blank[/snapback]​
[/quote]
Какая разница? Главное, что тип поля Readers.

<!--QuoteBegin-Idea+19:12:2007, 12:59 -->
<span class="vbquote">(Idea @ 19:12:2007, 12:59 )</span><!--QuoteEBegin-->Человек есть в поле SummReaders, а документ так и не видит. Пересохранять пробовала, рефрешить - ничего. Подскажите плиз, где я накосячила? sad.gif

[snapback]90526" rel="nofollow" target="_blank[/snapback]​
[/quote]
Проверь многозначное ли поле.
 
S

Sandr

#4
Или поставте разделитель значений запятую в свойствах поля (а может у вас поле не множественное? или, хуже того, не ридерс?)
 

morpheus

скриптописец
07.08.2006
3 915
1
#6
Тогда до кучи проверить ЧЕМ разделяються значеия в поле
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#7
<!--QuoteBegin-Idea+19:12:2007, 12:59 -->
<span class="vbquote">(Idea @ 19:12:2007, 12:59 )</span><!--QuoteEBegin-->Auth (множественное, скрытое, вычисляемое поле @Implode(@Unique(@Explode((@ThisValue + "," + Author);","));",")) типа
[snapback]90526" rel="nofollow" target="_blank[/snapback]​
[/quote]
Здесь непонятно. Зачем такие сложности и, главное, зачем в результате всё из списка преобразовывать в строку?
Можно просто @Unique(@Trim(@ThisValue : Author)). Ну и везде так.
 
30.05.2006
1 345
11
#8
разница в том, что многократные преобразования текст/список испортили структуру имен. Там местами канонические имена а местами - их конкатенация.
 

morpheus

скриптописец
07.08.2006
3 915
1
#9
<!--QuoteBegin-Constantin A Chervonenko+19:12:2007, 12:29 -->
<span class="vbquote">(Constantin A Chervonenko @ 19:12:2007, 12:29 )</span><!--QuoteEBegin-->, что многократные преобразования текст/список испортили структуру имен
[snapback]90541" rel="nofollow" target="_blank[/snapback]​
[/quote]
именно, потому то я предложил во 2м ссобщении просто уникью
 
I
#10
сделала @Unique, и ещё в Auth переписала все имена ручками в каноническом виде (были в перемешку с CN) - работает, только запаришься во всех доках это парить руками. Мораль: не смешивайте имена в разных видах.

з.ы. А разделители я проверяла в первую очередь, ибо уже были грабли :blink:
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#11
сделала @Unique, и ещё в Auth переписала все имена ручками в каноническом виде (были в перемешку с CN) - работает, только запаришься во всех доках это парить руками. Мораль: не смешивайте имена в разных видах.

з.ы. А разделители я проверяла в первую очередь, ибо уже были грабли :blink:
а руками и не надо!..

учим NotesName, @Name

и подсобные операции работы с массивами и т.п.

ЗЫ: первым делом нужно глянуть в значение требуемого поля на второй закладке свойств требуемого документа... обычно, когда что-то путается с именах, там отлично видно лажу... и когда массив одной строкой не правильно впихнут, тоже видно...
 
I
#12
а руками и не надо!..

учим NotesName, @Name

и подсобные операции работы с массивами и т.п.
если я правильно поняла мысль, то надо написать агента, который пробежав по всем документам, а конкретнее по всем полям, содержащим имена. прогнать значения этих полей в цикле и переприсвоить что-то типа:
Код:
Dim userName As NotesName

Set userName = /значение из поля, добытое через массив/
/элемент другого массива/ = userName.Canonical
и запихать массив обратно в поле. так?
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#13
типа того, но даже не обязательно использовать другой массив...
можно в этом же массиве заменять значения... а потом вернуть их в поле...
 
I
#14
Я тут подумала ещё на счет собачного агента с выборкой по всем документам базы.
Код:
@If(!@IsNull(Author); FIELD Author := @Name([Canonicalize]; Author);"");
@If(!@IsNull(Auth); FIELD Auth := @Name([Canonicalize]; Auth);"");
@If(!@IsNull(Reader); FIELD Reader := @Name([Canonicalize]; Reader);"");
@If(!@IsNull(TechManager); FIELD TechManager := @Name([Canonicalize]; TechManager);"");
@If(!@IsNull(SummReaders); FIELD SummReaders := @Name([Canonicalize]; SummReaders);"");
@If(!@IsNull(Team); FIELD Team := @Name([Canonicalize]; Team);"");
@If(!@IsNull(Members); FIELD Members := @Name([Canonicalize]; Members);"");
@If(!@IsNull(TeamLeader); FIELD TeamLeader := @Name([Canonicalize]; TeamLeader);"");
@If(!@IsNull(Developers); FIELD Developers := @Name([Canonicalize]; Developers);"")
может это будет проще? только что-то мне подсказывает, что какого-нить рефреша не хватает или типа того.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#15
Я тут подумала ещё на счет собачного агента с выборкой по всем документам базы.
...
может это будет проще? только что-то мне подсказывает, что какого-нить рефреша не хватает или типа того.
Собачный проще в написании... похоже на правду, тестируйте :)