Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lotus Notes/Domino: Программирование
Войти
Регистрация
Восстановить пароль
 
ymymdom
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 116
#1

Webquerysave агенты - Lotus

21.09.2010, 17:10. Просмотров 22472. Ответов 17
Метки нет (Все метки)

Здравствуйте, коллеги! Я никогда не писал на лотусе по Веб. Нужна ваша помощь!
При сохранении в браузере под WebQuerySave я вызываю агент X.
При попытке сохранения документа данный агент проводит проверку на заполняемость,
на повторяемость, на правильность заполнения и многие другие проверки. Если что-то
заполнено неправильно или не заполнено, то на форму должно выйти сообщение о
текущей ошибке. Сама форма в это время должна остаться неизменной, со всеми введенными
данными в ней. Проверка происходит правильно, сохранять не дает. Но вот alert не работает.
Я перерыл весь интернет, сроки жмут, начальство торопит, пробовал 312 вариантов. Но ничего
не помогло. Что делать? SOS
Примерный код:
...
set doc = session.DocumentContext
if doc.Field1(0)="" then
_ doc.SaveOptions="0"
_ Print |<script language="JavaScript" type="text/javaScript">|
_ Print |history.back();|
_ Print |alert("Заполните поле FIELD1");</script>|
_ exit sub
end if
...
http://www.cyberforum.ru/lotus-programming/thread2076016.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2010, 17:10
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Webquerysave агенты (Lotus):

Агенты
В агентах не силён, так как никогда ещё не пользовался. Возник вопрос,...

Агенты по расписанию
Привет! Есть сервер отчетов, на него поступают запросы на формирование...

Пользовательские агенты
Пытаюсь у пользователя запустить OutOfOffice агент. В хелпе сказано, что для...

Агенты и обновление полей
Есть серверный агент на Лотус скрипт. Пишется для работе в вебе. Суть - после...

Не Запускаются Агенты По Расписанию
Всем, привет! К сожалению поиск по сайту не работает, поэтому создал новую...

17
xKtomx
0 / 0 / 0
Регистрация: 11.09.2009
Сообщений: 313
21.09.2010, 17:38 #2
Есть серверная и клиентская обработка, алерты нужно обрабатывать на стороне клиента,а не вызовом агента

Добавлено: В вашем случае проверку можно сделать повесив яваскрипт код на событие onSubmit. Небольшой пример:

LotusScript
1
2
3
4
5
6
if (document.forms[0].Phone.value=="") {
alert(Please enter a value for the "Phone" field);
document.forms[0].SelectProduct.selectedIndex=0;
document.forms[0].Phone.focus();
return false; }
return true
0
tmyky
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
21.09.2010, 18:18 #3
если хоца делать валидацию на сервере - мона заюзать Ajax
в случае ошибки - плевать xml с ошибкой и парсить клиентом (кусок extJS месюг, но их можно на алерты заменить):

Код (Javascript):
var xml = response.responseXML;
if(xml) var errors = xml.getElementsByTagName(error);

if(!errors || !errors.length)
{
//здесь всё ок
}
else
{
var l = errors.length;
var msg = ;
for(var f=0; f<l; f++)
{
msg += errors[f].firstChild.nodeValue+\n;
}
Ext.MessageBox.alert(Ошибка, msg,
{icon: Ext.MessageBox.ERROR});
}
ошибка плювается так (java, мона переделать на LS):<!--shcode--><pre><code class=java> public void printStackTrace(Exception e){
e.printStackTrace();
if (pwout!=null){
printResponseHeader();
pwout.print("<error>");
e.printStackTrace(pwout);
pwout.print("</error>");
}
}

