标签: apex-code

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

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

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

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;
    }

}
Run Code Online (Sandbox Code Playgroud)

unit-testing salesforce apex-code

32
推荐指数
3
解决办法
4万
查看次数

Salesforce - 如何在环境之间部署(沙箱,实时等)

我们正在研究如何设置适当的部署过程.

从我所读到的,似乎有4种方法可以做到这一点.

  1. 复制和粘贴 - 我们不想这样做
  2. 使用Salesforce Web界面中内置的"包"机制
  3. Eclipse Force IDE"部署到服务器"选项
  4. Ant脚本(尚未尝试过这个)

有没有人对各种方法的限制有所建议.

你能在Web Interface包中包含所有内容吗?

我们希望部署以下项目:

  • Apex课程

  • Apex触发器

  • 工作流程

  • 邮件模板

  • MailMerge模板 - 似乎无法在Eclipse中找到它们

  • 自定义字段

  • 页面布局

  • RecordTypes(似乎无法在网站或Eclipse中找到这些)

  • PickList项目?

  • SControls

deployment salesforce apex-code

25
推荐指数
2
解决办法
6万
查看次数

在Apex v24.0中对OpportunityLineItem进行单元测试时,如何避免使用STANDARD_PRICE_NOT_DEFINED?

显然,Salesforce.com中Apex的Spring '12/v24.0版本的新功能是单元测试不再能够访问"真实"数据 - 因此(如果我正确理解了更改)SOQL查询将会现在只检索在单元测试过程中插入的对象 - 甚至是受到一些限制的.

无论如何,这似乎将OpportunityLineItem测试抛出窗口,因为:

  • 没有PriceBookEntryId就插入OpportunityLineItem是不可能的
  • 您不能为产品X插入新的价目表条目,除非您已经有产品X的标准价格手册条目,但是
  • 测试数据中没有标准价格手册,因为与所有表一样,Pricebook2表在单元测试运行开始时实际上是空的,AND
  • 没有办法在Apex中创建标准价格手册

我真的希望我至少得到这四点中的一个错误,但到目前为止,我现有的单元测试没有任何变化表明它们中的任何一个都是错的.这当然意味着我的单元测试不再有效.这件事发生在一夜之间 - 周五我的沙盒中的测试运行良好,现在他们失败了.

我错过了什么,或者这是新SFDC版本中的错误?

salesforce force.com apex-code

20
推荐指数
2
解决办法
2万
查看次数

如何在Salesforce中检测环境?

我正在使用Web服务将我们的后端系统与Salesforce集成.我在不同的URL上运行生产和舞台环境.我需要能够使Web服务调用的端点不同,具体取决于代码是在生产环境还是沙箱Salesforce实例中运行.

我如何检测环境.

目前我正在考虑查找用户以查看用户名是否以'devsandbox'结尾,因为我无法识别我可以查询以获取环境的系统对象.

进一步澄清:

我需要确定的位置在我在Salesforce中选择按钮时调用的Apex代码中.我的自定义控制器需要知道它是否在生产或沙箱Salesforce环境中运行.

sandbox salesforce apex-code

17
推荐指数
2
解决办法
2万
查看次数

在Apex中加入一个字符串数组

使用Apex,我想分割一个字符串,然后使用'AND'运算符作为分隔符重新加入它.

我成功地拆分了字符串,但重新加入了它的问题.

 String [] ideaSearchText = searchText.Split(' ');
 // How to rejoin the array of strings with 'AND'?
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

salesforce apex-code

16
推荐指数
1
解决办法
2万
查看次数

检测何时在触发器中克隆记录

有没有办法检测插入的记录是否是触发器中克隆操作的结果?

作为托管包的一部分,我想在克隆Opportunity和OpportunityLineItem记录时清除一些自定义字段.

或者是一个触发器不是防止某些字段被克隆的正确位置?

我曾考虑过创建专用代码来调用sObject.Clone()并排除不需要的字段.这似乎不是托管包的理想解决方案,因为它还会排除Opportunity上的任何其他自定义字段.

triggers salesforce apex-code

15
推荐指数
2
解决办法
7183
查看次数

检索salesforce实例URL而不是visualforce实例

在visualforce页面中,我需要检索组织的salesforce实例的URL,而不是视觉强制URL.

例如,我需要https://cs1.salesforce.com而不是https://c.cs1.visual.force.com

这是我到目前为止所尝试的以及我得到的结果:

从VF页面访问Site全局变量:

<apex:outputText value="{!$Site.Domain}" /> 回报 null

旁注:一切$Site.xxx似乎都回归了null.

来自Apex控制器:

public String getSfInstance()
{
  return ApexPages.currentPage().getHeaders().get('Host');
}
Run Code Online (Sandbox Code Playgroud)

public String getSfInstance()
{
  return URL.getSalesforceBaseUrl().toExternalForm();
}
Run Code Online (Sandbox Code Playgroud)

返回c.cs1.visual.force.comhttps://c.cs1.visual.force.com分别.

问题:如何检索我想要的内容:https://cs1.salesforce.com

salesforce controllers visualforce apex-code

14
推荐指数
2
解决办法
4万
查看次数

Salesforce.com Id属性似乎有15和18个字符值,差异是什么?

使用SOAP API与salesforce.com(SFDC)一起工作时,底层数据库中的主键似乎是Id.好吧,这个值的两个表示似乎是15个字符版本或18个字符版本.

我一直在使用18,因为它显然更具体,但最后三位数中包含的是什么,它们可以被丢弃,看起来呢?

任何人都明白这是什么一回事?

soap salesforce apex-code

12
推荐指数
1
解决办法
3246
查看次数

Salesforce Apex触发器 - 如何检查更新触发器中是否包含字段?

如果有人可以指导我检查更新调用中是否包含特定字段是否包含在更新前/后更新触发器中,我将非常感激.非常感谢.

triggers salesforce apex-code

11
推荐指数
1
解决办法
2万
查看次数

在命名空间下组织Apex类

Salesforce中是否有任何方法可以在包或命名空间下对apex类进行分组?我们可以将托管包用于内部组织目的吗?

salesforce apex-code

11
推荐指数
1
解决办法
5779
查看次数