投稿

12月, 2015の投稿を表示しています

$Createdにまつわる挙動が変わってた

イメージ
皆さん、こんにちは。
ついに12月です。今年ももう残すところ、20日とちょっとです。
本来なら、一年を振り返りましょうね。とかいうところですが、恐ろしいので、振り返るのは止めておきます。

さて、今日も日付の話です。
地球が丸いのがいけないのか、日付の取り扱いはとても難しいですね。



$Createdという予約フィールドがあります。
こちらは、ご想像の通り、文書の作成日を格納しておくのに使えるフィールドです。

通常の文書には存在していませんが、任意で作成できるようです。
また、Notes/Dominoが自動で付与することもあるようです。

そんな$Createdですが、@関数とLotus Scriptで挙動が違うのはご存知でしょうか?
こちらのブログ
[Notes/Domino] $Created と @Created
によると、

文書に$Createdがあると、@Created関数はそのフィールドに格納されている値を返すとのこと。
悪く言えば、文書の作成日を偽ることができるというものです。
しかし、Lotus ScriptのNotesDocument.Createdプロパティは$Createdを無視して、本来の?文書の作成日を返すというものです。



ところが・・・ところがですよ!

Notes/Domino 9.0.1 *1 では、文書に$Createdがあると、Lotus ScriptのNotesDocument.Createdプロパティもそのフィールドに格納されている値を返すではありませんか!?
*1 私が確認したのが9.0.1なので、おそらく9.0.0から変わったものと思われます

なお、Notes/Domino 8.5.3では、以前のようにLotus ScriptのNotesDocument.Createdプロパティは$Createdを無視していました。


これにより、@関数とLotus Scriptで挙動が等しくなったので、これが正しい。良かった!といえなくもないのですが、これといったドキュメントも見つからなかったので(当然、ヘルプにも出てないです。というかヘルプでは$Createdフィールドについて触れてすらいないという・・・)、発覚?に時間がかかりました。



些細なことではありますが、$Createdや文書の作成日を利用したNotes DBがある場合、9.0.x以降に…