• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы 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 941
609
BIT
214
поля с датами не преобразуйте в текст - можете собрать кучу грабель
особливо с таймзонами
 
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

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

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

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