标签: apex-code

在Apex Visualforce中获取推荐人

是否可以从我在visualforce中编辑的salesforce页面获取引荐来源?

我使用以下APEX方法

return ApexPages.currentPage().getUrl();
Run Code Online (Sandbox Code Playgroud)

...以上只返回当前网址和前一个网址或引荐网址

salesforce visualforce apex-code

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

将Salesforce VisualForce页面视为外部窗口小部件

我想将Salesforce VisualForce页面转换为我公司网站的小部件.我想使用服务器端代码和服务帐户访问小部件.我将在我的网页中缓存,设置和输出小部件html.我知道我可以用服务器端代码和几个API调用来重现小部件,但我喜欢能够在Salesforce中管理小部件并让小部件可以在Salesforce中的其他地方重用.

在这种情况下,小部件将报告我们在Salesforce中跟踪的竞赛中的当前领导者.我计划将这种方法重用于其他"迷你报告小部件".这是一个非常有用的模式.我相信那里的人已经优雅地解决了它.到目前为止,我的搜索空洞.

我试图避开网站,因为用户点击我们的公司网站在Salesforce中没有用户帐户(现在我正在考虑允许匿名访问的网站).

我的第一次尝试看起来像这样(受SSO到自助服务门户的启发):

var ws = new sfapi.SforceService();
var lr = ws.login(Secrets.salesforce_user_name, Secrets.salesforce_password);
string url = "https://na6.salesforce.com/apex/mywidget?sessionId=" + lr.sessionId;
Run Code Online (Sandbox Code Playgroud)

我也试过了?sid和?csssid,但是这些网址只是让我跳到Salesforce登录页面:

https://na6.salesforce.com/apex/mywidget?sessionId=00D3000000myorg!my-session-id-from-logging-in-with-the-api-8_i2fX_9wnYdwnwatGVuX6jGjmVmnv50j78yfGF1aKHdoDFtIx_J9
Run Code Online (Sandbox Code Playgroud)

我可以使用标准的屏幕抓取技术,使用用户名和密码发布到标准的Salesforce登录表单,然后拉/ apex/mywidget页面.但这感觉笨拙且没有支持.

现在我正在考虑制作一个公开可用的新网站来公开我的小部件.至少我可以放心地屏幕抓住那页.

任何帮助表示赞赏.我现在打算使用匿名网站方法.

screen-scraping salesforce visualforce apex-code

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

如何打开VF页面作为弹出窗口并将参数传递给该VF页面?

我有一个VF页面,它有2个日期字段和搜索按钮.

点击搜索我得到一些结果.我还有另一个按钮来打印这些结果,这只是一个新的VF页面呈现为pdf.

我想将此日期值传递到printVF页面.我也想把这个页面作为弹出窗口出现.

我有参数设置的pageref.由于我需要以弹出方式打开此页面,我需要找到一种方法来在window.open中使用pageref.

任何人都有关于如何实现这一目标的想法?

谢谢

Prady

编辑:我做的是在控制器中构建URL并在window.open中使用控制器变量.发生了一些非常奇怪的事情...第一次显示搜索结果并且我点击打印按钮,日期不会填充在字符串中,它们默认为今天的日期..如果我再次单击打印按钮日期正确填充在dateinput的url上.

      public Class1(){
      System.debug('inside constructor');
       fieldContainer=new DummyTable__c(); // it contains date fields for date inputs
      date todays=date.today();

     If (fieldContainer.Start_Date__c== null)
     {
        startdate1=todays;
     }else
     {
     startdate1=fieldContainer.Start_Date__c;
     }

     If (fieldContainer.End_Date__c== null)
     {
        enddate1=todays;
     }
     else
     {
     enddate1=fieldContainer.End_Date__c;
     }
     }

     public void search()
{

    startdate1=fieldContainer.Start_Date__c;
    system.debug('startdate1'+startdate1);


    enddate1=fieldContainer.End_Date__c;
    system.debug('enddate1'+enddate1);
    system.debug('inside search()....after clicking search button');
    system.debug('startdate1'+startdate1);
    system.debug('url'+url);
    LoadData();
}

    public string geturl()
{
    url='apex/VF1?Pstartdate='+string.valueof(startdate1)+'&Penddate='+string.valueof(enddate1);
    return url;
}

public string geturlRec()
{
    urlRec='apex/VF2?Pstartdate='+string.valueof(startdate1)+'&Penddate='+string.valueof(enddate1);
    return urlRec;
}    
Run Code Online (Sandbox Code Playgroud)

VF

   <script …
Run Code Online (Sandbox Code Playgroud)

salesforce visualforce apex-code

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

通过链接将记录ID传递给Visualforce详细信息页面

<apex:outputLink value="/!{opportunity.id}">{!opportunity.Name}</apex:outputLink>
Run Code Online (Sandbox Code Playgroud)

我在VF中创建了2个页面.一页显示动态搜索中的自定义对象记录列表.这是完整的.

我现在需要创建一个自定义VF页面,以便在用户单击列表页面上的链接时显示单个记录信息.我知道我们可以使用如上所示的输出链接.

假设我已经构建了详细信息页面(假设其路径是"apex/customDetailPage"),我将如何修改此链接.因为我的详细信息页面需要传递给它的选定记录ID,我想.

salesforce visualforce apex-code

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

Apex - salesforce - 使用apex保存和检索字段

我只想问一下开发人员是否知道如何在现场保存记录; 然后通过视觉力量检索它.

场景:我在自定义对象中有一些字段已在apex类中更新,即如果我System.Debug那些字段它显示了一些值.具体而言,每个帐户的这些值都不同.

