私の環境でも連番発番の処理がありますが、過去重複したのは発番後に別の処理の為に文書の保存に時間がかかってしまう為でした。
保存の直前に発番する事で回避できています。今回のお話は、保存の直前に発番しているという事で、このミスは無いという事ですね。
検索するビューのインデックスがおかしくなっている可能性もあるので、ビューの更新を最初に実施するのが良いかもしれません。
さて、ソースを拝見してバグを発見しました。
生成したキーで文書を検索した結果のNotesDocumentを格納した変数とその後のif分の変数名が違います。
タイプミスかと思われます。
この結果、折角重複確認していても必ずループせずに処理を終了しています。
おそらくこれが原因かと思われます。
変数は厳密にするため、暗黙宣言を無効にするのが良いかと思います。
また、最初にビューのRefreshを実施した方が良いのではと思います。
直接関係ありませんが、私ならこう書きます。
1. GetDocumentByKeyの直前でRefreshを行う
2. 最初のGetDocumentByKeyでの第二引数を必ず設定する
3. 型変換は厳密に行う
いかがでしょうか。