Непонятка с шэдульным агентом

  • Автор темы allex
  • Дата начала
A

allex

#1
Есть агент, он заглядывает в профильный док и берет там из поля значение.

Вопрос - при работе как Шэдульный агент возникает ошибка в последней строчке "Type mistmach", хотя поле Integer.
а вот при запуске его из спика агентов (не шедульный) - все замечательно отрабатывает.

В чем мистика ?

Код:
	Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim item1 As NotesItem
Dim item2 As NotesItem
Dim view As NotesView
Set db = s.CurrentDatabase

Set profdoc = db.GetProfileDocument("(dbconf)", s.UserName)
Dim n1 As Integer
n1 = profdoc.n_day(0)
 
Y

Yakov

#2
Принудительно приведите тип к нужному: n1 = Cint(profdoc.n_day(0)).
 

Omh

Lotus team
04.07.2007
2 210
1
#3
Полагаю, при запуске нешедульно берётся профайл, в котором есть значение в поле n_day, а при запуске шедульно берётся другой профайл.

db.GetProfileDocument("(dbconf)", s.UserName)
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#4
вместо n1 = profdoc.n_day(0)
напиши print profdoc.n_day(0)
и посмотри что возвращает когда запуск по шедулеру
 

Omh

Lotus team
04.07.2007
2 210
1
#5
Вообще, сделать проверку на IsNumeric и, в зависимости от её результата смотреть по обстоятельствам :)
 
A

allex

#6
Полагаю, при запуске нешедульно берётся профайл, в котором есть значение в поле n_day, а при запуске шедульно берётся другой профайл.

db.GetProfileDocument("(dbconf)", s.UserName)
Типа серверный userName берется, но подписан он мной и в настройках сервера указан я как исполнитель агентов
 

nvyush

Lotus team
22.04.2009
2 317
0
#7
Типа серверный userName берется, но подписан он мной и в настройках сервера указан я как исполнитель агентов
Профайлы кэшируются. Может на клиентской машине в кэше одно значение, а на серверной - другое?
 
A

allex

#8
Сессия серверная, поэтому и значения в профильный документе не существует.

Создавать профильный док с серверной записью нужно тогда, но нехотелось бы

А от имения пользователя реально инициализировать ?
 

nvyush

Lotus team
22.04.2009
2 317
0
#9
Сессия серверная, поэтому и значения в профильный документе не существует.

Создавать профильный док с серверной записью нужно тогда, но нехотелось бы

А от имения пользователя реально инициализировать ?
А что мешает явно указать имя пользователя вместо s.Username или вообще может для данной задачи можно обойтись безымянным профилем?
 
A

allex

#10
2 nvy Сдесь задача в том чтоб у каждого пользователя был профильный документ.
Вообще по смыслу нужно каждый день просматривать представление на наличие нужных доков

Решение - вешается мой код на postopen и всех делов.

Да.. только где гарантия что пользователь будет каждый день открывать БД
 
30.05.2006
1 345
11
#11
А от имения пользователя реально инициализировать ?
Тогда следовало-б написать не session.UserName, а к примеру agent.Owner


2 nvy Сдесь задача в том чтоб у каждого пользователя был профильный документ.
Вообще по смыслу нужно каждый день просматривать представление на наличие нужных доков
.. типа - адресованных КАЖДОМУ юзеру?

Ну, тадЫ см. метод notesDatabase.GetProfileDocCollection. Юзеров, которые ни разу в базу не заходили, там не будет (если ТЫ за них не наследишь)
 
A

allex

#12
Задачу решил созданием профильного дока с серверной записью. Таким образом разделив на профильные настройки и системные.