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

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

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

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

Set Uimydoc=ws.editdocument(true, Mydoc)

  • Автор темы yerke
  • Дата начала
Y

yerke

привет всем
собсвенно сабж

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]
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Может ошибка на строке Call wdApp.Application.Selection.PasteAndFormat(20)?
 
Y

yerke

Может ошибка на строке Call wdApp.Application.Selection.PasteAndFormat(20)?

нет
точно знаю ошибка в

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


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

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

Akupaka

я немного не с ответом, но, возможно, совет придется к стати...

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

yerke

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

Код:
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
тоже не ловит ошибку

блин
 
A

Akupaka

на сколько я понимаю, то ты получил коллекцию документов и для каждого выполняешь функцию DXL_Q,
которая для каждого документа открывает его (грубо говоря, пусть даже и копируя сначала в новый док)!
и копирует содержимое в ворд

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

yerke

113
вот магическое число лотуса
:D

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

113 раз
то оказывается клиент лотуса падает :lol:
 
Мы в соцсетях:

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