• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

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

Altaya

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

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

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

Set NDB = ND.ParentDatabase
while (ND.IsResponse) 
Set ND= NDB.GetDocumentByUNID(ND.ParentDocumentUNID)
Wend		
....... ND - содержит главный док
 
Спасибо, но боюсь что мне это надо делать через FORALL, а его то я никак понять и не могу((( и подходящего примера нету((( Задание легкое, сама понимаю, мне просто нужно перебрать коллекцию, пока не найдется документ содержащий в искомом поле отличное от условия значение... Похоже, просто зациклилась и поэтому не могу решить...
 
Спасибо, но боюсь что мне это надо делать через FORALL, а его то я никак понять и не могу((( и подходящего примера нету((( Задание легкое, сама понимаю, мне просто нужно перебрать коллекцию, пока не найдется документ содержащий в искомом поле отличное от условия значение... Похоже, просто зациклилась и поэтому не могу решить...

зачем FORALL?

Код:
...........
Set ND= NDC.GetFirstDocument
while not (ND Is Nothing)
------ обработка текущего ND ------
Set ND= NDC.GetNextDocument(ND) 'переходим к следующему документу коллекции
wend
...........
 
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
 
Каюсь... я балбеска(((( Это же элементарно... точно зациклилась((( все получилось)))))))))))))))) ГИГАНТСКОЕ СПАСИБО!!!!!!!!!!!!!

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab