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

Тема в разделе "Lotus - Программирование", создана пользователем Maxer, 17 окт 2005.

Статус темы:
Закрыта.
  1. Maxer

    Maxer Гость

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

    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
     
  3. Maxer

    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. Народ, помогите разбраться.
     
  4. oshmianski

    oshmianski Гость

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

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

    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
    Потом, вьюха читает это поле. Все остальное я написал. Почему не работает, не пойму.
     
  6. oshmianski

    oshmianski Гость

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

    Maxer Гость

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

    oshmianski Гость

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

    oshmianski Гость

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

    oshmianski Гость

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

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: Maxer
    Весь тред было читать влом, но почему бы не использовать стандартные средства лотуса для отображения непрочитанных документов (Unread Marks) ?
    И ничего придумывать не надо.
     
  12. VZH

    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.
    Но в любом случае это не очень хорошее решение.
     
  13. Domino6

    Domino6 Гость

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

    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 в серверных видах - очень неэффективно!
     
Загрузка...
Статус темы:
Закрыта.

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