📏

カスタマインでテーブルの行数分、他アプリにレコードを生成して、そのレコード番号を各行に書き戻す方法

2024/12/21に公開

記事概要

Customine Advent Calendar 2024
22日目の記事です。

やりたいことは、カスタマインでテーブルの行数分、他アプリにレコードを生成して、そのレコード番号を各行に書き戻すという動作です。レコード番号をアプリ間をつなぐ値として使うのは個人的には推奨できませんが、どうしても必要になり、実装しました。
実装にすごく苦労したので、覚えで記事にしておきます。

やりたいことは下図イメージです。

全体像

なぜうまく動いているのか自分でもわからないのですが、下図イメージで実現できました。
恐らくもっとシンプルにできると思うのですが、レコード更新競合のエラー等に悩まされまして、最終的に下図の形で落ち着きました。

動作イメージ

  1. 処理前はレコード番号の欄は空白です。
  2. 処理を実行すると他アプリに3行レコードが生成されます。
  3. テーブルの各行にレコード番号が書き戻されます。

個別解説

多分ポイントになりそうなところを解説します。もっとシンプルな方法があったら教えてほしいです。

テーブル行を他レコードに書き出す。

これは簡単ですね。「やること」がそのまま提供されています。

ループします。

リストから要素を取り出す を使用して、ループ設定します。
今回の例の場合3行あるので、3回ループします。

ループ途中でそれが何行目なのかを特定します。

ここがもっと簡単にできそうな気がしますが、3回ループするなかで、1行目→2行目→3行目を特定して更新をかける必要があるので、ループ回数を把握します。変数みたいなものがあれば楽なのですが、ちょっとわからなかったので画面上の項目で代用しています。
色々とやっていますが、要は何回目のループかを把握しているだけです。

行が特定できたら、あとは、フィールドに値をセットします。

フィールド値が特定の値ならば の条件を付与することでテーブル内の特定1行の値を書き替えることができます。

まとめ

一応できたのですが、ものすごく冗長なのでもっとシンプルにできる様になりたいです。

では皆様良いお年をお迎えください!

Discussion