1

Тема: LotusScript (Notes) - свойство IsSummary.

В LotusScript / Notes свойство IsSummary определяет, будет ли поле записано в summary-данные документа.

IsSummary  = True (по умолчанию). Поле попадает в summary-часть документа.

Плюсы:
Можно отображать в представлениях (Views).
Можно сортировать и отбирать документы по этому полю.

Поле участвует в формулах вида:

SELECT MyField="Test"

Поле доступно быстрее при поиске.


Минусы:
Summary-данные ограничены по размеру (примерно до 32 КБ на документ для старых форматов).
Большие поля замедляют работу базы.
IsSummary = False

Поле хранится только в теле документа.

Плюсы:
Можно хранить большие объёмы текста:логи,JSON,XML,HTML,большие списки значений,вложенные данные.

Минусы:
Поле нельзя использовать в колонках представлений.
Нельзя сортировать и выбирать документы по этому полю.
Формулы вида SELECT его не видят.

Поделиться

2

Re: LotusScript (Notes) - свойство IsSummary.

Когда пользователь сохраняет документ через форму, обычные поля создаются как Summary = True.
Так же...
установка IsSummary=False должна выполняться после каждого ReplaceItemValue()

разработчики часто делают небольшую вспомогательную процедуру, которая создаёт поле и сразу устанавливает нужное свойство, чтобы не забывать об этом

Sub ReplaceItemNoSummary(doc As NotesDocument,   itemName As String,                 itemValue As Variant)
    Dim item As NotesItem
    Set item = doc.ReplaceItemValue(itemName, itemValue)
    item.IsSummary = False
End Sub

Использование:

Call ReplaceItemNoSummary(doc, "DocLog", txt)

Поделиться

3

Re: LotusScript (Notes) - свойство IsSummary.

А вот скрипт, который переносит текст из поля "history" в поле типа ричтекст "hisatt".


Sub Click(Source As Button)
    Dim ws As New notesuiworkspace
    Dim db As NotesDatabase
    Dim uiview As NotesUIView
    Dim doc As NotesDocument
    Dim rti As Variant
    Dim rtnav As NotesRichTextNavigator
    
    Set db=ws.CurrentDatabase.Database
    Set uiview=ws.CurrentView
    Set doc = db.GetDocumentByID(uiview.CaretNoteID)    
    Set rti = doc.GetFirstItem("hisatt")
    
    Call rti.AddNewline(1)
    Call rti.appendtext(" ")
    
    Set rtnav = rti.CreateNavigator
    rtnav.FindFirstElement(4)
    Call rti.BeginInsert(rtnav)
    Call rti.AppendText(doc.history(0))
    Call rti.AddNewline(2)
    Call rti.EndInsert    
    doc.history=""
    Call doc.Save(True,False)
    Msgbox "История перенесена"
End Sub

Поделиться