1

私はJavaアプリケーションからDynamicsCRM統合を行っており、CRMトレーニングキットの例に従って、アカウントと連絡先の接続と作成に成功しました。アカウントの作成や、連絡先をアカウントに接続するときに、フィールドを追加する際に問題が発生しました。たとえば、選択リストである「address1_freighttermscode」でアカウントを作成することはできません。私のコードは次のとおりです。

private static OrganizationServiceStub.Guid createAccount(OrganizationServiceStub serviceStub, String[] args) {
    try {
        OrganizationServiceStub.Create entry = new OrganizationServiceStub.Create();
        OrganizationServiceStub.Entity newEntryInfo = new OrganizationServiceStub.Entity();
        OrganizationServiceStub.AttributeCollection collection = new OrganizationServiceStub.AttributeCollection();
        if (! (args[0].equals("null") )) {
          OrganizationServiceStub.KeyValuePairOfstringanyType values = new OrganizationServiceStub.KeyValuePairOfstringanyType();
          values.setKey("name");
          values.setValue(args[0]);
          collection.addKeyValuePairOfstringanyType(values);
        }
     if (! (args[13].equals("null"))){
          OrganizationServiceStub.KeyValuePairOfstringanyType incoterm = new OrganizationServiceStub.KeyValuePairOfstringanyType();
          incoterm.setKey("address1_freighttermscode");
          incoterm.setValue(args[13]);
          collection.addKeyValuePairOfstringanyType(incoterm);
        }

        newEntryInfo.setAttributes(collection);

        newEntryInfo.setLogicalName("account");

        entry.setEntity(newEntryInfo);

        OrganizationServiceStub.CreateResponse createResponse = serviceStub.create(entry);
        OrganizationServiceStub.Guid createResultGuid = createResponse.getCreateResult();

        System.out.println("New Account GUID: " + createResultGuid.getGuid());

        return createResultGuid;
    } catch (IOrganizationService_Create_OrganizationServiceFaultFault_FaultMessage e) {
        logger.error(e.getMessage());
    } catch (RemoteException e) {
        logger.error(e.getMessage());
    }

    return null;
}

実行すると、このエラーが発生します

[ERROR] Incorrect attribute value type System.String

選択リストまたはルックアップを処理する方法の例を誰かが持っていますか?

連絡先をアカウントに接続するには、フィールドparentcustomeridに入力parentcustomeridtypeし、アカウントのGUIDと「アカウント」を使用しますが、連絡先はアカウントに関連付けられません。

4

2 に答える 2

1

ピックリスト値を設定するには OptionSet を使用する必要があり、ルックアップには EntityReference を使用する必要があります。SDK の C# ドキュメントを参照してください。Axis で生成された Java コードを使用しても同じように動作するはずです。

incoterm.setKey("address1_freighttermscode")   
//assuming the arg is an integer value that matches a picklist value for the attribute    
OptionSetValue freight = new OptionSetValue();
freight.Value = args[13];
incoterm.setValue(freight);    
collection.addKeyValuePairOfstringanyType(incoterm);
于 2013-01-03T05:07:08.863 に答える
-1

私は 10 年以上 Java を使っていません (そして、Dynamics のような MS の作成に取り組んだことはありません)。:)

REST Web サービスを使用して、インスタンスを作成する CRM を直接呼び出すことができます。私の知る限り、これはプラットフォームに依存せず、公開されたサービスOrganizationDataに接続できる限り機能するはずです。

于 2012-12-28T19:21:13.727 に答える