Удалить наследование элементов дизайна Lotus Notes программно
В рамках усилий по созданию элементарной системы контроля версий я хотел бы программно отключить наследование на уровне элементов дизайна в шаблоне Lotus Notes. Я до сих пор пробовал следующее:
- Экспорт DXL (ForceNoteFormat=true) + XSLT. Это не удалось с проблемой проверки в импортере на полях (!).
- Экспорт DXL (ForceNoteFormat=false) + XSLT. Кажется, работает, но я бы предпочел не использовать решение DXL для чего-то такого общего.
Область, которую я хотел бы исследовать:
- Обведите все (дизайнерские) заметки, удалите
$Class
вещь.
У кого-нибудь есть предложение, как это сделать, или другой подход, который удалит наследство?
1 ответ
Решение
Следующая подпрограмма, кажется, работает, она удаляет флаг из любого элемента дизайна, который может создать клиент 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