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

Тема в разделе "Lotus - Программирование", создана пользователем DFO, 22 июн 2010.

  1. DFO

    DFO Гость

    Помогите, я новичек в Lotus'e. Нужно сделать следующее:
    В базе данных выделяю галочками нужные документы для экспорта.
    Создаю кнопку и при нажатии на кнопку выделенные документы должны экспортироватся в xml формат.
    Как это сделать на Lotus Script? может ктото скинуть код.
    И если не сложно скиньте код для импорта этих созданных xml документов обратно в базу.
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
  3. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    Гляньте в дизайнерском хелпе примеры на NotesDXLImporter и CreateDXLExporter - почти то что надо.
    Только вот если вы полный новичек в лотусе, то, как мне так кажется, не с того начинаете его освоение.
     
  4. DFO

    DFO Гость

    Спасибо большое=)
    С Экспортом xml разобрался, остался импорт
     
  5. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    Быстро Вы.
    А тут Вам поможет NotesDXLImporter. ;)
    ПримерчЫк:
    Код (Text):
    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
     
  6. DFO

    DFO Гость

    Вот спасибо) щас буду разбиратся ;)
     
  7. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    ну яб еще убрал абсолютные пути и юзал временные файлы (а то коряенько как-то)
     
  8. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    lmike, ну дык это ж просто примерчик... ;)
     
  9. DFO

    DFO Гость

    Получилось=)
    только вот вопрос, что это?:
    %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

    Только при импорте почемуто он заменяет старые документы, а не создает новые. Да еще и работает только с верхним уровнем документов, а с дочерними отказывается работать( пишет что импортировано но документ не заменяется(
     
  10. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    Коментарий ;).
    Делал когда постигал премудрости импорта, вот и пробовал разные DXLIMPORTOPTION.
    А вот для этого и служит DXLIMPORTOPTION.
     
  11. DFO

    DFO Гость

    Все, пофиксил, огроменное спасибо) если бы не помоги сидел бы я до 3го прихода=)
     
  12. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    Я сидел - полезно! ;)
     
  13. DFO

    DFO Гость

    Осталась последняя проблема, которую не могу решить, импорт файлов
    Код (LotusScript):
    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
    Как сделать теперь так, чтобы сохранить иерархию документов.т.е. чтобы после импорта дочерние и родительские документы сохранили свою иерархию.
    Ибо после экспорта и импорта, только самые верхние документы импортируются, дочерние теряют свою иерархию.
     
  14. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    я не знаю как при импорте..., возможно что чайлды без парента становятся новыми доками
    у вас последовательность соблюдена, при импорте ?
     
  15. DFO

    DFO Гость

    Он импортирует по очереди
     
  16. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    очередь откуда берется? не факт, что экпорт осущ. в порядке соответ. иерархии
     
  17. DFO

    DFO Гость

    Код (LotusScript):
    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
    Можно ли какнибудь сделать из этого кода экспорта, чтобы он при экспорте, если выделен галочкой дочерний документ то он проверял бы выделен ли родительский если нет выдовал сообщение: "Для экспорта выделен дочерний докумен, для экспорта требуется выделить и родительский" и выдовал варианты ответов выделить или нет. если нет то дочерний документ игнорируется если да, то ставится галочка выделения напротив родительского и дочерний экспортируется вместе с родительским.
     
  18. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    Получить родителя: Set parentDoc = doc.ParentDatabase.GetDocumentByUNID( doc.ParentDocumentUNID )
    Убрать документ из коллекции: collection.deleteDocument( doc )
    Проверить наличие родителя в коллекции: not collection.getDocument( parentDoc ) is nothing
    Поставить галочку: Call notesUIView.SelectDocument( notesdocument )
     
  19. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    вроде это галочку не ставит, только переводит курсор вьюхи (сaret), т.е. просто переходит на этот документ во вьюхе.
     
  20. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    точно. виноват. не ставит. значит не судьба?
     
Загрузка...

Поделиться этой страницей