当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2015年12月10日木曜日

$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以降にバージョンアップする際は気を付けましょう。

試してはいませんが、JavaScriptのNotesDocumentクラスのCreatedプロパティも同じ結果になるんじゃないかな?
どなたか試してみて、結果を教えてください(^^


では、今日はこの辺で・・・


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: