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

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

  1. allex

    allex Гость

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

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

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

    Код (Text):
        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)
     
  2. Yakov

    Yakov Гость

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

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Полагаю, при запуске нешедульно берётся профайл, в котором есть значение в поле n_day, а при запуске шедульно берётся другой профайл.

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

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    вместо n1 = profdoc.n_day(0)
    напиши print profdoc.n_day(0)
    и посмотри что возвращает когда запуск по шедулеру
     
  5. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Вообще, сделать проверку на IsNumeric и, в зависимости от её результата смотреть по обстоятельствам :)
     
  6. allex

    allex Гость

    Типа серверный userName берется, но подписан он мной и в настройках сервера указан я как исполнитель агентов
     
  7. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Профайлы кэшируются. Может на клиентской машине в кэше одно значение, а на серверной - другое?
     
  8. allex

    allex Гость

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

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

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    А что мешает явно указать имя пользователя вместо s.Username или вообще может для данной задачи можно обойтись безымянным профилем?
     
  10. allex

    allex Гость

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

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

    Да.. только где гарантия что пользователь будет каждый день открывать БД
     
  11. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    Тогда следовало-б написать не session.UserName, а к примеру agent.Owner


    .. типа - адресованных КАЖДОМУ юзеру?

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

    allex Гость

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

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