• ⚡️ Последний шанс: Вебинар по пентесту стартует через 30 минут!

    Друзья, ровно через 30 минут (8 июля в 19:00) начинается наш практический вебинар по пентесту и поиску уязвимостей!

    Если вы хотите:
    🕵️‍♀️ Узнать, как находить и эксплуатировать уязвимости в веб-приложениях.
    💡 Получить ценные инсайты от настоящего эксперта.
    🚀 Сделать решительный шаг в мир кибербезопасности.
    То этот вебинар для вас!

    Ведущий вебинара – Александр Медведев – эксперт с более чем 10-летним опытом в сфере информационной безопасности, пятикратный победитель Standoff и обладатель престижных сертификаций: OSWE, OSCP, PNPT, CEH, CWAPT.

    Успейте присоединиться! Зарегистрироваться сейчас

    Возникли сложности с регистрацией? Пишите нам: @Codeby_Academy
    Будем вас ждать!

Экспорт выделенных документов в Xml

  • Автор темы Автор темы DFO
  • Дата начала Дата начала
D

DFO

Помогите, я новичек в Lotus'e. Нужно сделать следующее:
В базе данных выделяю галочками нужные документы для экспорта.
Создаю кнопку и при нажатии на кнопку выделенные документы должны экспортироватся в xml формат.
Как это сделать на Lotus Script? может ктото скинуть код.
И если не сложно скиньте код для импорта этих созданных xml документов обратно в базу.
 
Гляньте в дизайнерском хелпе примеры на NotesDXLImporter и CreateDXLExporter - почти то что надо.
Только вот если вы полный новичек в лотусе, то, как мне так кажется, не с того начинаете его освоение.
 
Спасибо большое=)
С Экспортом xml разобрался, остался импорт
 
Быстро Вы.
А тут Вам поможет NotesDXLImporter. ;)
ПримерчЫк:
Код:
Dim Session As New NotesSession
Dim Wsp As New NotesUIWorkspace
Dim db As NotesDatabase
Dim Stream As NotesStream 
Dim DXLImporter As NotesDXLImporter

filename$ = "D:\DXL\FileName.xml"
Set Db = Session.CurrentDatabase
Set Stream = Session.CreateStream 
If Not Stream.Open(filename$) Then
Messagebox "Невозможно открыть файл " & filename$,, "Ошибка"
Exit Sub
End If
Set DXLImporter = Session.CreateDXLImporter(stream, Db)
%REM
Dim values(5) As Variant
values(0) = DXLIMPORTOPTION_IGNORE
values(1) = DXLIMPORTOPTION_CREATE
values(2) = DXLIMPORTOPTION_REPLACE_ELSE_IGNORE
values(3) = DXLIMPORTOPTION_REPLACE_ELSE_CREATE
values(4) = DXLIMPORTOPTION_UPDATE_ELSE_IGNORE
values(5) = DXLIMPORTOPTION_UPDATE_ELSE_CREATE
Dim DocImportOption As Variant
Set DocImportOption = Wsp.Prompt (PROMPT_OKCANCELLIST, "Выбор DocumentImportOption", "Выбирай:", values(0), values)
%ENDREM
DXLImporter.DocumentImportOption = DXLIMPORTOPTION_REPLACE_ELSE_IGNORE
DXLImporter.Process
Msgbox "Готово! Документ " & filename$ & " импортирован."
End Sub
 
ну яб еще убрал абсолютные пути и юзал временные файлы (а то коряенько как-то)
 
lmike, ну дык это ж просто примерчик... ;)
 
Получилось=)
только вот вопрос, что это?:
%REM
Dim values(5) As Variant
values(0) = DXLIMPORTOPTION_IGNORE
values(1) = DXLIMPORTOPTION_CREATE
values(2) = DXLIMPORTOPTION_REPLACE_ELSE_IGNORE
values(3) = DXLIMPORTOPTION_REPLACE_ELSE_CREATE
values(4) = DXLIMPORTOPTION_UPDATE_ELSE_IGNORE
values(5) = DXLIMPORTOPTION_UPDATE_ELSE_CREATE
Dim DocImportOption As Variant
Set DocImportOption = Wsp.Prompt (PROMPT_OKCANCELLIST, "Выбор DocumentImportOption", "Выбирай:", values(0), values)
%ENDREM

