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

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

  1. doc

    doc Гость

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

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

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

    abbatik Well-Known Member
    Lotus team

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

    nvyush Well-Known Member
    Lotus team

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

    doc Гость

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

    Yakov Гость

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

    nvyush Well-Known Member
    Lotus team

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

    ToxaRat Чёрный маг
    Команда форума Lotus team

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

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

    nvyush Well-Known Member
    Lotus team

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

    doc Гость

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

    nvyush Well-Known Member
    Lotus team

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

    doc Гость

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

    nvyush Well-Known Member
    Lotus team

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

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