0
私は、簡単な変更のオポチュニティーステージであるカスタムボタン "Submit Order"を持っています。CustomforceボタンからSalesforce Opportunityのバリデーション
は、しかし、私はステージ
ここを変更する前に、いくつかの検証チェックを追加したい私の頂点クラス
global class SubmitOrder {
public SubmitOrder(ApexPages.StandardController controller)
{
}
Webservice static string Submit(string oppId)
{
string message = '';
try
{
List<Opportunity> listOpp = new List<Opportunity>();
Opportunity oppNew = [SELECT id, StageName, Destination_Zone__c, Sold__c FROM Opportunity WHERE Id = :oppId];
boolean flag = true;
if(oppNew.StageName!= 'To Be Searched' && oppNew.StageName != 'Search')
{
oppNew.StageName.addError('Stage should be \'To Be Searched\' or \'Presentation\' or \'Search');
flag = false;
}
if(oppNew.Destination_Zone__c == '')
{
oppNew.Destination_Zone__c.addError('Destination Zone is required');
flag = false;
}
if(oppNew.Sold__c < 0)
{
oppNew.Sold__c.addError('Sold is required');
flag = false;
}
if(flag)
{
oppNew.StageName = 'Ticketing';
listOpp.add(oppNew);
if (listOpp != null && !listOpp .isEmpty())
{
Database.update(listOpp);
}
message ='Saved Successfully';
}
catch(System.CalloutException e)
{
message = e.getMessage();
}
return message;
}
}
とカスタムボタンの呼び出しは
{!REQUIRESCRIPT("/soap/ajax/10.0/connection.js")}
{!REQUIRESCRIPT("/soap/ajax/10.0/apex.js")}
var oppId= "{!Opportunity.Id}";
var result = sforce.apex.execute("SubmitOrder","Submit",{oppId:oppId });
が、取得、次のエラー
されていますSObject行はエラーを許可しません
すべてのヘルプは、問題はあなたがIDを取得し、データベースにすでにあるそのIDとOLD行を取得するメソッドにそれを渡しているということである事前
naomi、新しいOpportunityオブジェクトを取得し、そのオブジェクトにバリデーションを追加すると、古いレコードをどのように更新するのですか? –
これは私が言っていることです。 YourName-> Setup-> Customise-> Opportunities-> ValidationRulesに行き、いくつかのバリデーションルールを作成します。更新がルールに従わない限り、更新が先に進まないようにします。あなたのボタンが行う必要があるのはプレーンなアップデートであり、そのアップデートが実際に起こるかどうかはバリデーションルールによって決まります。 – naomi
妥当性検査のルールを追加すると、それらも標準の「保存」ボタンにも適用されます。カスタムボタンの妥当性確認は –