我有2个文档被认为可以在它们之间传输文件。但是,它不起作用。我得到的例外是Exception occurred calling method NotesDocument.save() Notes error: One or more of the source document's attachment are missing. Run Fixup to delete the document in the source database.
,这是在我尝试从第一个文件传输文件开始的文档上调用save()
函数之后发生的。
功能如下:
function transferFiles(docToGetFrom, docToTransferTo, fileFieldFromFirstName, fileFieldFromSecondName)
{
var rit1:NotesRichTextItem = getFirstNotesRichTextItem(docToGetFrom, fileFieldFromFirstName);
docToTransferTo.copyItem(rit1, fileFieldFromSecondName);
deleteAllFilesFromDocument(docToGetFrom, fileFieldFromFirstName);
docToTransferTo.save();
}
function getFirstNotesRichTextItem(documentToGetFrom, fileFieldName)
{
if (documentToGetFrom == null)
{
return(null);
}
if (!documentToGetFrom.hasItem(fileFieldName))
{
return(null);
}
var rit1:NotesRichTextItem = documentToGetFrom.getFirstItem(fileFieldName);
return rit1;
}
function deleteAllFilesFromDocument(documentToDeleteFrom, fileFieldName)
{
var arr = getAllEmbeddedObjects(documentToDeleteFrom, fileFieldName);
for(var i = 0; i < arr.length; i++)
{
arr[i].remove();
}
documentToDeleteFrom.save();
}
function getAllEmbeddedObjects(documentToGetFrom, fileFieldName)
{
var rit1:NotesRichTextItem = getFirstNotesRichTextItem(documentToGetFrom, fileFieldName);
if (rit1 == null)
{
return(null);
}
try
{
var arr=rit1.getEmbeddedObjects();
return arr;
}
catch(e)
{
return(null);
}
}
根据普通逻辑,我需要执行以下操作才能使其正常工作:
save()
save()
我做的完全一样,但是却得到了这个讨厌的异常。另外,我尝试通过将 OLEDisableFX 设置为1来解决此问题,但没有好运。我假设方法copyItem()
一定有问题(我猜想它只能与简单的数据类型一起正常工作)。有什么问题?预先感谢。
答案 0 :(得分:3)
您可能需要将附件与源文档分离,并将其附加到目标文档。有关示例,请参见NotesEmbeddedObject类。
答案 1 :(得分:2)
使用NotesItem类的CopyItemToDocument方法。以下是我在LotusScript代理中使用的一些代码,但是Java和SSJS中也提供了CopyItemToDocument方法。
If doc.Hasitem("RTF1") Then
Set item = Nothing
Set item = doc.getFirstItem("RTF1")
Call item.Copyitemtodocument(targetdoc, "targetRTF")
Call item.Remove()
End If