Агент и профайлы

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

  1. doc

    doc Гость

    Имеется документ (профайл), который править может только пользователь с правами менеджера. Но существует вероятность, что потребуется данная возможность для пользователя с правами автор. Поэтому сохранение документа (профайла) осуществляется агентом. Но столкнулись с такой проблемой, что изменения профайла отображаются пользователю только после переоткрытия клиента. Как можно решить данную проблему?
     
  2. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Не использовать профайлы. :)
     
  3. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Дельный совет ;) :)
     
  4. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Профайлы кэшируются. Если нужно взять не из кэша, то можно так:
    Set Doc = db.GetProfileDocument("ProfileName", "UserName")
    Set Doc = db.GetDocumentByUNID(Doc.UniversalID)
     
  5. doc

    doc Гость

    Я использую формулы
    lProjectCode:=@GetProfileField("DbProfile"; "PrfDbPrjCode");
    Вставляется старое значение
     
  6. Yakov

    Yakov Гость

    Если я не ошибаюсь, где-то ToxaRat приводил код "правильного" сохранения профайла. Смысл в том, чтобы старый профильный документ удалить, скопировав все его поля в новый.
     
  7. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Можно попробовать создать в профиле вычисляемое поле "UNID" с формулой @DocumentUniqueID и получать поля из профиля формулой вида:
    @GetDocField(@GetProfileField("имя профиля"; "UNID"); "имя поля"). Но это будет работать медленне, чем @GetProfileField
     
  8. ToxaRat

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

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    doc
    а зачем вы всё это затеяли?
    задача изначально какая? :eek:
    было такое

    я сейчас пошел еще дальше ;)
    всё "системное" храню в иконке базы, так же как ИБМовцы, нотеИД у неё постоянное поэтому трабл нету и она не кешируется
     
  9. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    А разве иконка - не элемент дизайна? В таком случае нужны как минимум дизайнерские права на изменение в ней чего либо.
     
  10. doc

    doc Гость

    Имеется 2 базы.
    В сопраженной базе имеется профайл, некоторые поля которого берут свое значение из документа текущей базы.
    Но если править документ текущей базы я разрешить пользователям могу, то напрямую давать доступ править профайл в сопряженной базе не хочется, т.к. приходится предоставлять права как Manager. Поэтому переносом значений полей из документа текущей базы в профайл сопряженной занимается агент, у которого есть все права. Но его изменения во второй базе видны пользователю после переоткрытия документа.
    Данный подход не помогает. Приходится открывать профайл вручную и пересохранять, тогда работает.
     
  11. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Смысл в том, чтобы сохранить unid профайла в поле, а сделать это можно разными способами, хотя бы так
    profiledoc.ReplaceItemValue("UNID", profiledoc.UniversalId)
    Если профайл не создаётся динамически, то это вообще однократная операция.
     
  12. doc

    doc Гость

    Агент сохраняет в данном полу UNID, но все же пользователь не видит изменений, даже этого поля UNID пока не пересохранит профайл (если Пользователь Manager) или не переоткроет клиент.
     
  13. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Профайл один или их много? Они "живут" постоянно или создаются агентом? Если профайлы постоянные, то достаточно один раз прописать в них UNID и перезагрузить Лотус, потом всё будет работать как надо.
     
Загрузка...

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