Получить текущий документ в Web

  • Автор темы Автор темы wowa
  • Дата начала Дата начала
W

wowa

Есть форма, на ней есть Кнопка...
При нажатии на нее - запускается агент
Код:
<a href=\"/"+@WebDbName +"\\имя_агента?OpenAgent\">


Подскажите, пожалуйста, как получить в агенте текущий документ????, при условии что этот документ не сохранен и его не нужно сохранять...

Я уже как-то пробывал передавать параметры... типа (не знаю правильно или не правильно)
Код:
<a href=\"/"+@WebDbName +"\\имя_агента?OpenAgent&param="+@Text(@DocumentUniqueID)+"\"


Там я получаю этот @Text(@DocumentUniqueID), а куда там его впихнуть, типа getdocumentByUnid, или как правильно?
Вообщем помогите, плз....
 
Попробуй использовать свойство notesSession.DocumentContext.
 
Если агент вызывается через урл, то notesSession.DocumentContext не вернет текущий документ. ДЖля того, что бы получить определенный дкоумент в агенте, который вызывается по урлу, необходимо передать унид документа в параметре урла.
например

Код:
<a href=\"/"+@WebDbName +"\\имя_агента?OpenAgent&param="+@Text(@DocumentUniqueID)+"\">

А в самом кгенте зачитать этот парам из Query_String
Код:
 dim s as new notesSession
Set db = s.CurrentDatabase
Set wdc = s.DocumentContext

webdbname = Replace(db.FilePath, "\", "/")
unid = Evaluate({@trim(@Right(@explode(Query_String_Decoded; "&"); "param="))} ,wdc)
 
Не совсем понимаю , unid я получал сам,... но так и не смог я с ним получить документ
А также зачем webdbname???
Для того чтобы использовать GetDocumentByURL ????????? Вообщем можно немного поподробнее?
 
С вебом работал мало, но, чувствую, сложно будет получить документ, которого нет (т.е. не сохранен) в базе.
 
@WebDbName возвращает веб ссылку на базу данных (хотя я использую @Subset(@DBName; -1).
Унид Вам нужно передать в агент, что бы в нем получить документ используя db.getDocumentByUNID.

Что в моем примере не понятно?
 
С вебом работал мало, но, чувствую, сложно будет получить документ, которого нет (т.е. не сохранен) в базе.

Это точно сказано, в агенте, который вызывается по урлу несохраненный документ не получишь.
Я стараюсь использовать тулзранмакро для вызова агента в ВЕБе - во первых данные постятся на сервер, во вторых документ получить проще (notessession.documentcontext)...
 
Вот это зачем мне в агенте? : webdbname = Replace(db.FilePath, "\", "/")
 
Для: wowa
в смысле длинный? 32 символа B). Что передали - то и нашлось... Вы же наверняка знаете, что Evaluate возвращает variant... :)
 
Возможно, еще несохраненный документ можно будет получить используя свойство notesSession.DocumentContext и событие WebQuerySave. Т.е. испольуя кнопку Submit. В самом агенте документ не сохранять.

<!--QuoteBegin-wowa+22:02:2008, 15:44 -->
<span class="vbquote">(wowa @ 22:02:2008, 15:44 )</span><!--QuoteEBegin-->но unid какой-то длинный находит
[snapback]99248" rel="nofollow" target="_blank[/snapback]​
[/quote]
Наличие unid еще не значит, что документ сохранен в базе. B)
 
Для: Sandr
Что я не правильно делаю? , давай заново
на кнопке прописано
Код:
......<a href=\"/"+@WebDbName +"\\имя_агента?OpenAgent&param="+@Text(@DocumentUniqueID)+"\">......


В агенте

Код:
Dim s As New NotesSession
Set db = s.CurrentDatabase

Dim wdc As NotesDocument
Dim doc As NotesDocument

Set wdc = s.DocumentContext

unid = Evaluate({@trim(@Right(@explode(Query_String_Decoded; "&"); "param="))} ,wdc)
Set doc = db.GetDocumentByUNID(unid(0))
 
Кнопка Submit и событие WebQuerySave тебя точно спасет, как и упоминал уважаемый Medevic.
Это намного быстрее и проще, чем разгребаться с унидами.
 
Что за кнопка и как ее использовать ? (((
 
<form action='здесь можно указать что угодно'>
[FIELD] 'лотусное поле
<input type="submit" name="button" value="Нажми меня нежно" >
</form>

Короче, по клику кнопки submit происходит событие WebQuerySave для твоей формы, по нему нужно запускать агент, который через notessession.contextdocument перехватит документ запроса и все его содержимое соответственно
 
Забыл добавить, что всю эта прелесть лучше просто нарисовать на форме и веб-юзверю преподносить именно формой, а не документом, только тогда ему откроется возможность заполнять поля и отсылать данные на сервер (насколько я понял, задача стоит именно так)

А чтобы совсем исчезли неясности: в атрибуте action тега form обычно приводится адрес программы-обработчика запроса, то бишь cgi-скрипта, однако в данном случае agent вызывается через WebQuerySave, поэтому можешь просто вписать параметром урл страницы, на которую хочешь перевести юзера, либо же вообще его опустить, а перевести уже исполяющимся агентом
 
Для: Программер

Не путайте человека сабмитом... Не всегда документ нужно сохранять при вызове агента.. даже чаще его сохранять не надо...А сабмит его сохранит...

Для: wowa

Я же написал выше

Я стараюсь использовать тулзранмакро для вызова агента в ВЕБе - во первых данные постятся на сервер, во вторых документ получить проще (notessession.documentcontext)...

Тоесть, лепите кнопку на форму, код кнопки @Command([ToolzRunMakro];"Имя агента")

В этом агенте текущий окумент notessession.documentcontext

Кнопку можете кликать так, как вам угодно, в том числе и яваскриптом.
Код:
document.getElementById("ID княпки").click();

Если не хотите, чт обы кнопка светилась, на последней закладке в свойстве кнопке в параметре style напишите display:none.

Что еще сказать? Лотус в ВЕБе очень гибкий.. выходов из люьой ситуации можно найти море...

ЗЫ: чистый сабмит использую о-о-очень редко...
 
Sandr
Большое Спасибо! +1... Сработало как надо!
 
Sandr , может ты знаешь, почему не работает

Код:
	Set doc = s.DocumentContext
Call doc.ReplaceItemValue( "LEA_SD_StringSearch_TX", "бла-бла-бла")

Т.е. у меня не получается при нажатии на кнопку занести значение в поле.... Тут какие-то особенности?
 
Может быть, ты просто не сохраняешь документ ?
 
Мы в соцсетях:

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