明細単位の自動処理で、特定の一行だけ実行する方法

「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) 

ご利用にはサービスごとのアカウント登録申込が必要です