• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Отображение видов

  • Автор темы Maxer
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

Maxer

Есть форма с полем ReadersList. В это поле занисится список пользователей читавших документы.
Есть вид для этой формы. В виде есть столбец, который должен отображать ! (восклицательный знак), если документ не был открыт или галку, если документ открывался.
Код для столбца такой:
Readers := @Explode(ReadersList);
@If(@Member(@UserName;Readers);82;150)
Так, вот, когда я открываю вид в дизайнере, то если в поле ReadersList есть запись CN=Administrator/O=CDI, то отобржается галка, иначе восклицательный знак. Если же, открываю в Лотусе этот вид под разными пользователями, то ничего не меняется. Есть предположение, что лотус кеширует этот вид. Как это отключить? Или как программно заставить лотус, каждый раз пересчитывать формулу, для каждого пользователя.
Спасибо.
 
O

oshmianski

Readers := @Explode(ReadersList);
@If(@Member(@UserName;Readers);82;150)

А если вот так?
@If(@Member(@Name([CANONICALIZE];@UserName);@Name([CANONICALIZE];Readers));82;15
0)

И проверь, что колонка - Display values as icons
 
M

Maxer

Display values as icons - здесь все ок, так было изначально, иконки отображаются нормально.

@If(@Member(@Name([CANONICALIZE];@UserName);@Name([CANONICALIZE];Readers));82;15
0) Ради эксперимента, это попробывал. Всё оталось как прежде.
Проблема в том, что в дизайнере это работает. Т.е. открываешь вьюху, жмешь рефрешь, все ок, как должно быть. Открываешь этот вид (через Embedded view) под другим пользователем и ничего не меняется, все остается как в дизайнере под админом. Т.е. все поля галки. Потом открываешь это дело под пользователем, открываешь документ, пользователь добавляется в список ReadersList и оперетор @Member(@Name([CANONICALIZE];@UserName);@Name([CANONICALIZE];Readers) говорит = 0 и получается восклицательный знак. Скорее всего дело в кешировании вида. Вид на страницу добавлен через Embedded view. Народ, помогите разбраться.
 
O

oshmianski

>>Вид на страницу добавлен через Embedded view. Народ, помогите разбраться.

На страницу? Так это у тебя отображается в вебе?
 
M

Maxer

Эх, придется все по-порядку :) Я взял welcome page и изменил его под свои нужды. Задача была такая: создать систему ознакомления сотрудников компании с приказами. Т.е. создаются документы с приказами, отображаются во вьюхе. Если сотрудник приказ не читал, то у него на странице виден восклицательный знак, если открыл и почитал, то галка. Задачи делать все под веб небыло, т.е. страницу все смотрят из под лотусового клиента. Как только юзет закрывает документ, выполняется вот этот скрипт
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Dim session As New NotesSession
Dim user As String
Dim item As NotesItem
Dim readersList As String

Set item = Source.Document.GetFirstItem( "ReadersList" )

user = session.UserName

readersList = item.Text

If Instr(readersList, user) = 0 Then
Source.EditMode = True
item.Values = item.Text + ";" + user
Source.Save
Source.EditMode = False
End If

End Sub
Потом, вьюха читает это поле. Все остальное я написал. Почему не работает, не пойму.
 
O

oshmianski

Тьфу ты, е-мае.
@Member возвращает позицию текста в списке.
Admin в списке небось первый?
Попробуй @IsMember.
 
M

Maxer

Нет, админ не первый. К сожалению, у меня есть опыт программирования, но нет опыта работы с Лотусом. Сама идеология не до конца понятна. Мне кажется, что здесь надо рефрешить вьюху, потому что для админа это работает, а вот юзер видит, тож самое, что и админ. Состояние вьюхи как-то сохраняется. Впрочем возможно я ошибся где-то в коде. @IsMember попробывал. Тож самое :)
 
O

oshmianski

№ icq 118300543. Постучись, так будет интерактивнее.
 
O

oshmianski

Предложение.
В отображаемом представлении сделай две колонки. В первой свети поле RaedersList, а во втором @UserName. Посмотри чего у тебя рисует и что у пользователей.
 
O

oshmianski

Формула @UserName обычно не используется в колонках представлений. Если все-таки используется, то для вычисления правильного значения в колонке нужно перестроить индекс представления (Shift+F9). Так работает представление у Domino. Просто не отрабатывает @UserName и данные подымаются с сервера старые.
Так что ты был прав с самого начала. Видимо придется тебе придумывать другой способ отображения прочитанных доков.
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Для: Maxer
Весь тред было читать влом, но почему бы не использовать стандартные средства лотуса для отображения непрочитанных документов (Unread Marks) ?
И ничего придумывать не надо.
 
V

VZH

<!--QuoteBegin-Maxer+17:10:2005, 14:18 -->
<span class="vbquote">(Maxer @ 17:10:2005, 14:18 )</span><!--QuoteEBegin-->Есть форма с полем ReadersList. В это поле занисится список пользователей читавших документы.
Есть вид для этой формы. В виде есть столбец, который должен отображать ! (восклицательный знак), если документ не был открыт или галку, если документ открывался.
Код для столбца такой:
Readers := @Explode(ReadersList);
@If(@Member(@UserName;Readers);82;150)
Так, вот, когда я открываю вид в дизайнере, то если в поле ReadersList есть запись CN=Administrator/O=CDI, то отобржается галка, иначе восклицательный знак. Если же, открываю в Лотусе этот вид под разными пользователями, то ничего не меняется. Есть предположение, что лотус кеширует этот вид. Как это отключить? Или как программно заставить лотус, каждый раз пересчитывать формулу, для каждого пользователя.
Спасибо.
[snapback]25941" rel="nofollow" target="_blank[/snapback]​
[/quote]

Используй представления типа shared, private on first use.
Но в любом случае это не очень хорошее решение.
 
D

Domino6

Использовать свойства и оформление нечитанных
 
V

VZH

<!--QuoteBegin-Domino6+18:10:2005, 12:02 -->
<span class="vbquote">(Domino6 @ 18:10:2005, 12:02 )</span><!--QuoteEBegin-->Использовать свойства и оформление нечитанных
[snapback]25984" rel="nofollow" target="_blank[/snapback]​
[/quote]

Не совсем согласен.

Проблема будет в том случае, когда в документе произойдут несущественные изменения (такая ситуация возможна - грамматическую ошибку поправили) - а у всех слетят отметки о прочтении.

Кроме того - руководитель не сможет узнать - кто у него в должниках по ознакомлению.

Лучше все же поле - но вывести его в виде его в категории.
Приказы\По неознакомившимся.

А использовать @UserName в серверных видах - очень неэффективно!
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!