MarkRead. Пометить из агента документ как прочтенный

Автор Тема: MarkRead. Пометить из агента документ как прочтенный  (Прочитано 11459 раз)

Vi

  • Участник
  • **
  • Сообщений: 43
    • Просмотр профиля
Всем доброго.
перед мной стала задача обработать неким образом помеченные документы (это письма).
Скрипт обработки у меня есть, но в нем не прописана пометка документа как обработанного.
По словом "обработанный" я подразумеваю вот что: Когда приходит письмо в Lotus Notes оно в списке писем помечается красным шрифтом и красной звездочкой рядом, как новое. Я хочу чтоб после того как агент обработал это письмо оно в представлении меняло свой цвет на черный, как будто его открывали обычно, кликая мышкой.

Пробовал метод MarkRead но результата нужного не достиг. В хелпе написано что-то типа Если БД не отслежвает маркировки непрочтенности, все документы считаются прочтенными, и этот метод не дает эффекта.

Отсюда вопросы:
1) Я вообще правильно делаю? Может MarkRead не для этого предназначен?
2) Что имеется ввиду под фразой -  Если БД не отслежвает маркировки непрочтенности?
3) Как тогда клиент умудряется в представлении помечать документ как прочтенный?

Используется Lotus 6.5.6 в качестве клиента и Domino 8 в качестве сервера.

Вот как пробую:
Option Public
Sub Initialize
Dim session As New NotesSession
Dim DB As NotesDatabase
Dim doc As NotesDocument
Dim collection As NotesDocumentCollection
Set db = session.CurrentDatabase
Set collection=db.UnprocessedDocuments


For i =1 To collection.count
Set doc = collection.getnthdocument (i)
                ....
                тут что-то делаем с doc
                ....
Call doc.Markread()
Next
End Sub

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
Добрый день!

1. Все верно делаете. Можете проверить, в обычной почтовой базе создать такого агента, там он корректно отработает.
Возможно необходимо вид отрефрешить, попробуйте после отработки агента нажать F9 в виде.
2. Если у вас видны звездочки и красный шрифт для новых документов, то эта функция включена. Эта настройка представлена в свойствах базы данных на последней вкладке, самая первая галка.

Vi

  • Участник
  • **
  • Сообщений: 43
    • Просмотр профиля
Появилась небольшая проблема.
Когда я добавляю Call doc.Markread(). в Клиенте 8.5 все работет хорошо, но в 6.5 выдает ошибку Illegal used PROPERTY.
Отладчика на 6.5 нет, посему не могу там посмотреть о чем он говорит, неужели 6-ка  не имеет такого метода? И вообще я думал что скрипты выполняются на сервере, тогда почему под 8.5 на этом методе не дает ошибку?

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
Да, вы правы, этот метод введен в версии 8. Для 6.5 можно воспользоваться 3-им параметром в функции Save:
notesDocument.Save( force, createResponse [, markRead ] )

Все скрипты связанные с пользовательским интерфейсом(и не только) выполняются на клиенте. На сервере выполняются агенты по расписанию или если агент вызывается с указанием выполняться на сервере.

Vi

  • Участник
  • **
  • Сообщений: 43
    • Просмотр профиля
О! Вот это весьма ценное замечание (завтра на работе обязательно и это попробую), остается вопрос - Я то не редактирую документ, неужели даже в этом случае метод Save отработает?
Я то всего лишь открываю док для получения и извлечения аттачей...

Дописано: Этот метод не дает эффекта. doc.Save(True,False,True).
« Последнее редактирование: 31 Октябрь 2012, 10:54:41 от Vi »

Samai

  • Новичок
  • *
  • Сообщений: 10
    • ICQ клиент - 278408944
    • Просмотр профиля
    • E-mail
Как я понимаю анридлист поддерживается для каждого пользователя свой
 ViV если вы вызовете метод Save То для какого пользователя документ будет помечен как read   ::) ?

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
Для того, который запустил этот скрипт, т.е. для текущего.