Удалить наследование элементов дизайна Lotus Notes программно - PullRequest
2 голосов
/ 10 августа 2009

В рамках усилий по созданию элементарной системы контроля версий я хотел бы программно отключить наследование на уровне элементов дизайна в шаблоне Lotus Notes.До сих пор я пробовал следующее:

  • Экспорт DXL (ForceNoteFormat = true) + XSLT. Это не удалось с проблемой проверки в импортере в полях (!).
  • Экспорт DXL (ForceNoteFormat = false) + XSLT. Кажется, что работает, но я бы предпочел не использовать решение DXL для чего-то такого общего.

Anобласть, которую я хотел бы исследовать:

  • Обведите все заметки (дизайн), удалите элемент $Class.

Есть ли у кого-нибудьпредложение о том, как это сделать, или другой подход, который удалит наследство?

1 Ответ

4 голосов
/ 10 августа 2009

Следующая подпрограмма, кажется, работает, она удаляет флаг из любого элемента дизайна, который может создать клиент 7.0.3. Я получил подсказки о NotesNoteCollection из блога Яна на ту же тему:

Private Sub clearDesignInheritance(db As notesdatabase)
    On Error Goto errorthrower

    Dim nc As NotesNoteCollection
    Set nc = db.CreateNoteCollection(True) ' Select all note types...
    nc.SelectDocuments=False ' ...except data documents.

    Call nc.BuildCollection

    Dim noteid As String
    noteid = nc.GetFirstNoteId

    Dim doc As notesdocument

    Do Until noteid=""
        Set doc = db.GetDocumentByID(noteid)
        If doc.HasItem("$Class") Then
            Call doc.RemoveItem("$Class")
            Call doc.save(False,False,False)
        End If
        noteid = nc.GetNextNoteId(noteid)
    Loop

    Exit Sub
ErrorThrower:
    Error Err, Error & Chr(13) + "Module: " & Cstr( Getthreadinfo(1) ) & ", Line: " & Cstr( Erl )
End Sub
...