1

我正在从 Java 应用程序进行 Dynamics CRM 集成,并且我遵循了 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

我已经有十多年没有使用 Java 了(而且从来没有像 Dynamics 这样的 MS 创作),所以它可能与你喜欢的东西相去甚远。:)

您可以使用 REST Web 服务并直接调用 CRM 创建您的实例。据我所知,这是独立于平台的,只要您可以连接到公开的服务OrganizationData就应该可以工作。

于 2012-12-28T19:21:13.727 回答