Отображение задачи в календаре

  • Автор темы Автор темы oleg7
  • Дата начала Дата начала
агент запускаю админом, проверяю и если указать админа (т.е. открывается база админа) и лично себя выбираю в Исполнителях, все равно пишет false
maildb данные указываются [False, "_пользователь_", "", "",...]
проиндексировал почтовую базу, все равно пишет False в Msgbox "IsOpen" =+Cstr(mailDB.IsOpen)
параметр ISOPEN в maildb равен TRUE, если смотреть дебагером
 
проиндексировал почтовую базу, все равно пишет False в Msgbox "IsOpen" =+Cstr(mailDB.IsOpen)
параметр ISOPEN в maildb равен TRUE, если смотреть дебагером
так не бывает :)
проверьте Msgbox "IsOpen=" & Cstr(mailDB.IsOpen) после Set mailDB = s.GetDatabase(...)
 
OKEN
да ISOpen=TRUE, на 20-м проходе в дебагере до меня дошло, где была ошибка


Добавлено: если далее выполнить
Код:
Set collection = mailDB.Search({(DocUNID="} & doc.UniversalId & {")}, Nothing, 0)
то в collection определяется UniversalId документа, который в БД1
А как в этом документе обновить данные?
 
насколько я понял, то после Msgbox "IsOpen=" & Cstr(mailDB.IsOpen)
необходимо найти документ и обновить необходимые поля. Делаю так:
Код:
Set maildoc = mailDB.Search({(DocUNID="} & doc.UniversalId & {")}, Nothing, 0)
maildoc.Subject = doc.Title(0)
выдает ошибку: instance member Subject does not exist
Что делаю не так?
 
насколько я понял, то после Msgbox "IsOpen=" & Cstr(mailDB.IsOpen)
необходимо найти документ и обновить необходимые поля. Делаю так:
Код:
Set maildoc = mailDB.Search({(DocUNID="} & doc.UniversalId & {")}, Nothing, 0)
maildoc.Subject = doc.Title(0)
выдает ошибку: instance member Subject does not exist
Что делаю не так?

У коллекции доков нет свойства Subject ;)
Должно быть что-то вроде
Код:
Set maildocs = mailDB.Search({(DocUNID="} & doc.UniversalId & {")}, Nothing, 0)
Set maildoc = maildocs.GetFirstDocument
Do Until maildoc Is Nothing
Call maildoc.ReplaceItemValue("Subject", doc.GetItemValue("Title"))
Set maildoc = maildocs.GetNextDocument(maildoc)
Loop

З.Ы. Да почитайте наконец справку хотя бы по классам NotesDatabase, NotesDocument, NotesDocumentCollection ;)
 
внутри цикла после изменения документа его сохранять надо, т.е. примерно так:
Код:
 Call maildoc.ReplaceItemValue("Subject", doc.GetItemValue("Title"))
call maildoc.Save(True, True)
Set maildoc = maildocs.GetNextDocument(maildoc)
 
OKEN и nvy огромное Вам спасибо!!!
получилось. Агент обновляет поля поля
 
OKEN и nvy огромное Вам спасибо!!!
получилось. Агент обновляет поля поля

Только не забудьте убрать msgbox из агента, нужно было только для отладки. Чтобы обновлялись почтовые базы других пользователей, агент нужно запускать RunOnServer с соответствующими правами. Не вдаваясь в подробности — установите на второй вкладке свойств агента run on behalf of... имя сервера и подпишите сервером. Возможно, придётся поднять security level (там же). Удачи.
 
помогите, пожалуйста еще. В этом агенте поле тема обновляется:
Call maildoc.ReplaceItemValue("Subject", doc.GetItemValue("Title"))

А если также пытаюсь обновить поле Даты, то ничего не происходит.
Call maildoc.ReplaceItemValue("DueDate", doc.GetItemValue("dDate"))
Как правильно записать обновление даты?
 
помогите, пожалуйста еще. В этом агенте поле тема обновляется:
Call maildoc.ReplaceItemValue("Subject", doc.GetItemValue("Title"))

А если также пытаюсь обновить поле Даты, то ничего не происходит.
Call maildoc.ReplaceItemValue("DueDate", doc.GetItemValue("dDate"))
Как правильно записать обновление даты?
Проверьте правильность имён и типов полей. Кстати, а вызов
Код:
Call maildoc.ReplaceItemValue("DueDate", doc.GetItemValue("dDate"))
случайно не после
Код:
Call maildoc.Save(True, True)
? Должно быть перед, иначе не сохраняются внесенные изменения.
 
проверьте в свойствах на Вашем документе у поля dDate Data Type (Time/Date) и его значение (самая нижняя строчка), т.е. типа такого:

Field Name: dDate
Data Type: Time/Date
...
Field Flags: SUMMARY

12.01.2010 18:34:45 ZE2
 
а как сделать, чтобы: если в поле Status 0 (т.е. Закрыта), тогда в почтовой в Task в поле DisplayStatus должно быть Завершенная , если Status=1, тогда DisplayStatus - Выполняющаяся
делаю так :
Код:
If doc.GetItemValue("Status")=0 Then 
Call maildoc.ReplaceItemValue("DisplayStatus", "Завершенная")
End If
.........
Выдает ошибку Type mismatch
Поле Status - Dialog list (Computed when compose) - В работе | 1, Закрыта | 0 ....
 
кстати, если анализировать больше одного-двух значений, может, стоит посмотреть в сторону такой конструкции:
select case doc.GetItemValue("Status")(0)
case "0"
...
case "1"
...
end select
 
столкнулся с такой проблемой: если пользователь изменит ФИО в поле, в котором указан исполняющий задачу, то задача будет созданна у нового исполнителя и у него все будет выполнятся правильно. а вот у того, кто был указан первоночально в поле, задача останется мертвой.
Удалить ее я не могу, т.к. агент работает по ФИО из поля испосполнителя
Что можно сделать?
 
столкнулся с такой проблемой: если пользователь изменит ФИО в поле, в котором указан исполняющий задачу, то задача будет созданна у нового исполнителя и у него все будет выполнятся правильно. а вот у того, кто был указан первоночально в поле, задача останется мертвой.
Удалить ее я не могу, т.к. агент работает по ФИО из поля испосполнителя
Что можно сделать?
Можно при открытии документа в БД1 на редактирование запоминать "старый" список исполнителей во временном computed-for-display поле. При сохранении документа сравнивать с новым списком исполнителей и тем, кто выбыл, удалять задачу.
 
как вариант: действие при смене исполнителя (уже после создания задачи для исполнителей) должно сохранять прежнего исполнителя, и после изменения значения (и сохранения документа) проверить, изменился ли исполнитель или нет.
Если изменился, найти задачу прежнего исполнителя и если она еще не выполнена, то отмечать ее как выполненную (посмотреть в стандартном шаблоне, что делается при выполнении задачи), либо вообще задачу удалять?


Добавлено: nvy
cfd разве что с @thisvalue покатит - оно ж при уи-сохранении пересчитывается...
наверно, можно при открытии запихнуть прежних в глобальную переменную на форме, если документ не переоткрывается кодом?
 
запоминать "старый" список
такое поле есть в документе. То есть необходимо сравнивать содержимое старого поля и нового и потом в почтовых ящиках тех, кто не совпал удалять задачу?
:ya_lamo:

OKEN
можно конечно и ставить пометку о выполнении, но в принципе пользователь задачу не выполнил. а просто задача была перенаправлена
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab