• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Документы не находятся агентом по расписанию

  • Автор темы ozzyzello
  • Дата начала
O

ozzyzello

Приветствую всех.

У меня маленькая проблема: написан агент в базе, поставлен по расписанию. Так вот, если он запускается по расписанию, то не находит документы, если его запустить принудительно руками из дизайнера, то нужные документы находятся.

Не могу понять в чем причина, у кого-нибудь есть варианты? Готов рассмотреть все возможные, буду очень признателен!!!
 
H

hosm

ozzyzello а как он ищет их, кем подписан агент?
имеет ли доступ к док-там сервер и/или тот, кем подписан агент?
 
N

nvyush

Агент выдаёт какую-нибудь ошибку? Посмотрите в логах. Может в нём есть обращение к уи-свойствам/методам и он не отрабатывает.
Возможны проблемы в правах доступа к документам. Проверьте, от чьего имени агент запускается, кем подписан.
 
X

Xalet

Код:
	Set collection = db.UnprocessedDocuments
Вот эти документы не находит?
 
O

ozzyzello

ozzyzello а как он ищет их, кем подписан агент?
имеет ли доступ к док-там сервер и/или тот, кем подписан агент?

Ищет по вьюхе, используя полнотекстовый поиск... примерно таким образом:
Call kart_view.Ftsearch({field Resp_Parents contains "9238181DCDF90F77C3526EE000341B10" & [User_Site]="Екатеринбург"}, 0)
Далее перебираю документы из вьюхи...

Агент подписан юзером, у которого есть права на запуск агентов на сервере, доступ на базе стоит Editor, документы видны для этого юзера

Добавлено:
Агент выдаёт какую-нибудь ошибку? Посмотрите в логах. Может в нём есть обращение к уи-свойствам/методам и он не отрабатывает.
Возможны проблемы в правах доступа к документам. Проверьте, от чьего имени агент запускается, кем подписан.

Агент не выдает ошибок, обращений к UI свойствам нет... target стоит по всем документам в базе... полнотектовый индекс по базе создан
 
H

hosm

xalet по идее, это тоже поле... фт-синтаксис такое допускает, не обязательно field писать.


Добавлено: мб, вместо "&" использовать "and"? есть случаи, когда "&" не работает.
 
O

ozzyzello

xalet по идее, это тоже поле... фт-синтаксис такое допускает, не обязательно field писать.


Добавлено: мб, вместо "&" использовать "and"? есть случаи, когда "&" не работает.


Да, это просто поле... все правильно... попробую использовать and... но вот, что меня мучает... ведь при принудительном щзапуске все работает.... документы ищутся нормально, а вот по шедулеру такого не поисходит - голову сломал уже...
 
N

nvyush

при принудительном щзапуске все работает.... документы ищутся нормально, а вот по шедулеру такого не поисходит
При принудительном запуске агент запускается на клиенте от имени текущего пользователя. По расписанию агент запускается на сервере от имени Run on behalf of с учётом прав подписавшего агент.
Для отладки создайте агент, пускающий отлаживаемый на сервере типа:

Dim session As New NotesSession
Call session.CurrentDatabase.GetAgent("Имя_шедульного_агента").RunOnServer()
 
O

ozzyzello

При принудительном запуске агент запускается на клиенте от имени текущего пользователя. По расписанию агент запускается на сервере от имени Run on behalf of с учётом прав подписавшего агент.
Для отладки создайте агент, пускающий отлаживаемый на сервере типа:

Dim session As New NotesSession
Call session.CurrentDatabase.GetAgent("Имя_шедульного_агента").RunOnServer()


Я создал подобного рода агент, запускаю шедулерный... а я не должен попадать в дебагере из агента в шедулерный и бежать по коду? :) По сути я просто прохожу через строку запуска агента, не попадая в код шедулерного...

А если явно прописать в агенте Run on behalf of определенное имя? Получается что агент запуститься от прописанного имени?
 
N

nvyush

Я создал подобного рода агент, запускаю шедулерный... а я не должен попадать в дебагере из агента в шедулерный и бежать по коду?
Нет. Либо используйте удалённую отладку (см. в справке "Using the Remote Debugger"), либо принтуйте в лог нужную информацию (не забудьте потом убрать Print'ы, чтоб не нервировать админа).
А если явно прописать в агенте Run on behalf of определенное имя? Получается что агент запуститься от прописанного имени?
Нужны соответствующие права, см. в справке "Setting up agent security using the Security tab", "Security for agents on servers and the Web"
 
O

ozzyzello

Нет. Либо используйте удалённую отладку (см. в справке "Using the Remote Debugger"), либо принтуйте в лог нужную информацию (не забудьте потом убрать Print'ы, чтоб не нервировать админа).
Нужны соответствующие права, см. в справке "Setting up agent security using the Security tab", "Security for agents on servers and the Web"


Всем спасибо за ответы. Очень благодарен!!!

Все дело в том, что поле(Birthday), которое пытался обработать было заполнено текстом типа 03.02.2011 и если при запуске принудительно скрипта из дизайнера проходила строка:
if datenumber(year(doc.getitemvalue(Today),month(doc.getitemvalue("Birthday")(0)),day(doc.getitemvalue("Birthday")(0)))=today, так как скрипт запускался от меня, то при запуске от сервера по шедулеру такая строка терпела ошибку и пришлось значение today(на сервере в виде 03/02/11) приводить к виду, как прописано в поле и сравнивать... вот тогда пропала ошибка, все исправилось...
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
поля с датами не преобразуйте в текст - можете собрать кучу грабель
особливо с таймзонами
 
O

ozzyzello

поля с датами не преобразуйте в текст - можете собрать кучу грабель
особливо с таймзонами


Поле добавлено искусственно, его нет на форме... задача - реализовать поздравление с днем рождения сотрудников ;) Другого способа решения не придумал - работает, будут проблемы, будем искать решение :)
 
P

Partizanka

Можно мне вклиниться с вопросом. Вопрос по сути на ту же тему.
Есть база, в которую заносят некие документы, мне нужно осуществлять проверку на уникальность документов по нескольким полям, одно из которых "дата", столкнулась с той же проблемой: на сервере и клиенте разные форматы дат, не придумала ничего лучше как в колонке представления, по которому ищутся документы с теми же реквизитами, записывать @Text(@Day(DateK)) + @Text(@Month(DateK)) + @Text(@Year(DateK)), а при сохранении документа формировать ключ поиска как Ctr(Day(DateK)) + Ctr(Month(DateK)) + Ctr(Year(DateK)).... Интуитивно понимаю, что это неправильно, но больше ничего не придумалось.... Пните, пожалуйста, в нужном направлении ;)))
 
N

nvyush

Partizanka
Используйте поля типа дата. При формировании ключа поиска используйте NotesDateTime.
 
O

ozzyzello

пока... работает
искать можно и по датам

Да да, работает и будет продолжать работать... :) Удобнее работать с датами - это факт, но необходимо было сделать так, чтобы не менять дизайна формы... поэтому сделали так...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!