1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Set Uimydoc=ws.editdocument(true, Mydoc)

Тема в разделе "Lotus - Программирование", создана пользователем yerke, 9 апр 2009.

  1. yerke

    yerke Well-Known Member

    Репутация:
    0
    Регистрация:
    28 авг 2007
    Сообщения:
    392
    Симпатии:
    0
    привет всем
    собсвенно сабж

    1) доки с едитабл рич тескст полями
    поля содержат текст формулы и рисунки

    2) отбираю эти доки и в цикле копирую их значения рт полей и вставляю в ворд

    Код:
    Set uimydoc=ws.EditDocument(True, mydoc)
    If Not uimydoc.EditMode Then uimydoc.EditMode=True
    Call uimydoc.Refresh(True)
    Call uimydoc.GotoField("RTF")
    Call uimydoc.SelectAll
    Call uimydoc.Copy
    Call uimydoc.DeselectAll
    Call uimydoc.Close(False)
    Call wdApp.Application.Selection.PasteAndFormat(20)		
    '=
    '=
    но в определенном месте в цикле возникает ошибка и выводится окошка с "NDS is Running"
    и клиент закрывается

    помогите разобратся в чем трабла

    в NSD файле пишется
    ### PASS 2 : FATAL THREAD with STACK FRAMES 1/10 [ NLNOTES:1658:1558]
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Репутация:
    0
    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Может ошибка на строке Call wdApp.Application.Selection.PasteAndFormat(20)?
     
  3. yerke

    yerke Well-Known Member

    Репутация:
    0
    Регистрация:
    28 авг 2007
    Сообщения:
    392
    Симпатии:
    0
    нет
    точно знаю ошибка в

    Set uimydoc=ws.EditDocument(True, mydoc)
    пробовал тока его оставить все ровно так выходило


    причем эта ошибка в цикле возникает не везде

    Set uimydoc=ws.EditDocument(True, mydoc)
    иногда работает нормально
     
  4. Akupaka

    Akupaka А че я?.. О.о

    Репутация:
    0
    Регистрация:
    4 окт 2007
    Сообщения:
    3.360
    Симпатии:
    2
    я немного не с ответом, но, возможно, совет придется к стати...

    а что, если не открывать каждый документ, а создать новый, в цикле из каждого выбранного документа взять RT-итем и сложить его в аналогичный в этом новом документе, а в конце открыть только один новый и скопировать оттуда в ворд?..
     
  5. yerke

    yerke Well-Known Member

    Репутация:
    0
    Регистрация:
    28 авг 2007
    Сообщения:
    392
    Симпатии:
    0
    я так и делаю :)

    Код:
    Function DXL_Q(doc As NotesDocument)
    '=
    On Error Goto EH
    '=
    Dim mydoc As NotesDocument
    Dim uimydoc As NotesUIDocument
    '=
    Set rti=doc.GetFirstItem("QUESTION")
    If rti Is Nothing Then Exit Function
    '=
    Set mydoc=cdb.CreateDocument
    Call mydoc.ReplaceItemValue("FORM", "FOR-PRINT-TODAYS-RESULTS")
    Call rti.CopyItemToDocument(mydoc, "RTF")
    Call mydoc.ComputeWithForm(False, False)
    '=
    Set exporter=ses.CreateDXLExporter
    outputer=exporter.Export(mydoc)
    '=
    isRTI=(Instr(1, outputer, "<picture", 5) > 0) Or (Instr(1, outputer, "<object", 5) > 0)
    '=print
    Writes(doc.NUMBER(0)+") ")
    '=
    If isRTI Then		
    Set uimydoc=ws.EditDocument(True, mydoc)
    If Not uimydoc.EditMode Then uimydoc.EditMode=True
    Call uimydoc.Refresh(True)
    Call uimydoc.GotoField("RTF")
    Call uimydoc.SelectAll
    Call uimydoc.Copy
    Call uimydoc.DeselectAll
    Call uimydoc.Close(False)
    Call wdApp.Application.Selection.PasteAndFormat(20)		
    Else
    Writes(Cstr(rti.Text))
    End If
    '=
    Set mydoc=Nothing
    Set uimydoc=Nothing
    '=
    Writes(Chr(13))
    Exit Function
    EH:
    Resume Next 
    End Function
    '=
    '=

    и в цикле вызываю фунцию DXL_Q(doc As NotesDocument)

    и On Error Goto EH
    тоже не ловит ошибку

    блин
     
  6. Akupaka

    Akupaka А че я?.. О.о

    Репутация:
    0
    Регистрация:
    4 окт 2007
    Сообщения:
    3.360
    Симпатии:
    2
    на сколько я понимаю, то ты получил коллекцию документов и для каждого выполняешь функцию DXL_Q,
    которая для каждого документа открывает его (грубо говоря, пусть даже и копируя сначала в новый док)!
    и копирует содержимое в ворд

    а я тебе говорю, что сначала собери все доки из коллекции в один, и только его! открой и скопируй в ворд!
     
  7. yerke

    yerke Well-Known Member

    Репутация:
    0
    Регистрация:
    28 авг 2007
    Сообщения:
    392
    Симпатии:
    0
    113
    вот магическое число лотуса
    :D

    если вывать в цикле следующую комбинацию
    Set uimydoc=ws.EditDocument(True, mydoc)

    113 раз
    то оказывается клиент лотуса падает :lol:
     
  8. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    30 май 2006
    Сообщения:
    1.323
    Симпатии:
    4
    Т.е. открыть 113 окон? :D

    Хорошо, что он упал отдельно от виндовза...
     
Загрузка...

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