问题:问题是我可以访问该类中字段的值; 但是当我在workbench或force.com资源管理器中编写SOQL以通过特定帐户ID查看自定义对象中的字段值时,它不会向我显示结果.所以我希望能够将结果保存在字段中,然后使用SOQL访问它们.保存它们的重点是我可以使用视觉力查询并显示它们.

我尝试过:我尝试创建自定义对象的新实例,然后使用put方法保存值,但这不起作用.

Abc__c abc = new Abc__c();
abc.account_id__c = Account.id;

abc.Number = 20; 
System.Debug(abc);
Run Code Online (Sandbox Code Playgroud)

这打印出来了20.但是当我去工作台时,却没有!真的很感激任何种类的帮助.

salesforce apex-code

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

有没有办法将保存结果(对于插入DML操作)链接回sObjects?

背景

我有一个我需要插入的sObject列表,但我必须首先检查插入是否成功.因此,我在执行插入和检查保存结果(对于insert语句)之前设置了数据库保存点.因为,如果发生任何错误,我不想处理,如果插入结果中有任何错误,数据库将回滚到保存点.

问题和问题

我需要为每个保存(插入)结果收集错误,并将每个错误与导致错误的特定sObject记录相关联.根据文档保存结果包含错误列表,插入的记录的Salesforce ID(如果成功)和成功指示符(布尔值).

如何将"保存结果"与插入的原始sObject记录相关联?

代码/实施例

这是我放在一起展示这个概念的例子.这个例子是有缺陷的,因为InsertResults它并不总是与之匹配sObjectsToInsert.它不是我在自定义类中使用的代码,但它使用相同的逻辑.

Map<Id,sObject> sObjectsToInsert; // this variable is set previously in the code
List<Database.SaveResult> InsertResults;

Map<String,sObject> ErrorMessages = new Map<String,sObject>();

System.SavePoint sp = Database.setSavepoint();

// 2nd parameter must be false to get all errors, if there are errors
//   (allow partial successes)
InsertResults = Database.insert(sObjectsToInsert.values(), false); 

for(Integer i=0; i < InsertResults.size(); i++)
{
  // This method does not guarantee the save result (ir) matches the sObject
  //   I …
Run Code Online (Sandbox Code Playgroud)

salesforce apex-code

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

使用REST API获取Salesforce对象的可访问字段

我有一个SOSL查询,我在Contact和Lead SObject中搜索一个电子邮件地址.我指示查询返回一些字段,如FirstName,MobilePhone等.现在,如果我的SF组织没有MobilePhone字段可见性为true,则查询返回"Invalid Column MobilePhone".

有没有办法在解雇查询之前使用Force.com REST API获取给定对象的可用字段?

我的SOSL查询是

FIND {test@er.com} IN EMAIL FIELDS RETURNING Contact(Phone, Id, Department, Email, isDeleted, Name, MailingCity, Title ), Lead(Id, City, Company, Country, Name, MobilePhone, Phone, State, Status, Street, Title)
Run Code Online (Sandbox Code Playgroud)

salesforce force.com apex-code

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

触发现有数据的触发器?

建立:

A - <B> - C. 在A上,B上有一个RFS,然后有一个更新后的触发器,当运行时填充B上的字段.然后将B的一个字段汇总到C上的字段中.

题:

触发器有效,但我需要在数据库中的现有记录上运行它以使所有内容保持最新.我怎么做?我已经尝试在A和C上使用RFS进行"力量重新计算".

salesforce apex-code

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

无法使用Salesforce Crypto Class为Google Maps API生成HMac

我公司最近注册了Google Maps API for business.

要使用API​​,我需要生成HMacSHA1签名,并将其添加到我的HTTP请求中.不幸的是,不知何故,我无法生成正确的签名.

为了测试,我使用谷歌提供的值来确保算法正常工作,我得到了正确的结果.这是代码:

string url = 'maps/api/geocode/json?address=New+York&sensor=false&client=clientID';
string privateKey = 'vNIXE0xscrmjlyV-12Nj_BvUPaw=';
privateKey = privateKey.replace('-', '+');
privateKey = privateKey.replace('_', '/');

//Blob privateKeyBlob = EncodingUtil.base64Decode(privateKey);
Blob privateKeyBlob = Blob.valueOf(privateKey);
Blob urlBlob = Blob.valueOf(url);
Blob signatureBlob = Crypto.generateMac('HMacSHA1', urlBlob, privateKeyBlob);

String signature =EncodingUtil.urlEncode(EncodingUtil.base64Encode(signatureBlob), 'UTF-8');
signature = signature.replace('+', '-');
signature = signature.replace('/', '_');

system.debug('signature is ' +signature);
Run Code Online (Sandbox Code Playgroud)

生成的签名应为:KrU1TzVQM7Ur0i8i7K3huiw3MsA =

以下是Google文档的链接,您也可以在其中找到相同的示例:https://developers.google.com/maps/documentation/business/webservices

几点需要注意:1.我使用了API文档中提供的示例Python脚本,它给出了正确的结果.2.我认为问题是,API Documentation说我们应该解码privateKey然后将它提供给函数.虽然Crypto Class的文档说"privateKey的值不需要以解码的形式.".我尝试了两种方法,无论是否解码,仍然没有结果.3.对于Google API,一切都必须是UTF-8编码; 我不知道那是否就像Encoding.Util解码那样.

我已经尝试了很多组合,但找不到解决方案.任何帮助将受到高度赞赏.

谢谢,Ankit

salesforce google-maps-api-3 hmacsha1 apex-code

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

salesforce中的动态顶点是什么?

我正处于Salesforce Apex的学习阶段.我已经阅读了Dynamic Apex的主题,并且无法理解这个概念.有人可以解释它如何处理它以及在哪种情况下最好使用它?提前致谢.

salesforce apex-code

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