public void printResponseHeader(){
if (!isPrintedHeader && pwout!=null) {
pwout.println ("Content-Type: text/xml; charset=UTF-8");
pwout.println ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
pwout.println("<response>");
isPrintedHeader=true;
}
}
public void printError(String msg){
printResponseHeader();
pwout.println("<object>"+thys.getClass().getName()+"<error>"+msg+"</error></object>");
}
public void printResponseEnd(){
if (isPrintedHeader && pwout!=null) {
if(!isPrintedEnd){
pwout.println("</response>");
pwout.flush();
isPrintedEnd=true;
}
}
}
public void close(){
printResponseEnd();
}
public void finalize(){
printResponseEnd();
}[/CODE]
0
K-Fyry
0 / 0 / 0
Регистрация: 15.12.2006
Сообщений: 641
21.09.2010, 18:31 #4
Цитата Сообщение от IMENDAN
Примерный код:
...
set doc = session.DocumentContext
if doc.Field1(0)="" then
_ doc.SaveOptions="0"
_ Print |<script language="JavaScript" type="text/javaScript">|
_ Print |history.back();|
_ Print |alert("Заполните поле FIELD1");</script>|
_ exit sub
end if
...
Надо content type установить в application/script, или типа того перед тем как принты будут отрабатывать.
0
tmyky
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
21.09.2010, 18:49 #5
K-Fire
это рпавильно (Content-Type принтовать), но сама логика вывода (таким образом) скрипта - несколько "убога"
0
K-Fyry
0 / 0 / 0
Регистрация: 15.12.2006
Сообщений: 641
21.09.2010, 20:06 #6
Цитата Сообщение от lmike
K-Fire
это рпавильно (Content-Type принтовать), но сама логика вывода (таким образом) скрипта - несколько "убога" ;)
А что в разработке веба на лотусе не убого скажите мне?

Да и вообще любая разработка под веб убога...
0
tmyky
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
21.09.2010, 20:48 #7
я касательно javascript выводить, в клиента, таким образом
зачем пихать клиенту то, что он сам может делать (забрать ответ об ошибке и распарсить)
0
K-Fyry
0 / 0 / 0
Регистрация: 15.12.2006
Сообщений: 641
21.09.2010, 21:55 #8
Цитата Сообщение от lmike
я касательно javascript выводить, в клиента, таким образом ;)
зачем пихать клиенту то, что он сам может делать (забрать ответ об ошибке и распарсить)
А как он это сделает? WQS возвращает респонз, по сути это другая страница уже. Нужно придумывать геморрой типа установки некого флага, на onload запускать скрипт который проверит флаг и выдаст алерт. При корректном завершении этот флаг сбрасывать. Бррр...

Или делать еще больший гемор с вызовом WQS агента аяксом, а потом парсить респонз и понимать что там вообще произошло? Бррр...
0
ymymdom
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 116
22.09.2010, 10:57 #9
Цитата Сообщение от xRomax
Есть серверная и клиентская обработка, алерты нужно обрабатывать на стороне клиента,а не вызовом агента

Добавлено: В вашем случае проверку можно сделать повесив яваскрипт код на событие onSubmit. Небольшой пример:

LotusScript
1
2
3
4
5
6
if (document.forms[0].Phone.value=="") {
alert(Please enter a value for the "Phone" field);
document.forms[0].SelectProduct.selectedIndex=0;
document.forms[0].Phone.focus();
return false; }
return true
Тогда ставится вопрос, как этим скриптом войти выполнить следующую проверку:
(еще пару строк из первого агента):
set view = db.GetView("viewform1check")
key = doc.Field1(0) + doc.Field2(0) + doc.Field3(0)
set col = view.GetAllDocumentsBuKey(key)
if col.Count>0 then
Print |<script language="JavaScript" type="text/javaScript">|
Print |history.back();|
Print |alert("Ошибка! Запрещено вручать одну и ту же награду");</script>|
end if

Там еще проходит проверка на существование в полях разных ненужных символов (точка и т.д.),
а также в русских полях, проверка на существования символов казахского языка (запрещено). Может
ли кто привести пример как это сделать, тогда можно будет всю проверку проводить просто
JavaScript-ом изначально.
0
hosm
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
22.09.2010, 11:50 #10
Цитата Сообщение от IMENDAN
Там еще проходит проверка на существование в полях разных ненужных символов (точка и т.д.),
а также в русских полях, проверка на существования символов казахского языка (запрещено). Может
ли кто привести пример как это сделать, тогда можно будет всю проверку проводить просто
JavaScript-ом изначально.
это можно, посмотрите для строки indexOf и регулярки.
единственный минус, что яваскриптовую проверку можно легко отключить, так что лучше дублировать на сервере.
тот код, что выше- имхо, можно через аджакс-запрос к серверу.
0
tmyky
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
22.09.2010, 12:40 #11
Цитата Сообщение от K-Fire
Или делать еще больший гемор с вызовом WQS агента аяксом, а потом парсить респонз и понимать что там вообще произошло? Бррр... smile.gif
ещё больший Бррр - генерить часть клиентского кода на сервере - т.е будем программить одновременно в двух местах ага
понятно gwt гугл создал - там оно автоматически, но руками, по собственной воле - м-да
0
ymymdom
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 116
22.09.2010, 16:14 #12
Цитата Сообщение от lmike
ещё больший Бррр - генерить часть клиентского кода на сервере - т.е будем программить одновременно в двух местах ага
понятно gwt гугл создал - там оно автоматически, но руками, по собственной воле - м-да
А вообще, кто-нибудь знает реально ли через WQS-агент делать alert-ы на веб форму? Если да, то как,
если нет, то почему? Плиз помогите. Просто не охота делать другими методами, там уже столько проверок выполнено, что делать это на яве или другими методами, просто большая работа.