Только при импорте почемуто он заменяет старые документы, а не создает новые. Да еще и работает только с верхним уровнем документов, а с дочерними отказывается работать( пишет что импортировано но документ не заменяется(
 
Коментарий ;).
Делал когда постигал премудрости импорта, вот и пробовал разные DXLIMPORTOPTION.
Только при импорте почемуто он заменяет старые документы, а не создает новые.
А вот для этого и служит DXLIMPORTOPTION.
 
Коментарий ;).
Делал когда постигал премудрости импорта, вот и пробовал разные DXLIMPORTOPTION.

А вот для этого и служит DXLIMPORTOPTION.
Все, пофиксил, огроменное спасибо) если бы не помоги сидел бы я до 3го прихода=)
 
Осталась последняя проблема, которую не могу решить, импорт файлов
Код:
Sub Click(Source As Button)
Dim Session As New NotesSession
Dim Wsp As New NotesUIWorkspace
Dim db As NotesDatabase
Dim Stream As NotesStream 
Dim DXLImporter As NotesDXLImporter
Dim i As Integer
Dim swch As Boolean
swch = True
i = 0
While swch = True
filename$ = "D:\Temp\Document" & i+1 & ".xml"
Set Db = Session.CurrentDatabase
Set Stream = Session.CreateStream 
If Not Stream.Open(filename$) Then
swch = False
Messagebox "Импорт файлов завершен"
Exit Sub
End If
Set DXLImporter = Session.CreateDXLImporter(stream, Db)
DXLImporter.DocumentImportOption = DXLIMPORTOPTION_REPLACE_ELSE_CREATE
DXLImporter.Process
i = i + 1
Wend
Msgbox "Готово! Все документы импортированы."
End Sub
Как сделать теперь так, чтобы сохранить иерархию документов.т.е. чтобы после импорта дочерние и родительские документы сохранили свою иерархию.
Ибо после экспорта и импорта, только самые верхние документы импортируются, дочерние теряют свою иерархию.
 
я не знаю как при импорте..., возможно что чайлды без парента становятся новыми доками
у вас последовательность соблюдена, при импорте ?
 
очередь откуда берется? не факт, что экпорт осущ. в порядке соответ. иерархии
 
Код:
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim strm As NotesStream
Dim doc As NotesDocument
Dim col As Notesdocumentcollection
Dim i As Integer
Dim ex As NotesDXLExporter
i = 0
Set db = session.CurrentDatabase
Set col=db.UnprocessedDocuments
Set doc = col.GetFirstDocument
While i < db.UnprocessedDocuments.Count
Set strm=session.CreateStream
file$="d:\Temp\Document" & i+1 & ".xml"
Call strm.Open(file$)
Call strm.Truncate
Set ex = session.CreateDXLExporter(doc ,strm)
i = i + 1
Call ex.Process
Call strm.Close
Set doc=col.GetNextDocument(doc)
Wend
Messagebox"Созданно " & i & " xml файла"
End Sub
Можно ли какнибудь сделать из этого кода экспорта, чтобы он при экспорте, если выделен галочкой дочерний документ то он проверял бы выделен ли родительский если нет выдовал сообщение: "Для экспорта выделен дочерний докумен, для экспорта требуется выделить и родительский" и выдовал варианты ответов выделить или нет. если нет то дочерний документ игнорируется если да, то ставится галочка выделения напротив родительского и дочерний экспортируется вместе с родительским.
 
Можно ли какнибудь сделать из этого кода экспорта, чтобы он при экспорте, если выделен галочкой дочерний документ то он проверял бы выделен ли родительский если нет выдовал сообщение: "Для экспорта выделен дочерний докумен, для экспорта требуется выделить и родительский" и выдовал варианты ответов выделить или нет. если нет то дочерний документ игнорируется если да, то ставится галочка выделения напротив родительского и дочерний экспортируется вместе с родительским.
Получить родителя: Set parentDoc = doc.ParentDatabase.GetDocumentByUNID( doc.ParentDocumentUNID )
Убрать документ из коллекции: collection.deleteDocument( doc )
Проверить наличие родителя в коллекции: not collection.getDocument( parentDoc ) is nothing
Поставить галочку: Call notesUIView.SelectDocument( notesdocument )
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы