如何在salesforce中建立opportunity object

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在salesforce中建立opportunity object相关的知识,希望对你有一定的参考价值。

参考技术A sObject 的创建:(sObject的创建有两种,一种可以通过salesforce页面创建,一种是通过编写object文件上传同步,这里主要介绍简单的通过salesforce页面创建的方法)

页面创建:

a. 登陆 salesforce,点击setup。(登陆salesforce,如果是自己注册的试用环境或者正式环境,登陆地址:https://login.salesforce.com/。如果是申请的sandbox开发环境,登陆地址为:https://test.salesforce.com/)


b. 在quick find 中搜索objects,点击左侧导航栏中的Objects。 


c.点击new customer object


d.根据页面提示填写创建Object的相关信息



*注意:
1.record type可以控制显示不同的layout,必要时可以可以运用它做动态控制。
2.options features中是这个object额外提供的一些功能。注意其中我们常用的track field history这个功能,每个object最多只能有20字段进行操作记录跟踪。
3.object classification是一些api的应用权限和是否允许使用sharing rule(像记录share给某个group或者user,才能查看的规则应用)。

e.点击保存就创建了一个新的sObject。

通过编写object文件:

<?xml version="1.0" encoding="UTF-8"?>

    <allowInChatterGroups>false</allowInChatterGroups>
    <compactLayoutAssignment>SYSTEM</compactLayoutAssignment>
    <deploymentStatus>Deployed</deploymentStatus>
    <description>Location a Sales agent works out of</description>
    <enableActivities>false</enableActivities>
    <enableBulkApi>true</enableBulkApi>
    <enableFeeds>false</enableFeeds>
    <enableHistory>true</enableHistory>
    <enableReports>false</enableReports>
    <enableSearch>true</enableSearch>
    <enableSharing>true</enableSharing>
    <enableStreamingApi>true</enableStreamingApi>
    <fields>
        <fullName>Active__c</fullName>
        <defaultValue>true</defaultValue>
        <externalId>false</externalId>
        <label>Active</label>
        <trackHistory>true</trackHistory>
        <trackTrending>false</trackTrending>
        <type>Checkbox</type>
    </fields>
    <fields>
        <fullName>Code__c</fullName>
        <externalId>false</externalId>
        <label>Code</label>
        <length>32</length>
        <required>false</required>
        <trackHistory>true</trackHistory>
        <trackTrending>false</trackTrending>
        <type>Text</type>
        <unique>false</unique>
    </fields>
    <label>KSR DSO</label>
    <nameField>
        <label>Name</label>
        <trackHistory>true</trackHistory>
        <type>Text</type>
    </nameField>
    <pluralLabel>KSR DSOs</pluralLabel>
    <sharingModel>Private</sharingModel>
</CustomObject>

        这个是我简单写的一个Object的demo。同步到环境上好使,我们主要编写更改的是<fields></fields>标签。编写自己自己需要的字段。不过一般我们常用的还是直接在salesforce页面上更改,简单方便。

如何避免在创建用户的Salesforce测试中出现MIXED_DML_OPERATION错误

有时在Salesforce测试中,您需要创建User对象以作为特定类型的用户运行部分测试。

但是,自Salesforce Summer 08更新以来,尝试在同一测试中创建用户对象和普通对象(如帐户)会导致以下错误:

MIXED_DML_OPERATION,更新非安装对象后,不允许对安装对象进行DML操作(反之亦然):用户,原始对象:帐户

请注意,从Eclipse / Force.com IDE运行测试时不会发生错误,但是当您部署到Salesforce然后从Salesforce中运行测试时,确实会发生错误。

如何重新编写测试以避免此错误?

以下是导致错误的测试的简单示例:

static testMethod void test_mixed_dmlbug() {        
    Profile p = [select id from profile where name='(some profile)'];
    UserRole r = [Select id from userrole where name='(some role)'];
    User u = new User(alias = 'standt', email='standarduser@testorg.com', 
            emailencodingkey='UTF-8', lastname='Testing', 
            languagelocalekey='en_US', 
            localesidkey='en_US', profileid = p.Id, userroleid = r.Id,
            timezonesidkey='America/Los_Angeles', 
            username='standarduser@testorg.com');
    Account a = new Account(Firstname='Terry', Lastname='Testperson');
    insert a;

    System.runAs(u) {
        a.PersonEmail = 'test@madeupaddress.com';
        update a;
    }

}
答案

我猜这里的Salesforce人员不多。

我找到了一个解决方案,我不知道它为什么有效,但它确实有效。

访问普通对象的测试的所有部分都需要包装在显式使用当前用户的System.runAs中,如下所示:

User thisUser = [ select Id from User where Id = :UserInfo.getUserId() ];
System.runAs ( thisUser ) {
    // put test setup code in here
}

因此,问题中给出的示例text_mixed_dmlbug方法将变为:

static testMethod void test_mixed_dmlbug() {  
    User u;
    Account a;      
    User thisUser = [ select Id from User where Id = :UserInfo.getUserId() ];
    System.runAs ( thisUser ) {
        Profile p = [select id from profile where name='(some profile)'];
        UserRole r = [Select id from userrole where name='(some role)'];
        u = new User(alias = 'standt', email='standarduser@testorg.com', 
            emailencodingkey='UTF-8', lastname='Testing', 
            languagelocalekey='en_US', 
            localesidkey='en_US', profileid = p.Id, userroleid = r.Id,
            timezonesidkey='America/Los_Angeles', 
            username='standarduser@testorg.com');
        a = new Account(Firstname='Terry', Lastname='Testperson');
        insert a;
    }
    System.runAs(u) {
        a.PersonEmail = 'test@madeupaddress.com';
        update a;
    }

}

然后MIXED_DML_OPERATION错误停止发生。

另一答案

好像你找到了一个解决方法。我只是想尝试清理为什么你在哪里得到这个错误。

我认为你遇到了这个问题(根据http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_dml_non_mix_sobjects.htm):

在DML操作中无法一起使用的sObjects

某些sObject要求您对每个事务仅对一种类型执行DML操作。例如,您无法插入帐户,然后在单个事务中插入用户或组成员。以下sObjects不能在事务中一起使用:

* Group1
* GroupMember
* QueueSObject
* User2
* UserRole
* UserTerritory
* Territory

重要说明这一点的主要例外是在测试中使用runAs方法时。

此外,Summer 08 Release notes(该链接是PDF)说:

在以前的版本中,在涉及触发器的单个事务中,您可以对多种类型的sObject执行DML操作,例如,您可以插入帐户,然后插入用户。从Summer '08开始,您只能从以下sObject列表中对单一类型的sObject执行DML操作。

例如,您无法插入帐户,然后插入用户或更新组,然后插入组成员。

  • GroupMember
  • QueueSObject
  • 用户
  • UserRole的
  • UserTerritory
  • 领土

此外,User和Territory现在支持插入和更新DML操作,UserRole现在支持插入,更新删除和upsert DML操作。

以下sObjects不支持Apex DML操作:

  • AccountTerritoryAssignmentRule
  • AccountTerritoryAssignmentRuleItem
  • UserAccountTeamMember
另一答案

salesforce文档中实际记录了此行为:http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#StartTopic=Content/apex_dml_non_mix_sobjects.htm?SearchType。阅读它所说的“重要”这个的主要例外是当你在测试中使用runAs方法时

另一答案

刚刚在文档中找到了这个:

其他用途的runAs

您还可以使用runAs方法在测试中通过将DML操作包含在runAs块中来执行混合DML操作。通过这种方式,您可以绕过在与其他sObjects一起插入或更新设置对象时返回的混合DML错误。请参阅在DML操作中无法一起使用的sObjects

因此,看起来RunAs解决方法不是一种解决方法,但Salesforce认为这是解决混合DML问题的唯一方法。

希望这可以帮助

Reference

以上是关于如何在salesforce中建立opportunity object的主要内容,如果未能解决你的问题,请参考以下文章

在salesforce 营销云中,如何进行REST api 调用?如何建立网址?

Salesforce 小知识:使用 JSON web token 调用 REST 函数

通过Salesforce中的SOQL查询获取选项列表值

如何在salesforce中设计dashboard

salesforce CRM 项目管理

如何在 Salesforce 的潜在客户中插入和更新新任务和备注