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

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

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

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

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

Перебор Документов В Коллекции

  • Автор темы Altaya
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

Altaya

Доброго времени суток.
Прошу помощи по такому вопросу: есть вид, в нем отобраны документы по условию SELECT (Form = "FIRST" | @IsResponseDoc). Вид отображает доки, респонсы и ответы на респонсы. Респонсы отображаются по одной и той же форме, но в каждой коллекции (если считать по главному доку) есть Главный респонс и множество дополнительных(Различаются значением одного поля и набором отображаемых акций).
Вопрос знатокам:
Если открыт один из дополнительных респонсов, как достучаться до главного респонса, чтобы изменить значение требуемого поля?
Бьюсь над этой задачей уже очень долго(((
 
N

nvyush

В каком смысле достучаться? На собаках предок адресуется полем $REF, на лс doc.ParentDocumentUNID.

Добавлено
Если несколько уровней вложенности, перебирать unidы предков, пока форма не изменится.
 
M

morpheus

Altaya
рекурсия "вверх" по ParentDocumentUNID
 
N

nvyush

Проверьте, сброшена ли в свойствах БД галка "Don't support specialized response hierarchy" (последняя закладка свойств БД).
Для новых (несохранённых) документов $REF и ParentDocumentUNID ещё не определены.
 
A

Altaya

Все, сдаюсь... сил нет больше мучить данную задачу... придется ее временно забросить(((( Спасибо всем, кто пытался помочь) видать я еще не дошла до этого уровня(((
 
R

RAJ

Все, сдаюсь... сил нет больше мучить данную задачу... придется ее временно забросить(((( Спасибо всем, кто пытался помочь) видать я еще не дошла до этого уровня(((

типа такого цикла:
Код:
....... определение ND - текущего документа

Set NDB = ND.ParentDatabase
while (ND.IsResponse) 
Set ND= NDB.GetDocumentByUNID(ND.ParentDocumentUNID)
Wend		
....... ND - содержит главный док
 
A

Altaya

Спасибо, но боюсь что мне это надо делать через FORALL, а его то я никак понять и не могу((( и подходящего примера нету((( Задание легкое, сама понимаю, мне просто нужно перебрать коллекцию, пока не найдется документ содержащий в искомом поле отличное от условия значение... Похоже, просто зациклилась и поэтому не могу решить...
 
R

RAJ

Спасибо, но боюсь что мне это надо делать через FORALL, а его то я никак понять и не могу((( и подходящего примера нету((( Задание легкое, сама понимаю, мне просто нужно перебрать коллекцию, пока не найдется документ содержащий в искомом поле отличное от условия значение... Похоже, просто зациклилась и поэтому не могу решить...

зачем FORALL?

Код:
...........
Set ND= NDC.GetFirstDocument
while not (ND Is Nothing)
------ обработка текущего ND ------
Set ND= NDC.GetNextDocument(ND) 'переходим к следующему документу коллекции
wend
...........
 
N

nvyush

Altaya
Forall применяется к массивам и спискам, с коллекциями документов он не работает
Перебирать коллекцию можно как RAJ написал, я предпочитаю так:
Код:
Set doc = dc.GetFirstDocument
Do Until doc Is Nothing
If doc.GetItemValue("Нужное поле")(0) = "Нужное значение" Then Exit Do
Set doc = dc.GetNextDocument(doc)
Loop
If Not doc Is Nothing Then 'на случай если документ не найден
'что-то делаем
End IF
 
A

Altaya

Каюсь... я балбеска(((( Это же элементарно... точно зациклилась((( все получилось)))))))))))))))) ГИГАНТСКОЕ СПАСИБО!!!!!!!!!!!!!

п.с.: к сожалению, больше сегодня не могу ++++ вам добавить((((
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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