半角英数字のみ許可する入力規則
NOT( REGEX( test__c , "^[0-9a-zA-Z]*$") )
kinkun's blog
半角英数字のみ許可する入力規則
NOT( REGEX( test__c , "^[0-9a-zA-Z]*$") )
デフォルト項目設定
以下のタイプのカスタム項目にデフォルト項目値を設定できます。
"会社:" & BR() &
"備考:" & BR() &
"URL:"
Visualforceのfooter
<apex:page renderAs="pdf">
<head>
<style>
@page{
size: 8.27in 11.69in;
@bottom-center {
content: element(footer);
}
}
body {
font-family: Arial Unicode MS;font-size: 11pt;
}
div.footer {
display: block;
padding: 10px;
position: running(footer);
}
</style>
</head>
<apex:outputPanel >
<body>
<div class="footer" name="footer">
<p>Footer</p>
</div>
</body>
</apex:outputPanel>
</apex:page>
項目のラベルを取得する方法
Apex
//方法A
Schema.SObjectType.Account.fields.Name.label;
//方法B
Schema.getGlobalDescribe().get('Account').getDescribe().fields.getMap().get('Name').getDescribe().getLabel();
VF
<apex:outputText value="{!$ObjectType.Account.Fields.Name.Label}" />
文字列バイト数計算
Blob.valueOf(strings).size();
実行結果
strings:7
1234567890:30
カスタム設定getInstanceメソッドによる取得
getInstance()使用ない場合
public class CountryCodeHelper {
public static String getCountryCode(String country) {
Country_Code__mdt countryCode = [
SELECT Id, MasterLabel, Country_Code__c
FROM Country_Code__mdt
WHERE MasterLabel = :country
LIMIT 1
];
return countryCode.Country_Code__c;
}
}
getInstance()使用する場合
public class CountryCodeHelper {
public static String getCountryCode(String country) {
Country_Code__mdt countryCode = Country_Code__mdt.getInstance(country);
return countryCode.Country_Code__c;
}
}
Javascript入り口
<apex:page>
<html>
<head>
</head>
<body>
<script type="text/javascript">
const promise1 = new Promise((resolve, reject) => {
resolve('Success!');
});
promise1.then((value) => {
console.log(value);
// expected output: "Success!"
});
</script>
</body>
</html>
</apex:page>
アップデートの前後の値比較
trigger UpdateTesObject on TesObject__c (before update) {
for(TesObject__c tesObject : Trigger.New) {
TesObject__c oldtesObject = Trigger.oldMap.get(tesObject.id);
if (tesObject.TestStatus__c != oldtesObject.TestStatus__c ) {
tesObject.Is_TestUpdated__c = true;
}
}
}
JavaScript Promise の使用
JavaScript コードで ES6 Promise を使用できます。Promise により、非同期コールの成否を処理するコードや、複数の非同期コールをまとめてチェーニングするコードを簡素化できます。
ブラウザでネイティブバージョンが提供されない場合は、フレームワークがポリフィルを使用するため、Promise は Lightning Experience でサポートされるすべてのブラウザで機能します。
ここでは、Promise の基本を十分に理解していることを前提としています。Promise のわかりやすい概要については、https://developers.google.com/web/fundamentals/getting-started/primers/promises を参照してください。
Promise は省略可能な機能です。Promise を愛用している人もいれば、そうでない人もいます。各自の使用事例にとって有用であれば利用します。
次の firstPromise 関数は、Promise を返します。
firstPromise : function() {
return new Promise($A.getCallback(function(resolve, reject) {
// do something
if (/* success */) {
resolve("Resolved");
}
else {
reject("Rejected");
}
}));
}
この Promise のコンストラクタが、Promise で resolve() または reject() をコールする条件を決定します。
複数のコールバックを連携させたり、まとめてチェーニングしたりする必要があるときは Promise が役立ちます。汎用的なパターンは次のとおりです。
firstPromise()
.then(
// resolve handler
$A.getCallback(function(result) {
return anotherPromise();
}),
// reject handler
$A.getCallback(function(error) {
console.log("Promise was rejected: ", error);
return errorRecoveryPromise();
})
)
.then(
// resolve handler
$A.getCallback(function() {
return yetAnotherPromise();
})
);
then() メソッドは、複数の Promise をチェーニングします。この例では、各解決ハンドラが別の Promise を返します。
then() は Promise API の一部です。次の 2 つの引数を取ります。
1 つ目のコールバック function(result) は、Promise コンストラクタで resolve() がコールされたときにコールされます。コールバックの result オブジェクトは、resolve() への引数として渡されるオブジェクトです。
2 つ目のコールバック function(error) は、Promise コンストラクタで reject() がコールされたときにコールされます。コールバックの error オブジェクトは、reject() への引数として渡されるオブジェクトです。
この例では、2 つのコールバックが $A.getCallback() でラップされています。どういうことでしょうか? Promise はその resolve 関数と reject 関数を非同期に実行するため、コードは Lightning イベントループおよび通常の表示ライフサイクルの外側に存在します。resolve または reject のコードによって、コンポーネント属性の設定など、Lightning コンポーネントフレームワークに何らかのコールを実行する場合は、$A.getCallback() を使用してコードをラップします。詳細は、「フレームワークのライフサイクル外のコンポーネントの変更」を参照してください。
1 つ目の then() メソッドの却下ハンドラは、errorRecoveryPromise() が設定された Promise を返します。却下ハンドラは多くの場合、Promise チェーンの「中流」で使用され、エラー回復メカニズムをトリガします。
Promise API には、必要に応じて未処理のエラーを検出する catch() メソッドが含まれます。Promise チェーンには常に拒否ハンドラまたは catch() メソッドを含めます。
Promise でエラーが発生しても、フレームワークがグローバルエラーハンドラを設定する window.onerror はトリガされません。catch() メソッドがない場合は、開発時に、ブラウザのコンソールに Promise の未検出エラーに関するレポートがないか注意します。catch() メソッドにエラーメッセージを表示するには、$A.reportError() を使用します。catch() の構文は次のとおりです。
promise.then(...)
.catch(function(error) {
$A.reportError("error message here", error);
});
catch() についての詳細は、「Mozilla Developer Network」を参照してください。
フレームワークは、保存可能なアクションの応答をクライアント側のキャッシュに保存します。この保存された応答によってアプリケーションのパフォーマンスが大幅に向上し、一時的にネットワークに接続されていないデバイスをオフラインで使用できるようになります。保存可能なアクションが適しているのは参照のみのアクションだけです。
保存可能なアクションのコールバックが複数回呼び出されていることがあります。この場合、初回はキャッシュされたデータが使用され、それ以降はサーバからの更新済みデータが使用されます。Promise は解決または却下を 1 回のみ行うものであるため、複数の呼び出しは Promise に適していません。
JavaScript Remoting の制限および考慮事項
JavaScript Remoting はリソース制限の対象ではありませんが、機能自体に制限があります。
JavaScript Remoting は、Salesforce のサービス制限を回避するための手段ではありません。JavaScript Remoting コールには、API 制限は適用されませんが、JavaScript Remoting を使用する Visualforce ページには、すべての標準 Visualforce の制限が適用されます。
デフォルトでは、リモートコールの応答は、30 秒以内に返される必要があります。これを超えると、コールはタイムアウトになります。要求の完了にこれ以上の時間を必要とする場合は、長いタイムアウトを 120 秒以内で設定します。 リモートコールの応答の最大サイズは 15 MB です。JavaScript Remoting コードがこの制限を超える場合は、次のように対応できます。