2026.04 / REV.01 ARTICLE
ARTICLE / AUTONUMBER-PITFALLS

Power Apps / Dataverse の自動採番(オートナンバー)で連番を振ると詰まる5つの限界 — 年度でリセットできない・日付がUTCになる

DATE
2026-04-04
REVISION
A
AUTHOR
スルガクラフト合同会社
SHEET
01 / 01

Dataverseには「オートナンバー列」という機能があります。テーブルの列定義で書式を指定すれば、レコード作成時に自動で連番を振ってくれます。プロトタイプで試すと「おっ、これでいいじゃん」と思うものです。私たちもそう思いました。

本番で痛い目を見るまでは。

この記事では、実際の業務システムでオートナンバーを使って踏んだ地雷を共有します。同じ穴に落ちる人が一人でも減ればと思い、共有します。


一番やばい問題: 日付プレフィックスがUTCになる(朝9時まで前日の日付)

オートナンバーには日付をプレフィックスに含める書式があります。

{DATETIMEUTC:yyyyMMdd}-{SEQNUM:4}

名前をよく見てください。DATETIMEUTC。そう、UTCです。ローカルタイムではありません。

これが何を意味するか。日本時間(JST = UTC+9)で2026年4月1日の朝8時59分にレコードを作成すると、UTCではまだ3月31日23時59分です。つまり生成される番号はこうなります。

20260331-0001

2026年度の最初の伝票番号が「20260331」始まりになります。

年度の切り替わり。月次の締め。日次の集計。全部ズレます。毎朝9時まで「昨日の日付」が採番される世界です。

経理から「この伝票、日付が昨日になってるんですけど」と問い合わせが来ます。そして説明します。「Dataverseの仕様でUTCなんです」。納得してもらえるわけがありません。

しかもこれ、設定で変更する方法がありません。{DATETIMELOCAL:yyyyMMdd} のような書式は存在しません。UTCで固定です。日本企業にとっては致命的です。


限界2: 年度・月で連番をリセットできない

日本企業の伝票番号は、年度が変わったら連番をリセットするのが常識です。

2025年度: INV-2025-0001, INV-2025-0002, ..., INV-2025-1234
2026年度: INV-2026-0001  ← ここで0001に戻したい

オートナンバーのシード値(SEQNUM)は単調増加しかできません。年度が変わっても番号は増え続けます。リセットするにはPower Automate等で裏からシード値を書き換えるハックが必要ですが、公式にサポートされた方法ではありません。

月次リセット(毎月0001に戻す)も同様に不可です。


限界3: 欠番管理ができない

レコードを削除しても番号は戻りません。これ自体は採番の原則として正しい動作です。問題はその先にあります。

「欠番の一覧を出してください」

監査や内部統制でこう言われたとき、オートナンバーには欠番を追跡する仕組みがありません。どの番号が使われてどの番号が欠番かは、自分でクエリを書いて突合するしかありません。欠番を再利用する要件にも当然対応できません。


限界4: 動的プレフィックスが付けられない

「営業部の伝票は SALES-2026-0001、経理は ACCT-2026-0001」

こういう部門別プレフィックスの要件は多いです。しかしオートナンバーのプレフィックス({RANDSTRING} や固定文字列部分)は列定義で固定されます。レコードの属性値に応じて動的に切り替えることはできません。

結局、Business Ruleやプラグインで別途採番ロジックを書くことになります。オートナンバーの意味とは。


限界5: 枝番が振れない

INV-2026-0001-01  ← 親伝票の1番目の明細
INV-2026-0001-02  ← 親伝票の2番目の明細

こうした枝番構造は、見積明細・請求明細・出荷明細など至るところで必要になります。親レコードの番号を引き継いで、子レコードに連番の枝番を振りたい。

オートナンバーはテーブル単位の単純連番なので、「親レコードごとの枝番カウンタ」という概念自体が存在しません。


私たちはどうしたか

上記の問題を全部踏んだ結果、Dataverseのプラグインとして動く採番エンジンを自作しました。オートナンバーの代わりにこのエンジンが採番を担当します。

利用者側の操作は何も変わりません。レコードを作成すると、自動的に正しい番号が振られます。管理画面で採番ルールを設定するだけです。

オートナンバーとの違い:

項目オートナンバー採番エンジン
日付プレフィックスUTCで固定組織のタイムゾーン設定に連動
年度リセット不可年度・月次・日次から選択可能
年度開始月—任意の月を設定可能(デフォルト4月)
欠番追跡不可採番履歴から突合可能
部門別プレフィックス固定値のみレコードの属性値に応じて動的に切替
枝番不可親番号ごとの枝番を自動採番
同時作成時の重複—排他制御で番号重複を防止

導入はDataverseにソリューションをインポートするだけです。既存のテーブルやアプリへの影響はありません。


まとめ

Dataverseのオートナンバーは、社内ツールやプロトタイプには十分使えます。ID的な一意キーが欲しいだけなら問題ありません。

ただし、本番の業務システムで伝票番号として使うなら要注意です。UTCの日付ズレ、年度リセット不可、欠番管理なし、動的プレフィックス不可、枝番不可。日本企業の業務要件とのギャップは大きいです。

私たちはプラグインによる採番エンジンで解決しましたが、Power Automateのフローで簡易的に対処する方法もあります。いずれにせよ「オートナンバーで全部いける」と思い込まないことが大事です。

採番の設計でお困りのことがあれば、お気軽にご相談ください。同じ地雷を踏んだ者同士、きっと話が早いはずです。


関連記事

← BACK TO JOURNAL END OF SHEET