• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Подстановка шаблонов в Rich Text

  • Автор темы serg1y
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

serg1y

Комментарий модератора
1. Заменено имя представления(view) c Шаблоны на Template. Надеюсь автор понимает что не стоит называть view используя символы кирилицы, ну или хотя бы пользоваться Alias
2. При чем тут указанные автором возможность заполнять шаблоны прямо в лотусе?
3. Назначение скрипта: доставать файлы из документов и вставлять их в текущий документ(изюминка - пользователю не надо переоткрывать документ, минус - если пользователь передумал, позно, документ уже сохранён)

Задача
Есть база для хранения документов. Документы заполняются в MS Word по шаблону и прикрепленными попадают в базу Lotus. Нужно получить возможность заполнять шаблоны прямо в Lotus (без MS Word) и не через OLE, а в rich text поле.

Решение
Создаем форму для шаблонов, там два поля: DotName (text) - имя шаблона, DotBody (rich text) - сам шаблон.
Создаем представление (view). Называется "Template", там отображаются введенные шаблоны. Шаблоны могут меняться, удаляться, добавляться.
Создаем форму основного документа, на ней поле Body (rich text) - куда должны подставляться выбранные пользователем шаблоны (из представления "Template"), а потом вручную заполняться. Для выбора и подстановки шаблонов используется кнопка.
Код на кнопке:

Код:
Sub Click(Source As Button)
Dim session As NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim ws As New NotesUIWorkspace
Dim coll As NotesDocumentCollection	
Dim uidoc As NotesUIDocument
Dim docA As NotesDocument
Dim docB As NotesDocument
Dim rtitemA As NotesRichTextItem
Dim rtitemB As NotesRichTextItem
Dim n As Integer

Set session = New NotesSession
Set db = session.CurrentDatabase	
Set view = db.GetView("Template")
Set uidoc = ws.CurrentDocument
Set docA = uidoc.Document
Set rtitemA = New NotesRichTextItem(docA, "Body" )

'выбор шаблонов из представления "Template" с помощью меню
Set coll=ws.PickListCollection(3, True,db.Server, db.FilePath,"Template","Выберите шаблоны", "Список шаблонов")
n=coll.count
If n = 0 Then Exit Sub
Set DocB=coll.GetFirstDocument

'подстановка выбранных шаблонов в rich text поле один за другим по циклу
While Not DocB Is Nothing
Set rtitemB = docB.GetFirstItem( "DotBody" )
Call rtitemA.AppendRTItem( rtitemB )
Call rtitemA.AddNewLine(1)
Set docB=coll.GetNextDocument(docB)
Wend

'переоткрытие документа, чтобы изменения отображались сразу
Call rtitemA.Update
Call ws.EditDocument(True,docA)
docA.SaveOptions = "0"
Call uidoc.Close
Set uidoc = ws.CurrentDocument
Set docA = uidoc.Document
docA.SaveOptions = "1"	
End Sub
 
S

serg1y

2. При чем тут указанные автором возможность заполнять шаблоны прямо в лотусе?
Раньше шаблоны заполнялись в Word, изменения в прикрепленные файлы вносить неудобно. Теперь в rich text подставляется шаблон, а потом его в этом поле можно заполнять, изменять.
минус - если пользователь передумал, позно, документ уже сохранён
Мне кажется документ не сохраняется, во всяком случе, если я нажимаю "Отмена", а потом на вопрос сохранять ли документ отвечаю - нет, - нигде нового документа я не вижу.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!