Вот код, который вам понадобится на основе некоторых комментариев к вопросу.
function simplegetSequentialNumber(){
synchronized(applicationScope){
var newSeqNum:Int = 0;
if (applicationScope.containsKey("seqNumber")){
newSeqNum = applicationScope.get("seqNumber") + 1;
applicationScope.put("seqNumber", newSeqNum);
var seqView:NotesView = database.getView("vw_SequentialNumberStore");
var seqNumberDoc:NotesDocument = seqView.getFirstDocument();
seqNumberDoc.replaceItemValue("seqNumber",applicationScope.get("seqNumber"));
seqNumberDoc.save(true,true);
} else {
var seqView:NotesView = database.getView("vw_SequentialNumberStore");
try {
var seqNumberDoc:NotesDocument = seqView.getFirstDocument();
applicationScope.put("seqNumber",seqNumberDoc.getItemValueInteger("seqNumber") + 1);
seqNumberDoc.replaceItemValue("seqNumber",applicationScope.get("seqNumber"));
seqNumberDoc.save(true,true);
newSeqNum = applicationScope.get("seqNumber");
} catch(e) {
var seqNumberDoc:NotesDocument = database.createDocument();
seqNumberDoc.replaceItemValue("Form","cPanel");
seqNumberDoc.replaceItemValue("seqNumber",1);
applicationScope.put("seqNumber", 1);
seqNumberDoc.save(true,true);
newSeqNum = 1;
}
}
}
var seqNNNN:String = ("0000" + newSeqNum.toString()).slice(-4);
return seqNNNN;
}
Как вы можете видеть, он сначала получает следующее последовательное число в синхронизированном блоке, добавляет к нему одини затем помещает число обратно в applicationScope.
Затем он преобразует его в строку, добавляет дополнительные 4 нуля и затем правильные 4 символа из нее.Это возвращает строку и должно быть сохранено в текстовом поле.Вы не можете сохранить его в числовом поле, потому что Notes автоматически удалит начальные нули из значения.
Вы можете протестировать эту функцию, добавив ее в библиотеку JavaScript на стороне сервера, а затем включив ее в простую страницу, которая запускаетсяэлемент управления repeat, чтобы повторить вычисляемое поле, которое просто вызывает функцию.Вот моя тестовая страница.
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.resources>
<xp:script src="/seqNum.jss" clientSide="false" />
</xp:this.resources>
<xp:repeat id="repeat1" rows="30" value="#{javascript:30}">
<xp:text escape="true" id="computedField1"
value="#{javascript:simplegetSequentialNumber();}" />
<xp:br id="br1" />
</xp:repeat>
</xp:view>