• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

'note Item Not Found'

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

yerke

собственно сабж

смотрел
здесь

но конкретного ответа там не нашел
советуют делат апгрейт клиента // такого возможности нет пока
клиент 6,5,4
 
V

vital

А я нашел..
To code around the issue in earlier releases, do not use a CopyItem method. Instead use the ExtractFile method (of the NotesEmbeddedObjects class) to write the attachment to disk. Then use the EmbedObject method (of the NotesRichTextItem class) to attach the file.
 
Y

yerke

у меня здесь не идет речь об аттачах

есть NotesDocumentCollection с рт_полями (а там текст, инлайн картинки, формула)

создаю новый NotesDocument, где расположен рт_поля, куда копирую значения рт_полей с NotesDocumentCollection
с помощью CopyItemToDocument

потом при открытии
NotesDocument иногда вылетает ошибка
 
T

TIA

Был такой косяк. Копирование РТ-поля происходит приблизительно так. В целевой документ изначально копируется содержимое исходного РТ-поля и соответствующие $File, но $File указывает не на целевую БД, а на БД-источник. Только при сохранении целевого документа происходит физический перенос вложения и только после этого $File начинает указывать на целевую БД. Так вот, если в на момент сохранения целевой БД. БД-источник будет закрыта (не будет открытых хэндлов), то копирования вложения не происходит. При этом РТ-поле продолжает указывать на $File. Ещё, если попытаться отобразить св-ва вложения в целевом документе, то показывается ругательный месадж не помню какого содержания. Т.е. вложение получается "битым".

Вобщем, если копирование РТ-полей происходит из документов одной БД в документы другой, тогда проверьте, есть ли хоть одна переменная, указывающая на БД-источник (из которой получен NotesDocumentCollection) на момент сохранения целевого документа (NotesDocument)
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Как вариант перевесить копирование на серверного агента, а сервер можно хоть самый последний вжарить и проблемы больше не будет
 
Y

yerke

Вобщем, если копирование РТ-полей происходит из документов одной БД в документы другой, тогда проверьте, есть ли хоть одна переменная, указывающая на БД-источник (из которой получен NotesDocumentCollection) на момент сохранения целевого документа (NotesDocument)

то есть надо аннулировать хендлы на рт поля
после копирования
а как?
так Set rtitem = Nothing?


рисунок 1
схема копирования
 

Вложения

  • Untitled_1.jpg
    Untitled_1.jpg
    39 КБ · Просмотры: 281
T

TIA

то есть надо аннулировать хендлы на рт поля
Нет. Надо чтобы была переменная содержащая БД-источник. Т.е. не надо ничего аннулировать.
Вот, например, в следующем примере на момент tDoc.Save (целевого документа), нет ссылки на БД-источник. Потому что БД получена в foo2,а при выходе из foo2 обнуляется и переменная sdb, содержащая ссылку на БД-источник.

Sub foo1()
...
Set tDoc = ...
call foo2( tDoc )
call tDoc.Save(...)
End sub


Sub foo2(tDoc as NotesDocument)
Dim sdb as NotesDatabase
Dim nc as NotesDocumentCollection
Set sdb = ...
Set nc = sdb. ...
Set doc = nc.GetFirstDocument
While not doc is nothing
...
doc. CopyItemToDocument( tDoc, ... )
...
Wend
End Sub
 
Y

yerke

Нет. Надо чтобы была переменная содержащая БД-источник. Т.е. не надо ничего аннулировать.
Вот, например, в следующем примере на момент tDoc.Save (целевого документа), нет ссылки на БД-источник. Потому что БД получена в foo2,а при выходе из foo2 обнуляется и переменная sdb, содержащая ссылку на БД-источник.
нет не помогает

даже если переменная базы источника и
переменная целевого документа содержатся в одном контексте (внутри одной функции или sub'а)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
чем не подходит копирование дока целиком, удаление "ненужного", добавление "нужного" ?
 
N

nvyush

yerke
Конечно криво, но что если попробовать сперва копирнуть нужные доки в целевую базу, а затем уже из копий тянуть РТ поля? Темповые доки потом грохнуть.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
и зачем "это"? Не понимаю глубины архитектурного экзерциза
а что бум делатьс файлом, у кот название совпадёт, а ежели текст дублируется - и это тока первые грабли

не разу не пробовал с пом ДХЛ так извращаться, но в первом приближении - копируем все РТ и подчиненные ноды, затем файлноды...
 
Y

yerke

ладно
если не возможно избавиться от "note Item Not Found"

но есть другой вопрос
как ее обработать как ран тайм еррор
кажется нельзя?

ибо я не смог ее поймать с конструциией On Error
ни в PostOpen, ни в QueryOpen, ни в Initialize формы
 
T

turumbay

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

а вообще - рано сдались, как мне кажется.
попробуйте добиться устойчивого появления ошибки. выложите код, железно приводящий к такому рез-ту.
ну не может такого быть, чтобы не было вокэраунда...
 
Мы в соцсетях:

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