2017-07-07 16 views
0

DocuSign Rest API(Java)を使用してテンプレートに基づいて封筒を作成しようとすると、以下のエラーが表示されます。エラーメッセージを存在しない特定の文書IDとして取得します。ドキュメントIDが「1」のドキュメントをアップロードしていましたが、1つのテンプレートでエラーが発生しました。DocuSign Rest API - TAB_REFERS_TO_MISSING_DOCUMENT

Exception: com.docusign.esign.client.ApiException: { 
    "errorCode": "TAB_REFERS_TO_MISSING_DOCUMENT", 
    "message": "The DocumentId specified in the tab element does not refer to a document in this envelope. Tab refers to DocumentId 69681238 which is not present." 
} 

誰でも上記のシナリオについて説明できますか?テンプレートやコードに変更を加える必要がありますか?私は追加のパラメータを渡す必要がありますか?

封筒創造コード:

try { 
    Path path = Paths.get(file); 
    fileBytes = Files.readAllBytes(path); 
} catch (IOException ioExcp) { 
    System.out.println("Exception: " + ioExcp); 
    return null; 
} 
// add a document to the envelope 
Document doc = new Document(); 
String base64Doc = Base64.encodeBase64String(fileBytes); 

doc.setDocumentBase64(base64Doc); 
doc.setName(fileName); 

doc.setDocumentId("1"); 

List<Document> docs = new ArrayList<Document>(); 
docs.add(doc); 
envDef.setTemplateId(templateId()); 
envDef.setDocuments(docs); 

List<TemplateRole> templateRolesList = new LinkedList<TemplateRole>(); 
TemplateRole templateRole = new TemplateRole(); 

templateRole.setEmail(signerEmail); 
templateRole.setName(signerName); 
templateRole.setRoleName("Signer1"); 
templateRole.setRoutingOrder("1"); 
templateRolesList.add(templateRole); 

TemplateRole templateRole2 = new TemplateRole(); 
templateRole2.setName(signerName1); 
templateRole2.setRoleName("Signer2"); 
templateRole2.setRoutingOrder("2"); 
templateRole2.setEmail(signerEmail1);    
templateRolesList.add(templateRole2); 

envDef.setTemplateRoles(templateRolesList); 

envDef.setAllowRecipientRecursion("true"); 
envDef.setStatus("created"); 

try { 
    EnvelopesApi envelopesApi = new EnvelopesApi(); 

    EnvelopeSummary envelopeSummary = envelopesApi.createEnvelope(accountId(), envDef); 

    DocumentTemplateList documentTemplateList = new DocumentTemplateList(); 
    DocumentTemplate documentTemplate = new DocumentTemplate(); 
    documentTemplate.setTemplateId(templateId()); 
    documentTemplate.setDocumentId(doc.getDocumentId()); 
    documentTemplateList.getDocumentTemplates().add(documentTemplate); 

    envelopesApi.applyTemplateToDocument(accountId, 
      envelopId(), doc.getDocumentId(), 
      documentTemplateList); 


} catch (com.docusign.esign.client.ApiException ex) { 
    System.out.println("Exception: " + ex); 
    ex.printStackTrace(); 
} 

テンプレートの一覧から文書IDを取得するために述べたように。私は文書配列を空にしています。ここにその答えがあります。

class EnvelopeTemplateResult { 
    templateId: <templateId> 
    name: Template 1 
    shared: true 
    password: 
    description: 
    lastModified: 2017-06-06T19:45:35.7670000Z 
    pageCount: 15 
    uri: /templates/<uri> 
    folderName: Templates 
    folderId: <folderId> 
    folderUri: /folders/<folderUri> 
    parentFolderUri: null 
    owner: class UserInfo { 
     userName: User Name 
     email: [email protected] 
     userId: userID 
     userType: null 
     userStatus: null 
     uri: null 
     errorDetails: null 
    } 
    documents: [] 
    recipients: null 
    transactionId: null 
    status: null 
    documentsUri: null 
    recipientsUri: null 
    asynchronous: null 
    envelopeUri: null 
    emailSubject: Sign Document 
    emailBlurb: Please sign this document 
    envelopeId: null 
    signingLocation: Online 
    customFieldsUri: null 
    envelopeIdStamping: null 
    authoritativeCopy: false 
    notification: null 
    notificationUri: null 
    enforceSignerVisibility: false 
    enableWetSign: true 
    allowMarkup: false 
    allowReassign: false 
    createdDateTime: null 
    lastModifiedDateTime: null 
    deliveredDateTime: null 
    sentDateTime: null 
    completedDateTime: null 
    voidedDateTime: null 
    voidedReason: null 
    deletedDateTime: null 
    declinedDateTime: null 
    statusChangedDateTime: null 
    documentsCombinedUri: null 
    certificateUri: null 
    templatesUri: null 
    messageLock: null 
    recipientsLock: null 
    brandLock: null 
    brandId: null 
    useDisclosure: null 
    emailSettings: null 
    purgeState: null 
    lockInformation: null 
    is21CFRPart11: null 
    isUniversalSignatureEnvelope: null 
} 
+0

があなたのテンプレートに封筒を作成するコードとドキュメントIDを共有してください参照してください。 [listTemplateDocuments](https://docs.docusign.com/esign/restapi/Templates/TemplateDocuments/list/)APIを使用して、テンプレート上のドキュメントIDを取得できます。また、この[回答](https://stackoverflow.com/a/36614213/1219543)を参照してください –

答えて

0

エンベロープ作成コードが表示されずに正確な問題を伝えるのは難しいです。

エンベロープの作成中に間違ったDocumentIdを使用している可能性があります。

listTemplateDocuments apiを使用して、テンプレート上のドキュメントIDを取得します。エンベロープの作成中に、テンプレートから正確なDocumentIdを使用します。

また、このanswerこのanswer

+0

あなたの応答に感謝します。私はコードスニペットを更新し、getListOfTemplatesからの応答を追加しました。再度、感謝します。 – Manikandan

+0

あなたのテンプレートIDは何ですか? –

+0

テンプレートには、1件のドキュメント、4件の受信者、12件のタブが表示されています。封筒を作成するときに、テンプレート上の文書を置き換えようとしていますか? –

関連する問題