プログラマ38の日記

主にプログラムメモです。

Salesforce : Apexトリガメモ

自分用にあらためて整理した。 トリガテンプレート trigger AccountTrigger on Account (before insert, before update, before delete, after insert, after update , after delete , after undelete) { switch on Trigger.operationType { when BEFORE_INS…

Salesforce : Spring'24のLightningレコードページの動的フォームの拡張について(参照先項目の配置)

Spring'24でLightningレコードページの動的フォームに機能が追加となり、参照先項目を表示できるようになりました。 参照先項目は2階層上のオブジェクトの項目まで可能です。 次の点で非常に便利だと思いました。 今までは数式では表示できなかった参照先の…

Salesforce : バージョンアップの変更点を確認する (Spring'20 ~ Spring'23)

最新の情報に追い付いていなかったのであらためて記載する。 Spring'20API 要求の日次上限 (1,000,000) が削除されました。[API数の計算]100,000 + (ライセンス数 x ライセンスの種類ごとのコール数) + 購入した API コールアドオン数API数が増えてるのが嬉…

Salesforce : Bulk API2.0 外部ID指定で参照関係項目のnull更新

Bulk API2.0で調べたことの続きです。 crmprogrammer38.hatenablog.com Bulk APIでは、null更新時には、"#N/A"の値を指定する必要があります。 参照関係項目を外部ID指定で更新する時は、次のようにする必要がありました。 CSVファイルに参照関係項目と、参…

Salesforce : 「INVALID_SESSION_ID」 "This session is not valid for use with the API" の原因

SOAP API使用時に「INVALID_SESSION_ID」 "This session is not valid for use with the API" のエラーメッセージが発生しました。 原因は次だったので備忘メモです。 原因 プロファイルの「ログインに必要なセッションセキュリティレベル」が「高保証」とな…

Salesforce : Bulk API2.0について調べたこと

Salesforce内の件数の多いオブジェクトに対して、データの取得/登録/更新/削除を行う場合、通常のAPIのinsert/update/upsert/deleteでは時間がかかってしまうことがあります。 Salesforceでは、これに対してBulk API/Bulk API2.0を用意しており、Bulk API2.0…

Salesforce : CustomIndexの続き

以前メタデータのCustomIndexについてメモしましたが、2020年12月時点で、APIの仕様が変更されていたので追記です。 crmprogrammer38.hatenablog.com 次のような名前でメタデータが取得できるようになってました。なので、listMetadataで取得した名前で取得…

Salesforce: API50で追加されたCustomIndexメタデータのメモ

2020/9/29時点の備忘メモです。 SalesforceのAPI50(Winter'50)で「CustomIndex」メタデータが追加されます。 このメタデータについては、メタデータのAPI名の取得が難しくワイルドカード指定で取得したほうがよさそうです。 メタデータAPI 「listMetadata…

MySQL: 8.0でJDBCでの利用時にはまったこと

JDBCを使ってMySQLを使っていますが、MySQL 8.0 でいくつかつまづいたのでメモです。 1.JDBCドライバのクラス名が変更されている com.mysql.cj.jdbc.Driver 以前はcom.mysql.jdbc.Driver 2.JDBCパラメータが追加が必要です。(次の記載は私がよく使うも…

Salesforce:標準項目の選択リスト値をリリースする

標準項目の選択リスト値は今まで手動で行っていましたが、メタデータのデプロイでリリースができることを知ったのでメモとして残します。(API48時点での記載です) メタデータの種類は「StandardValueSet」で、このメタデータは取得方法が他のメタデータと違…

Salesforce:Trigger.isDelete での before と after の違いではまったこと

今さらですが、Deleteトリガでの before と after の違いではまりました。 はまったこと 上記のように、オブジェクトBはオブジェクトAを参照しています。オブジェクトBのオブジェクトAへの参照関係項目の「参照レコードが削除された場合の対処方法」は”この…

MySQL: lower_case_table_names の違いではまった

テーブルの大文字と小文字を区別するパラメータ「lower_case_table_names」の違いではまりました。 はまったのは次です。 lower_case_table_names=0 の場合(Linuxなどの場合) テーブル名は、大文字小文字を区別するのでキャメルケースを利用している場合、…

MySQL: 何も考えずにテーブル文字セットをutf8にしてはまった

文字コードはutf8にしておけば問題ないだろうと甘い認識で、MySQLではまりました。 create table sample1 ( column1 varchar(100)) default charset=utf8; 上記のようにテーブル文字セットをutf8にしていると、文字化けしている文字、外字、4バイト文字がエ…

Salesforce: メタデータAPIの renameMetadata を使って 統一感のあるfullNameにする

急いで開発していて、設定の物理名(API名やdeveloper名など)はあまり考えている時間がなかったり、ネーミングルールを後から作ったため、それまでの設定がルールとあっていなかったりする場合があります。 メンテナンス性を考えてそれまでの設定の物理名を変…

Salesforce:Lightning ホームページの割り当てに対応するメタデータ

ホームページの割り当てがメタデータでどう出力されているかのメモです。 まずホームページの割り当ては次の3パターンです。 デフォルトのホームページ アプリケーション別割り当て アプリケーションおよびプロファイル別割り当て それぞれのメタデータにつ…

Salesforce:Lightning 「コミュニティ レコードの詳細」でのforce:hasSObjectName の動き

結論としては、Lightningページでは、force:hasSObjectName インタフェースは利用できますが、 コミュニティ レコードの詳細ページでは使えませんでした。(Spring'20時点) コミュニティのページで次のようなコンポーネントを作成した場合 <aura:component implements="force:hasSObjectName,force:hasRecordId,forceCommunity:availableForAllPageTypes" access="global" ></aura:component>

Salesforce: レコードのフォローを自動化する

レコードのフォローを自動化するには、 ConnectApi.ChatterUsers.follow(String communityId, String userId, String subjectId) を使います。 実際使ってみて気づいた点をメモしておこうと思います。 内部ユーザが外部ユーザのuserIdを指定できるが、外部ユ…

Salesforce: Lightning Component上で取得できるユーザ情報

Apexコントローラをコールしてしまえば必要な情報は取得できますが、Apexコントローラをコールしないでも次の情報が取得できます。 var userinfo = $A.get("$SObjectType.CurrentUser"); var userId = userinfo.Id;var userEmail = userinfo.Email;var isCha…

Salesforce: URLパラメータによるLEX新規作成画面の初期値セット

URLパラメータで新規作成画面の初期値がセットできるようになりました。 例 https://ドメイン/lightning/o/Account/new?recordTypeId=[レコードタイプID]&defaultFieldValues=Name=初期値1,Sic=初期値2,BillingState=初期値3 上記は取引先(Account)の例です…

Salesforce: Lightningページ上に配置したコンポーネントでよく使う aura:hander

Lightningページで、Lightning Componentを組み込んだ際に、初期表示を行ったり、変更やレコードの登録のタイミングでLightning Componentの内容を更新するといった制御が必要です。 そんな時には aura:hander を使いますが、個人的によく使うのは次の3つで…

Salesforce: 動的に作成したコンポーネントとの値のやりとり(cmp.getReference)について

「lightning:overlayLibrary」をはじめとして、動的に作成したコンポーネントと、それを表示する元のコンポーネントとで値のやり取りをしたい場合があります。 例えば、javascriptのconfirmでは、 var result = window.confirm('ボタンをクリックしてくださ…

雑記: メモリを追加してとても快適になりました

メモリ4GBでHDDのPCを使っています。Windows7をWindows10にアップデートをしたものでだいぶ古くなっていた(2013年購入)のですが、このタイミングで8GBのメモリを追加し、12GBのメモリとなりました。 今までは、ブラウザでタブを20,30と開いていくとメモリが…

Salesforce: lightning:picklistPathを使った2段階のステータス表示の実装

前に上記のような2段階でのステータス表示について、lightning:picklistPathを使ったアイデアを書きました。 crmprogrammer38.hatenablog.com そのアイデアの実装内容になります。 実装内容 オブジェクト項目 選択リストの連動関係 ステータスLv2の連動設定…

Salesforce: lightning:picklistPath について調べたこと

lightning:picklistPath について調べて考えたことのメモです。 上記のように、lightning:picklistPathは、いわゆるパスをLightning Componentタグで書ける機能で、次の特徴があります。 パスのように表示する選択リストの項目を変数で指定できる パスの更新…

Salesforce: 開発中の「セッションの設定」メモ

開発組織でのセッションの設定メモです。 設定>セキュリティ>セッションの設定から次を設定します。 1.「ユーザとしてログインしてから再ログインを強制する」のチェックを外す チェックを外すことで、代理ログイン(内部ユーザではユーザのログインボタ…

Salesforce:コミュニティページをメタデータで移行する

コミュニティページやコミュニティの設定をメタデータで移行する方法のメモです。 まず、上記の通り設定>コミュニティ>コミュニティ設定 から「ExperienceBundle メタデータ API を有効化」をチェックいれます。 チェックをいれると、メタデータでコミュニ…

Salesforce: 数式の 「15 オブジェクトの参照」の制限

複雑なオブジェクト構造で数式を作成する場合に気を付ける制限があります。 それは1つの数式で参照できるオブジェクト数は15オブジェクトの制限です。 (サポートに依頼すると20まで拡張できるようです) 数式で制限を超えると次のようなメッセージが表示さ…

Salesforce: 監査項目の設定についてのメモ

監査項目の設定で、作成日などをセットすることができます。調べた結果の備忘としてメモします。 関連するSalesforceのHelp ヘルプ | トレーニング | Salesforce Salesforceの設定 ユーザインターフェースから”「レコードの作成時に監査項目を設定」および「…

Salesforce: 主従関係 主オブジェクト削除時の従オブジェクトのトリガの動き

主従関係にすると主オブジェクト削除時に従オブジェクトは自動で削除されますが、主オブジェクト削除した際は、従オブジェクトのトリガ(before delete, after delete)は動きません。 主従関係ではないですが、オブジェクトに関連付けた活動も同じ動きとなり…

Salesforce: リードの取引の開始をApexで行う時の注意事項

リードの取引の開始をまとめて行う場合に、Apex(もしくはAPIの)を使う場合があります。その際の注意事項を書いておこうと思います。 ApexでDatabase.convertLead(APIでconvertLead、以下Apex前提で記載します)を行う場合次の2点の考慮が必要です。 リー…