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

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

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

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

и сново о удалении документов

  • Автор темы SkinGreek
  • Дата начала
S

SkinGreek

Всем привет

Возникла странный трабл, если коротко суть ее в том что UnprocessedDocuments не сбрасывается при отработки скрипта удаляющего документы.
В похожей задаче DomDoc посмотрел что алгоритм удаления такой же как у меня, но они вызывают агента, а у меня он отрабатывает прямо в Action.
Что за глюк такой? неужели ему надо обязательно в агенте отрабатывать?
 
S

SkinGreek

код прост до нельзя

Код:
	Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument 
Dim parentDoc As NotesDocument 
Dim nextParentDoc As NotesDocument 
Dim workspace As New NotesUIWorkspace
Dim collection As NotesDocumentCollection

Set db = session.CurrentDatabase

Set collection =db.UnprocessedDocuments	

Set parentDoc = collection.GetFirstDocument()

While Not(parentDoc Is Nothing)		
Set view = db.GetView(parentDoc.NoteID)
If Not view Is Nothing Then		
Set doc = view.GetFirstDocument()
While Not(doc Is Nothing)
Call doc.Remove(True)
Set doc = view.GetFirstDocument()
Wend			
Call view.Remove
End If
Set nextParentDoc = collection.GetNextDocument(parentDoc)
Call parentDoc.Remove( True )
Set parentDoc = nextParentDoc
Wend
Call workspace.ViewRefresh
Вставил в агента все норм сработало.
Глюк был в следующем
Есть 3 документа. Выделяю 2 дока нажимаю на кнопку. - В дебаге кол-во доков в колекции = 2. Удаляет без проблем.
Курсор стоит на оставшемся.
жму кнопку вылетает ошибка, в дебаге пишется что в колекции 2! документа. То есть кол-во ранее удаленых доков.
Выделяю последний документ(пробелом чтоб галочка появилась).
Жму на кнопку - вылетает ошибка, в дебаге пишется что в колекции 3! документа.

Это по меньшей мере странное поведение, я ожидал что функция Remove сделает документ "обработанным".

И еще сразу хотел бы спросить совета.
Задача состоит в том чтобы к документу относились другие документы(как бы чилдрены). На главной форме есть кнопочка и по нажатию на нее чтоб появлялась view с возможностью добавления и удаления чилдренов.
Задачу я решил через фолдеры, и имя фолдера есть noteid парентовского документа.
Сейчас практически все работает(кнопка открывающая view срабатывает со второго раза, если фолдер еще не создан).
Эту проблему я так и не решил, но мне интересно есть ли более изящное решение нежели плодить фолдеры для каждого документа-парента?


Omh
че так? )))
не думайте что я считал вас телепатами))), просто посчитал что если я написал так же как в DomDoc созданном уважаемыми программерами лотуса, то код собсно не требовался. В общем то так и оказалось, по какой то причине он работает ТОЛЬКО в агенте. Это меня оч удивляет
 
M

morpheus

Курсор стоит на оставшемся.
жму кнопку вылетает ошибка, в дебаге пишется что в колекции 2! документа. То есть кол-во ранее удаленых доков.
Выделяю последний документ(пробелом чтоб галочка появилась).
Жму на кнопку - вылетает ошибка, в дебаге пишется что в колекции 3! документа.
это , возможно, из-за того что не вызвали УнпроцеседДок

что то не понял зачем куча фолдеров.... почему нельзя всё хранить в одном виде?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Задача состоит в том чтобы к документу относились другие документы(как бы чилдрены). На главной форме есть кнопочка и по нажатию на нее чтоб появлялась view с возможностью добавления и удаления чилдренов.
Задачу я решил через фолдеры, и имя фолдера есть noteid парентовского документа.
Сейчас практически все работает(кнопка открывающая view срабатывает со второго раза, если фолдер еще не создан).
Эту проблему я так и не решил, но мне интересно есть ли более изящное решение нежели плодить фолдеры для каждого документа-парента?
Вот ужас. :)
Обычно через встроенное представление делают.
 
O

oxystile

добавь в конце Call notesUIView.DeselectAll
(где Dim uiview As NotesUIView
Set uiview = ws.CurrentView)
и посмотри правильно ли он теперь будет брать количество доков
 
O

Omh

oxystile
Не в бровь, а в глаз.
Из Action'a надо вызывать DeselectAll, маладца!
 
S

SkinGreek

Обычно через встроенное представление делают.
а удалить документ, а отредактировать?
Этот вариант рассматривался, но шустря по форуму я замечал такие темы как "как узнать какой документ выделен?" то есть в встроеных представлениях как я понял нельзя узнать выделенный документ, то есть не отредактировать не удалить их незя.Честно гвооря я не пробовал внедрять представление но судя по темам форума и ответам я понял что такое представление катит ток для отображения
oxystile
Ок спасиб погляжу завтра. Но согласитесь весьма странное поведение:)
 
O

Omh

SkinGreek
В 6-ке и выше с embedded view всё в шоколаде: т.к. появилась возможность показывать кнопки из embedded view.
Вместе с этим отпали многие проблемы.
 
S

SkinGreek

Morpheus
А блина ток сейчас до меня дошла идея при открытии одного фолдера "отображать только найденные".
ладно если собирусь с мыслями переделаю, надеюсь затыков много не поймаю на нем.
Сразу не додумался потому что у меня врезалось в голову такая аксиома "параметризованных view нет" И в принципе их действительно нет, а о этом методе я и забыл. и название его тоже, я ток разок его видел в документации:)

Omh
я специально проверял, у меня не показалось может я был совсем не прав?
А отфильтровать его тогда можно? ладно попробую порыскать, но надежда на гугл уже совсем отпала про лотус он мне мало что выдает:blink:
если не сложно тыкнете носом на примерчик похожей задачи?:$

В лотусе профан полный, даже читая доки полной картины не сложится даже за 6 месяцев. по крайней мере у меня:(
 
M

morpheus

embettedview + showsinglecategory + F1
тоесть вложенный вид в форме. у него есть свойство ПоказыватьОднуКатегорию, тоесть какую категорию в текстовом формате Вы зададите, то он (встр.вид) и покажет
 
Мы в соцсетях:

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