通过SOAP/Java在MS Dynamics CRM 2011中创建产品
我从crm.dynamics.com/XRMServices/2011/Discovery.svc?wsdl和crm.dynamics.com/XRMServices/2011/Organization.svc?wsdl架构生成了所有必需的java类 我使用LiveId在CRM中进行了身份验证 现在我需要在产品目录中创建产品。下面是代码:通过SOAP/Java在MS Dynamics CRM 2011中创建产品,java,soap,dynamics-crm-2011,dynamics-crm-online,Java,Soap,Dynamics Crm 2011,Dynamics Crm Online,我从crm.dynamics.com/XRMServices/2011/Discovery.svc?wsdl和crm.dynamics.com/XRMServices/2011/Organization.svc?wsdl架构生成了所有必需的java类 我使用LiveId在CRM中进行了身份验证 现在我需要在产品目录中创建产品。下面是代码: Entity newEntryInfo = new Entity(); AttributeCollection collection = new Attri
Entity newEntryInfo = new Entity();
AttributeCollection collection = new AttributeCollection();
addAttribute(collection, "name", "Tama Starclassic Performer");
addAttribute(collection, "productnumber", "1");
addAttribute(collection, "price", createMoney("100.0"));
addAttribute(collection, "isstockitem", Boolean.TRUE);
addAttribute(collection, "statuscode", 1);
newEntryInfo.setAttributes(collection);
newEntryInfo.setLogicalName("product");
Guid productGuid = serviceStub.create(newEntryInfo);
private void addAttribute(AttributeCollection collection, String key, Object value) {
KeyValuePairOfstringanyType values = new KeyValuePairOfstringanyType();
values.setKey(key);
values.setValue(value);
collection.addKeyValuePairOfstringanyType(values);
}
执行显示错误“机组计划id丢失”
看起来我需要为新产品提供“单元组”和“默认单元”
问题:如何设置这些值?如果我使用RelatedEntities(如何创建)或Attributes(如何创建)作为表单上的查找,您应该能够使用
EntityReference设置值
使用以下方法:
addAttribute(collection, "fieldName", new EntityReference("entityName", new Guid("id"))
其中:
fieldName
是要填充的字段的架构名称
entityName
是要填充字段的实体的架构名称
id
是与entityName
类型相同的记录的Guid
把它放到一个上下文中(在这个上下文中,我碰巧知道我头脑中的模式名称)
另一方面,您使用这种冗长的代码风格有什么特别的原因吗?实体类有一个链接到基础属性字典的索引。这有点直截了当
如果您想了解更多示例,请查看:
//Create a new contact first
Entity contact = new Entity("contact");
contact["lastname"] = "Wood";
Guid contactId = service.Create(contact);
//Create an incident/case which links to that new contact
Entity incident = new Entity("incident");
incident["customerid"] = new EntityReference("contact", contactId)
service.Create(incident)