none
crm2011中,如何把客户和联系人关联到自定义的实体的一个字段上。 RRS feed

  • 问题

  • 例如:建立实体AAA。AAA上面新建一个属性EE。EE既能设置为客户,也能设置为联系人。

    怎么做呢?我现在是只能关联到客户或者联系人,不能通用。

    我想要实现的是像案例那样,客户可以关联到客户或联系人。


    nueRUAN

    2012年3月29日 6:39

全部回复

  • Partylist字段是系统内置的一种类型,无法通过属性编辑器进行配置。可以通过创建两个字段的方式完成。

    如果是CRM 4.0,那么可以参看我写的文章:http://www.cnblogs.com/StoneGarden/archive/2011/08/31/2160769.html


    daemon lin

    2012年3月30日 1:02
  • crm系统中已经存在的案例的客户属性对应的字段是“查找”(lookup)型。看了下它的关系设计,是N对1关系。它把客户和联系人对应的关系名称都取成同一个名字了。

    但自定义关系确不能添加2个同名的属性名。所以,不能实现一个字段可以关联到2个不同实体。

    感觉CRM2011的这个设计的不太方便,为什么预定义的可以,就不能自定义了。

    毕竟我想用一个字段“客户”,能关联到企业客户,也能关联到像联系人这样的个人客户。

    如果做成2个字段,有点不伦不类了。


    nueRUAN

    2012年3月30日 2:03
  • 仅根据你的需要,可以通过JS中动态改变LOOKUP的类别:

    var contactEntity = GetEntityAttribute("contact", "parentcustomerid", "contactid", ctiurl[0]);
                if (contactEntity.length > 0) {
                    // 反查客户并给赋值
                    var olookup = new Object();
                    olookup.id = contactEntity[0].text;
                    olookup.entityType = contactEntity[0].attributes[1].value;
                    olookup.name = contactEntity[0].attributes[0].value;
                    var olookupValue = new Array();
                    olookupValue[0] = olookup;
                    Xrm.Page.getControl('new_account').getAttribute().setValue(olookupValue);
                }
            }
            else if (ctiurl[2] == "account") {
                // 反查客户并给赋值
                var olookup = new Object();
                olookup.id = ctiurl[0];
                olookup.entityType = ctiurl[2];
                olookup.name = ctiurl[1];
                var olookupValue = new Array();
                olookupValue[0] = olookup;
                Xrm.Page.getControl('new_account').getAttribute().setValue(olookupValue);
            }

    2012年3月31日 9:20