• Codeby web-security - Курс "Тестирование Веб-Приложений на проникновение с нуля" от команды codeby. Общая теория, подготовка рабочего окружения, пассивный фазинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...

  • Мобильный клиент нашего форума для Android гаджетов доступен в Google Play Market по этой ссылке. Клиент можно скачать с нашего форума по этой ссылке. Последняя версия МК в нашем телеграм канале вот здесь

Агенты и обновление полей

  • Автор темы Idea
  • Дата начала
I

Idea

#1
Есть серверный агент на Лотус скрипт. Пишется для работе в вебе.
Суть - после неких операций нужно в зависимости от условия - или вывести что-то типа messagebox-а с фразой - "извини, не выйдет" или запихать некое значение в некое поле текущего дока.
Проверяю под клиентом. Все проходит без ошибок, в переменной типа variant (mem) есть всё, что надо, но
Код:
 ...
doc.Members= mem
Exit Sub
и собственно ничего в этом самом поле мемберс не видать. Я так подразумеваю, что не хватает ему рефреша. А как его сделать, учитывая, что это все должно корректно в вебе отработать в итоге?
На сколько я понимаю, рефреш под вебом - это фактически сохранение дока. Однако строка
Call doc.Save(True, True, True) ровным счетом ничего не меняет. Как все-таки переписать это самое значение?

з.ы. заодно подскажите плиз аналог MessageBox для веба, если можно как-нибудь без джава скриптов. Скрещивание джава скрипт с лотус скрипт - это задача мне ещё на пару месяцев.
 
H

Hedg

#6
Не делал в Лоту се ничё под веб, но поробую посоветовать

В свойстве поля OnChange втулить что-то типа этого

Код:
window.location.reload()
window.location.href=window.location.href
 
O

Ogion7

#7
В хелпе на "web agent" выдает ответ, в котором есть такое
Activating a Web agent
.......
Two form events work for Web processing:

-WebQueryOpen occurs before Lotus Domino converts the document being opened to HTML and sends it to the browser. You can change initial field values and do other pre-processing.

-WebQuerySave occurs before a Web document is saved. You can change final field values and do other post-processing.
 
I

Idea

#8
В свойстве поля OnChange втулить что-то типа этого

Код:
window.location.reload()
window.location.href=window.location.href
Браузер - невозможно отобразить страницу
В клиенте ничего не изменилось

В хелпе на "web agent" выдает ответ, в котором есть такое
то есть типа по кнопочке агент не сработает, надо только в эти события их писать? Что-то не верится мне в это.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#9
Для: Idea
Как ты агента вызываешь?

<!--QuoteBegin-Idea+18:04:2007, 16:28 -->
<span class="vbquote">(Idea @ 18:04:2007, 16:28 )</span><!--QuoteEBegin-->з.ы. заодно подскажите плиз аналог MessageBox для веба, если можно как-нибудь без джава скриптов.
[snapback]62748" rel="nofollow" target="_blank[/snapback]​
[/quote]
Жаваскрипт - Alert.
 
I
#12
Откуда получаешь doc в агенте?
Код:
Dim session As NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim nav As NotesViewNavigator
Dim entry As NotesViewEntry

Dim doc As NotesDocument
Dim cldoc As NotesDocument
Dim prid As Variant
Dim mem As Variant

Set session= New NotesSession
Set doc=session.documentcontext
prid= doc.GetItemValue( "Team" )

Set db = session.CurrentDatabase
Set view = db.GetView("PeopleByTeam")
Set nav = view.CreateViewNavFromCategory(prid (0))
Set entry = nav.GetFirstDocument

If Not(entry Is Nothing) Then	
Set cldoc = entry.Document
mem = cldoc.Members
doc.Members= mem
'Call doc.Save(True, True, True)
Else
Print("No Team with such Leader")
End If 	
Exit Sub
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#13
<!--QuoteBegin-Idea+19:04:2007, 13:56 -->
<span class="vbquote">(Idea @ 19:04:2007, 13:56 )</span><!--QuoteEBegin-->'Call doc.Save(True, True, True)
[snapback]62837" rel="nofollow" target="_blank[/snapback]​
[/quote]
Всё таки нужно сохранять.
Если агента вызываешь в WebQuerySave, то не нужно.
Тогда непонятно чего не работает. Значение не пишется?
 
I
#14
Всё таки нужно сохранять.
Если агента вызываешь в WebQuerySave, то не нужно.
Тогда непонятно чего не работает. Значение не пишется?
да, хотелось бы, чтоб когда тыкаешь кнопку, было все-таки видно, что в поле что-то изменилось.

и сразу про Alert:
что нужно, чтобы вот это
Код:
 Print "<script LANGUAGE=JavaScript>"
Print "alert(""No Team with such Leader"")"
Print "</SCRIPT>"
заработало?
в том же самом агенте. пока ничего не всплывает:)
 
I
#15
и ещё, в клиенте-то ещё хоть как-то пашет. а в браузере пишет внутреннюю ошибку сервера.
 
I
#16
Для тех, у кого возникнут аналогичные проблемы (моя счастливо разрешилась):
1) юзайте где можно @DBLookup
2) проверяйте триггеры агентов (что б их... )
3) вешайте на WebQuerySave код
Код:
	Set session= New NotesSession
Call session.documentcontext.compwithform()
Call session.documentcontext.save(True,False)
для пересчета лукапов и прочих формул.

Спасибо всем откликнувшимся
 
Вверх Снизу