ID列を集計列で計算に利用すると 0 が返る問題は SharePoint 2013 でも修正されない

ある方と話をしていて思い出したのですが、SharePoint 2007 の頃から、集計値列の計算に「ID」列を利用すると正常に計算ができない、という問題がありました。これが SharePoint 2010 や最新の SharePoint 2013(Preview)では修正されたのか?改めて調べてみました。その結果は…残念。すべての環境で問題が再現しました。

例えば集計値で、「=ID」として、ID値を表示させます。ここでは「calID」列とします。

SharePoint 2007

SharePoint 2010

SharePoint 2013(注:Preview/Office365)

新しいアイテムを作成すると、0 というあり得ないIDが表示されます。これは、SharePoint の集計値が計算されるタイミングとデータベース上で固有のID値が作成されるタイミングのズレに起因する問題のようですが、詳しくはこちらのサイトで解説があります(英語)

ID は手軽に使えるユニーク値なので、この仕様は時としてとても不便です。2013 でも修正されていないのは、ちょっと残念ですね。(そんなに難しいとも思えないのですが…)

とりあえず代替策として、前述のサイトではイベントハンドラーによる実装が紹介されています。もっと簡単な方法としては、ワークフローで新規アイテム作成時にID列を別の列にコピーすると良いと思います。

アイテムの参照ページ (DispForm.aspx) に ID 列を表示する (ちょっと問題あり)


Author

中村 和彦(シンプレッソ・コンサルティング株式会社 代表)が「ユーザ視点の SharePoint 情報」を発信します。元大手製造業 SharePoint 運用担当。現SharePoint コンサルタント。お仕事のお問い合わせはこちらまでお願いします。当ブログにおける発信内容は個人に帰属し所属組織の公式発信/見解ではありません。
FB : 中村 和彦
blog: Be・Better!
MS MVP SharePoint 2009/10-2011/9
MS MVP Office 365 2012/10-2014/9