Добавлено:


Цитата Сообщение от lmike
ещё больший Бррр - генерить часть клиентского кода на сервере - т.е будем программить одновременно в двух местах ага
понятно gwt гугл создал - там оно автоматически, но руками, по собственной воле - м-да
А вообще, кто-нибудь знает реально ли через WQS-агент делать alert-ы на веб форму? Если да, то как,
если нет, то почему? Плиз помогите. Просто не охота делать другими методами, там уже столько проверок выполнено, что делать это на яве или другими методами, просто большая работа. :newconfus:
0
tmyky
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
22.09.2010, 17:13 #13
STFG: Content-type site:
http://www.google.com/search?hl=ru&inl...amp;x=0&y=0
0
rymsk
0 / 0 / 0
Регистрация: 12.11.2009
Сообщений: 882
22.09.2010, 19:24 #14
Цитата Сообщение от IMENDAN
А вообще, кто-нибудь знает реально ли через WQS-агент делать alert-ы на веб форму? Если да, то как,
если нет, то почему? Плиз помогите. Просто не охота делать другими методами, там уже столько проверок выполнено, что делать это на яве или другими методами, просто большая работа. ;)
Конечно реально, лет 15 уже Точно так же как и на других платформах - на PHP как это происходит?
Сабитятся форма, апликуха проводит проверки и плюют обратно морду лица с внедренным уже алертом
Есть более изящный варианты, когда перед сабмитом или в процессе ввода данных проверяются поля формы на валидность - тут уж AJAX вам в руки. Т.е. через AJAX запрос посылается значения полей и возвращается результат проверки. Т.е. ваши наработки можно сохранить
0
tmyky
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
22.09.2010, 20:05 #15
Цитата Сообщение от rinsk
через AJAX запрос посылается значения полей и возвращается результат проверки
я это предлагал - отвергают ;)
0
ymymdom
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 116
27.09.2010, 13:43 #16
Цитата Сообщение от lmike
я это предлагал - отвергают ;)
:lovecodeby: Imike! Спасибо большое за совет! Я пришел к тому, что без Ajax не обойтись
Честно говоря, я даже воспользоваться вашими не знаю как? может еще что-нибудь предложите?
или скинете самый минимальный пример. а то никак ((( вообще не догоняю...
0
tmyky
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
27.09.2010, 16:00 #17
IMENDAN
дык выше и написано - там минимум кода, что в нём непонятно?
pw.println - это Print на LS
в случае ошибки вызыв. либо эксепшн с printStackTrace либо printError

close вызывается по окончании агента

ну там защита от повторной печати хидера и закрывающего тега

всё выводится строками, с нодами XML (какие пожелаете)
на клиенте анализируется ответ (код javascript)
0
tmyky
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
27.09.2010, 17:39 #18
куски кода отсюдова
0
27.09.2010, 17:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2010, 17:39
Привет! Вот еще темы с решениями:

Агенты По Расписанию Зависают
Ребята, если может кто сталкивался с такой проблемой подскажите. Есть база, в...

Куда подевались агенты?
Не уверен - сюда это или в Админство. У сотрудника пуст список агентов,...

Managed Beans И Java-агенты
Можно ли в ява-агенте использовать ява классы, что лежат не в Script Libraries,...

Ls агенты: проблема запуска с сервера на сервере
Имею Сервер1, на котором юзер запускает агент1 через RunOnServer. Агент1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru