Позволю себе добавить...
итак, первое - очень важное замечание, в контексте данного вопроса не очень важное, но все-же...
если вы выполняете возврат каких-либо объектов нотес (документ, коллекция) всегда нужно чтобы объект БД, если она не текущая, из которой тянется требуемый объект, был инициализирован в вызывающем коде, иначе получите в возвращенном значении "Nothing".
например:
function getDoc1(aParam1 as variant) as notesDocument
dim someDb as notesDatabase
set someDb = getSomeDb
...
set getDoc1 = someDb.getSomeNotesDocument
end function
Sub someSub
dim doc1 as notesDocument
set doc1 = getDoc1(doc1Param1)
end sub
в результате вызова этой функции получим doc1 = nothing, хотя при проходе дебагером, в вызванной функции будет нормально полученный документ.
исправить так:
function getDoc1(aDoc1Db as notesDatabase, aParam1 as variant) as notesDocument
...
set getDoc1 = aDoc1Db.getSomeNotesDocument
end function
Sub someSub
dim someDb as notesDatabase
dim doc1 as notesDocument
set someDb = getSomeDb
set doc1 = getDoc1(someDb, doc1Param1)
end sub
это связанно с тем, что лотус убивая объект БД чистит память под объектами, полученными из этой БД.
А второе замечание к Omh и Morpheus:
а зачем условия проверки переданного параметра-унида документа, если вызов getDocumentByUnid сам выполнит подобную проверку? если даже его и проверять, то проверять бы уже на длинну в 32 символа!