明細単位の自動処理で、特定の一行だけ実行する方法
「1回の操作で明細行ごとの更新と、レコード全体(ヘッダー)に対する処理(メール送信やステータス更新など)をまとめて行いたい」という場合の代替設定手順について解説します。
Q. レコード単位の処理と明細単位の処理を、1つの自動処理で同時に行うことはできますか?
A. システムの仕様上、1つの自動処理で「レコード単位」と「明細単位」の両方を同時に選択・実行する機能はありません。
楽楽販売の自動処理には「レコード単位」と「明細単位」の2種類の実行単位があり、作成時にどちらか一方を選択します。
実行単位が「明細単位」の自動処理を実行すると、対象レコードに含まれる明細行の数だけ同じ処理が繰り返し実行されます。
そのため、メール送信やヘッダー更新などの「1レコードにつき1回だけ実行したい処理」を明細単位の自動処理にそのまま組み込むと、明細行の数だけ重複して実行(例:明細が5行あればメールが5通送信される)されてしまいます。
【代替案】
自動処理の実行単位を「明細単位」で作成し、「条件分岐パーツ」で特定の1行(例:最終行や1行目)のタイミングのみ判定を通すことで、実質的にレコード単位で行いたい処理を1回だけ走らせることが可能です。
具体的な設定手順
以下は、「明細行数」と「行番号」が一致するタイミング(=最終行の処理時)のみ、
条件分岐のYESルートでレコード単位の処理を実行させる設定例です。
ステップ1:明細行数をカウントする数値計算項目を作成する
対象DBの項目設定にて、レコード内の総明細行数をカウントする項目を用意します。
※既に作成済みの場合はステップ2へ進んでください。
- 設定箇所:DB設定 > 基本設定 > 項目設定
- 項目タイプ:
数値計算 - 項目名:
明細行数 - 計算方法:
明細項目のレコード数
ステップ2:自動処理の新規作成(実行単位:明細単位)
自動処理設定にて、実行単位に「明細単位」を選択して自動処理を新規作成します。
- 設定箇所:DB設定 > 機能設定 > 自動処理設定
- 実行単位:
明細単位(※作成後に変更することはできません)
ステップ3:「条件分岐」パーツの配置と判定条件の設定
自動処理の中に「条件分岐」パーツを追加し、処理中の行が最終行かどうかを判定する条件を設定します。
- 左辺:
【選択明細】行番号 - 演算子:
等しい - 右辺:
【選択レコード】明細行数(ステップ1で作成した項目)
※1行目だけで実行させたい場合は、右辺を「固定値:1」と設定します。
ステップ4:YESルート(条件一致側)に「レコード単位の処理」を配置する
条件分岐パーツのYESルート(条件に合致する場合・下方向)にのみ、1回だけ実行させたいレコード単位の処理(「メール送信パーツ」や「レコード更新パーツ(ステータスに関する項目の更新)」など)を配置します。
NOルート(条件に合致しない場合・右方向)には何も配置しないか、明細単位で毎回行いたい通常処理のみを配置します。
動作イメージ(例:明細が3行あるレコードで実行した場合)
- 1行目の処理時:
「行番号(1) = 明細行数(3)」となり判定NOへ進むため、レコード単位の処理は実行されません。 - 2行目の処理時:
「行番号(2) = 明細行数(3)」となり判定NOへ進むため、スキップされます。 - 3行目(最終行)の処理時:
「行番号(3) = 明細行数(3)」となり判定YESへ進むため、レコード単位の処理が1回だけ実行されます。
このロジックを活用することで、明細単位の自動処理の中でも「1レコードにつき1回だけ実行したい処理」を安全かつ確実に組み込むことができます。
(記事ID:2978)
「自動処理設定」の関連記事一覧
こちらの記事もあわせてご確認ください。
- 自動処理(レコード登録・更新パーツ)の「計算」チェックボックスの使い方と活用例
- 異なる得意先の受注を同一の「請求先」でまとめて請求データを作成する方法
- 自動処理を活用して承認機能を独自に構築する方法・設定手順
- 自動処理のメール送信でプロジェクトや取引内容に応じてCC宛先のみを動的に切り替える方法・マスタ構築手順
- CSVインポートや一括登録時に通知メールが大量送信されるのを防ぎ、完了時にまとめて通知する方法
- データベースをコピー(複製)した際に登録済みのレコードデータも引き継がれるか
- 異なるデータベース間でデータを自動で転記・登録する方法・設定手順
- 親DBの明細行の合計値と自レコード(子DB)の値を比較して自動処理を分岐させる方法・設定手順
- レコードをコピーして新規登録する際、コピー元の値ではなく「項目の初期値」を優先して登録したい