0

ボタン1(新しいメインドキュメントの応答ドキュメントを作成するため)とボタン2(既存のメインドキュメントの応答ドキュメントを作成するため)の2つのボタンがあります。初めて新しいメイン「MyBirthday」ドキュメントを作成し、応答を作成すると、1つだけになります応答文書をさらに作成しようとしても、応答文書が作成されます。これは、create-responseDoc 関数を呼び出す前にメイン ドキュメントを保存する button1 を非表示にしたときです。

応答ドキュメントの 2 つ目以降のエントリについては、メイン ドキュメントが既に保存されているため、create-responseDoc 関数を直接呼び出す button2 を作成しました。button2 をクリックしても何も影響しません。応答は作成されません。しかし、ドキュメントを閉じて再度開くと、これと同じことがうまくいきます。舞台裏で実際に何が起こっているのかを理解するのは難しいと思います!!

これは単純なはずですが、コードまたは私の理解のどこかに行き詰まっています。私の問題は次のとおりです。メイン ドキュメント「MyBirthday」があります。MyBirthday に紐づけられた「MyFamily Birthday」という回答文書を作成したいと考えています。メインドキュメントを送信せずにこれが必要です(保存できます)。

私がしたこと: 誕生日 xpage と家族の誕生日用の 2 つのフィールドを作成しました。「Create response doc 1」ボタンをクリックすると、最初に簡単なアクションを使用してメイン ドキュメントを保存します。次に、SSJS の関数を使用して応答ドキュメントを作成します。

私は2つの同様のボタンを作成しました(1番目は新しいドキュメント用、2番目は既存のドキュメント用):1つはメインドキュメントを最初に保存してからこの関数を呼び出し、もう1つはメインドキュメントを保存せずに応答を呼び出して作成します。

機能は以下のとおりです。

function fncCreateResponseDoc(currDoc:NotesDocument)
{
    var name = sessionScope.get("FNAME")
    var Bday = sessionScope.get("FBIRTH")
    var respDoc:NotesDocument = database.createDocument()
    respDoc.replaceItemValue("Form","rfFamily") 
    respDoc.replaceItemValue("FName",name)
    respDoc.replaceItemValue("FBirthday",Bday)
    respDoc.makeResponse(currDoc)
    respDoc.save()
    respDoc = null
}

次に、そのすぐ下に、これらの応答ドキュメントを表示するための繰り返しを配置し​​ます。繰り返しのデータバインディング式は次のようになります->currentDocument.getDocument().getResponses()

メイン ドキュメントを保存する前に、sessionScope 変数を設定します。

sessionScope.put("FNAME",currentDocument.getItemValueString("FName"))
sessionScope.put("FBIRTH",currentDocument.getItemValueDateTime("FBirthday"))

次に、この document1 の postSaveDocument イベントで:

var currDoc:NotesDocument = currentDocument.getDocument(true)
fncCreateResponseDoc(currDoc)

助けてください !!

4

1 に答える 1

1

Ravi さん、おそらくあなたの currDoc には保存されていないため、docid がありません。currDoc を追加します。save();最初にあなたの機能に。respDoc.recyle();また、null に設定する前に追加します。さらに、省略したそれぞれについて jostick を書き込み;ます (その <vbg> について議論しようとしないでください)。

それがどうなるか教えてください。

于 2013-02-27T15:43:22.800 に答える