Salesforce中Account & Contact关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Salesforce中Account & Contact关系相关的知识,希望对你有一定的参考价值。

参考技术A In Salesforce, you store information about your customers using accounts and contacts. Accounts are companies that you're doing business with, and contacts are the people who work for them.

在Salesforce中,用Account 和 Contact对象来存储客户信息,即客户和联系人,对于toB,两个对象都需要;对于toC,就是个人客户a Person Account。toB和toC account的主要区别:

        ● 个人客户不能关闭。

        ● 如果公司客户和个人客户同时存在,在添加客户时需要选择客户类型。

        ● 个人客户没有联系人。

        ● 个人客户没有层级。

理解Three Key Account and Contact Relationships,有助于更好更高效地达成交易。

        1.Contacts to Multiple Accounts ,并维护Contact Role

        2.Account Hierarchy,建立客户之间的层级关系,在account记录中选择Parent Account。

        3.Account Teams ,为了赢得某个业务机会,本公司中有哪些Sales Rep在一起工作。

下面是实际操作:

1.Account and Contact Relationship

        在Account对象中维护Account Contact Relationship

        打开一条Account记录,在Related Contacts中,点击add relationship

一个Account中多个Contacts

  Account和Contact的关系,也可以通过Contact记录来添加。

        一个联系人可以添加多个客户,但是有一个要设置为Direct(勾选)

Play1中用到的:Customer Account Layout 和  Contact Layout

2.Account Hierarchy

        维护客户的层级关系,需要在子公司的Parent Account中选择母公司。

        展示层级关系,点击客户名称旁边的层级图标,则以树状展示公司之间的关系。

3.Account Team

        Account Team需要默认关闭,需要在setup中启用,并且加到Account的页面布局的Related List中。

        Optionally,设置Team Roles,设置不同的角色,同时可以设置权限(对account contact 等)

        Add Team Members,打开一条Account记录,在Related List中添加Account Team

        Add default team是一键添加用户设置的default team。

        There are various ways to grant account team access. If a member is granted access via another method, the member’s actual access can be greater than the level you grant via this team.

        这意思是Account Team Access的优先级最低? 如果通过Profile 和Permission Set设置了更大权限,则权限以Profile或Permission Set为准。

            After you add an account team, the button  Add Default Team  displays right next to  Add  button. Default Teams is a shortcut that saves you from having to enter the same members into the same form over and over again. If the same people usually work together, create a default account team and assign them to it. You can even set Salesforce to add your default account team every time and eliminate the need to click buttons at all. Visit  Setting Up Default Account Teams  to find out how.

            在个人设置中添加Default Account Team

            To make account teams faster to use, you can set up your own personal Default Account Team in your personal settings.

            如果勾选了Automatically add my default account team to accounts……, 则new 一个 account时,account team会自动添加 ,在Related list中能查看到。

问题: 在Add Relationship时,选择一个联系人,提示错误:You can't associate a private contact with an account.

把Account的Ownership改成public

p1

-End-

.Net Salesforce 集成 - 从 List<sObject> 获取列值

【中文标题】.Net Salesforce 集成 - 从 List<sObject> 获取列值【英文标题】:.Net Salesforce integration - getting column values from List<sObject> 【发布时间】:2014-01-26 01:06:23 【问题描述】:

我们在 .Net 与 Salesforce.com 的集成中使用了合作伙伴 API。我正在使用以下代码将 Account 记录添加到字典中,并使用 ExternalId__c 作为每条记录的键。

public Dictionary<string, List<sObject>> getAccountMap(SalesforceConnection clientConn)

    Dictionary<string, List<sObject>> accountByMerchNum = new Dictionary<string, List<sObject>>();

    List<sObject> sObjRTypes = clientConn.performQuery("SELECT Id, ExternalId__c FROM Account");

    if (sObjRTypes != null && sObjRTypes.Count > 0)
    
        sObject Account = sObjRTypes[0];
        foreach (XmlElement elem in Account.Any)
        
            if (elem.LocalName.ToString() == "ExternalId__c")
            
                if (accountByMerchNum.ContainsKey(elem.InnerText))
                
                    accountByMerchNum[elem.InnerText].Add(Account);
                
                else
                
                    accountByMerchNum.Add(elem.InnerText, new List<sObject>  Account );
                
            
        
    
    return accountByMerchNum;

如何从 Dictionary> 中提取特定的列值?我猜它应该类似于以下内容......但到目前为止我的猜测是不正确的。

Dictionary<string, List<sObject>> accountDictionary = new Dictionary<string, List<sObject>>();
String tempId = accountDictionary[externalId].getId();

从这种类型的集合中提取特定列值的正确语法是什么?

【问题讨论】:

您需要使用合作伙伴 API 的任何特殊原因?如果它不必与几个不同的 Salesforce 组织一起工作,那么使用企业版可能会简单得多。解析(使用)WSDL 将为您提供具有具体字段的 Account 或 Contact 等类,使用起来更简单。 我们正在使用合作伙伴,因为正在处理的数据量很大。 【参考方案1】:

我在您的代码中看到了一些模棱两可的东西 -

    您正在查询所有 Account 对象并只处理第一个。如果您是 只对某些对象感兴趣,为什么不在查询中提供谓词(WHERE 子句)?

    您的字典值为List&lt;sObject&gt;。如果'ExternalId__c' 是一个唯一的自定义字段,您将始终为每个“ExternalId__c”值提供一个帐户对象。也许字典应该是字符串-> sObject。然后,您可以访问字典值并对其调用 sObject 方法。 dict[externalId].getId() 等

【讨论】:

以上是关于Salesforce中Account & Contact关系的主要内容,如果未能解决你的问题,请参考以下文章

salesforce account hierarchy

Salesforce 小知识:大量“子记录”的处理方法

salesforce零基础学习(九十八)Type浅谈

Salesforce REST 接口集成服务

我们可以在 Salesforce(apex) 中动态投射 SObject 吗?

AWS Appflow <-> Salesforce 集成