Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе
- всё ж с появлением хэпаг актуальность композитов упала до нуля. А пример да, клёвый.Я всё про то же...
НЕ фига не упало.. и даже больше скажу.. ни композитные приложения ни xPages не помогут по одной простой причине.. ни те ни другие не работают на бейсик клиентах))) так сказать шах и мат.. крутись как хошь, а сделать нуно чтоб работало на всяких клиентах.. и таким образом получается что нужно выкручиваться самыми обычными средствами....
состряпал вот такую фиговину: Посмотреть вложение 6602
но вот бяда... она открывает подчиненные только при открытии фреймсета.. при перемещении по записям не меняется((
не совсем...кучу кода переписать и базу адаптировать
Вы в этом уверены? Готовый пример есть выше - можете попробовать... и даже больше скажу.. ни композитные приложения ... не работают на бейсик клиентах
Можно поподробнее? Имею приложение в котором куча кода на QueryOpen, QuerySave, QueryClose форм, часть кода хранится в настоечных документах в виде текста LS и формул и выполняется через Evaluate и Execute, возвращая либо код код успешного завершения, либо генерирует ошибку. Также должны возвращаться сообщения типа "Вы не заполнили поле..." и т.п. Хотел попробовать "внедрить" в это приложение XPages, но останавливает необходимость переписывать всё это на JS.вызов LS, из хэпагов, вполне реально сделать через агентов, а многие ЮИ решения становятся проще:
о том что - это "зло", я уже не раз писалИмею приложение в котором куча кода на QueryOpen, QuerySave, QueryClose
с моей т.з. - вс будет гораздо быстрее, многие вещи просто не надо будет кастылировать (как пример - валидаторы, без всяких ошибок)Хотел попробовать "внедрить" в это приложение XPages, но останавливает необходимость переписывать всё это на JS.
var entry:NotesViewEntry=lastContract();
calcOnDate();
return entry.getColumnValues().elementAt(1).toString();
function calcOnDate(){
//return "dummy";
var name:string = "CalcOnDate";
var unid:string = name+java.lang.System.currentTimeMillis();
var dt:NotesDateTime =session.createDateTime("Today");
print ("date:" + getComponent(DATE_FLD).value);
dt.setLocalTime(getComponent(DATE_FLD).value);
//http://www.openntf.org/main.nsf/project.xsp?r=project/xTalk%20Discussion%20Forums/defects/0ABCC3CFDEDB0C21862578B8007C67DF
//var db:NotesDatabase = database;
var db:NotesDatabase = sessionAsSigner.getDatabase(session.getServerName(),session.getCurrentDatabase().getFilePath());
print ("db name:" +database.getTitle());
//create profile document for parameters
var profDoc:NotesDocument = db.getProfileDocument(name, unid);
profDoc.replaceItemValue(DATE_FLD, dt);
profDoc.replaceItemValue("parentUNID", lastContract().getUniversalID());
profDoc.replaceItemValue("replyID", unid);
profDoc.save();
var profDocID:String = profDoc.getNoteID();
//get agent and call it with profile doc
var agent:NotesAgent = db.getAgent(name);
print("Calling agent"+agent.getName()+" with "+profDocID);
agent.run(profDocID);
//extract returned value
profDoc = db.getProfileDocument(name, unid);
requestScope.rest = "-";
requestScope.restprc = "-";
requestScope.percent = "-";
if (profDoc == null) {
print("There isn't reply doc!");
}
else {
if (profDoc.hasItem(PERCENT_FLD)) {
requestScope.rest = profDoc.getItemValue(REST_FLD)[0];//.toString();
requestScope.restprc = profDoc.getItemValue(RESTPRC_FLD)[0];
requestScope.percent = profDoc.getItemValue(PERCENT_FLD)[0];
}
else {
print("Calc failed");
}
}
//remove doc
profDoc.remove(false);
return requestScope.percent
}
@SetTargetFrame("названиефрейма4");
@Command([OpenView]; "названия вида во фрейме 4");
@SetViewInfo([SetViewFilter];@Text(@DocumentUniqueID);"$36";1);
Обучение наступательной кибербезопасности в игровой форме. Начать игру!