Форум продуктов IBM Lotus

Общие вопросы => Разработка приложений => Тема начата: Vi от 27 Октябрь 2012, 12:35:00

Название: MarkRead. Пометить из агента документ как прочтенный
Отправлено: Vi от 27 Октябрь 2012, 12:35:00
Всем доброго.
перед мной стала задача обработать неким образом помеченные документы (это письма).
Скрипт обработки у меня есть, но в нем не прописана пометка документа как обработанного.
По словом "обработанный" я подразумеваю вот что: Когда приходит письмо в 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
Название: MarkRead. Пометить из агента документ как прочтенный
Отправлено: ViV от 29 Октябрь 2012, 18:08:15
Добрый день!

1. Все верно делаете. Можете проверить, в обычной почтовой базе создать такого агента, там он корректно отработает.
Возможно необходимо вид отрефрешить, попробуйте после отработки агента нажать F9 в виде.
2. Если у вас видны звездочки и красный шрифт для новых документов, то эта функция включена. Эта настройка представлена в свойствах базы данных на последней вкладке, самая первая галка.
Название: MarkRead. Пометить из агента документ как прочтенный
Отправлено: Vi от 30 Октябрь 2012, 17:45:05
Появилась небольшая проблема.
Когда я добавляю Call doc.Markread(). в Клиенте 8.5 все работет хорошо, но в 6.5 выдает ошибку Illegal used PROPERTY.
Отладчика на 6.5 нет, посему не могу там посмотреть о чем он говорит, неужели 6-ка  не имеет такого метода? И вообще я думал что скрипты выполняются на сервере, тогда почему под 8.5 на этом методе не дает ошибку?
Название: MarkRead. Пометить из агента документ как прочтенный
Отправлено: ViV от 30 Октябрь 2012, 18:03:18
Да, вы правы, этот метод введен в версии 8. Для 6.5 можно воспользоваться 3-им параметром в функции Save:
notesDocument.Save( force, createResponse [, markRead ] )

Все скрипты связанные с пользовательским интерфейсом(и не только) выполняются на клиенте. На сервере выполняются агенты по расписанию или если агент вызывается с указанием выполняться на сервере.
Название: MarkRead. Пометить из агента документ как прочтенный
Отправлено: Vi от 30 Октябрь 2012, 22:02:50
О! Вот это весьма ценное замечание (завтра на работе обязательно и это попробую), остается вопрос - Я то не редактирую документ, неужели даже в этом случае метод Save отработает?
Я то всего лишь открываю док для получения и извлечения аттачей...

Дописано: Этот метод не дает эффекта. doc.Save(True,False,True).
Название: MarkRead. Пометить из агента документ как прочтенный
Отправлено: Samai от 15 Ноябрь 2012, 20:55:49
Как я понимаю анридлист поддерживается для каждого пользователя свой
 ViV если вы вызовете метод Save То для какого пользователя документ будет помечен как read   ::) ?
Название: MarkRead. Пометить из агента документ как прочтенный
Отправлено: ViV от 16 Ноябрь 2012, 10:55:33
Для того, который запустил этот скрипт, т.е. для текущего.