Есть документ "ЗаказПокупателя", есть ссылка на этот документ. В документе есть табличная часть "Запасы".

Я хочу обойти запросом эту табличную часть:

```1c
    "ВЫБРАТЬ
    | ЗаказПокупателяЗапасы.Номенклатура КАК Номенклатура1,
    | ЗаказПокупателяЗапасы.Цена КАК Цена1
    |ИЗ
    | Документ.ЗаказПокупателя.Запасы КАК ЗаказПокупателяЗапасы";
```

Но мне нужно обойти табличную часть именно этого документа, на который у меня ссылка.
Как это указать в запросе?
---
Вчера же обсуждали. Ссылка в табличной части справочника указывает на элемент справочника. С документами - то же самое.

```1c
    ГДЕ
    ЗаказПокупателяЗапасы.Ссылка = &Ссылка
```
---
Вчера же обсуждали. Ссылка в табличной части справочника указывает на элемент справочника. С документами - то же самое.

```1c
    ГДЕ
    ЗаказПокупателяЗапасы.Ссылка = &Ссылка
```
---
```1c
    ВЫБРАТЬ
    ЗаказПокупателяТовары.Номенклатура,
    ЗаказПокупателяТовары.Количество
    ИЗ
    Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
    ГДЕ
    ЗаказПокупателяТовары.Ссылка.Ссылка = &Ссылка
```
---
ЗаказПокупателяТовары.Ссылка.Ссылка = &Ссылка

Не надо так)
---
ЗаказПокупателяТовары.Ссылка
в данном случае это будет ссылка на строку табличной части
---
в данном случае это будет ссылка на строку табличной части

Поясните это как?
---
Я так понял со слов antz Петров (antz) что это ссылка на документ.
---
Строка табличной части не может иметь ссылки.
---
профтыкал - да, не нужно две ссылки
---
вот(

```1c
    Запрос3 = Новый Запрос;
    Запрос3.УстановитьПараметр("Ссылка", ВыборкаДетальныеЗаписи1.Ссылка);
    Запрос3.Текст =
    "ВЫБРАТЬ
    | ЗаказПокупателяЗапасы.Номенклатура.Наименование КАК Номенклатура2,
    | ЗаказПокупателяЗапасы.Сумма КАК Цена2
    |ИЗ
    | Документ.ЗаказПокупателя.Работы КАК ЗаказПокупателяЗапасы
    |ГДЕ
    | ЗаказПокупателяЗапасы.Ссылка = &Ссылка";

    РезультатЗапроса3 = Запрос3.Выполнить();
    ВыборкаДетальныеЗаписи3 = РезультатЗапроса3.Выбрать();

    Пока ВыборкаДетальныеЗаписи2.Следующий() Цикл
    ОбластьМакета.Параметры.Номенклатура = ВыборкаДетальныеЗаписи3.Номенклатура2;
    ОбластьМакета.Параметры.Сумма = ВыборкаДетальныеЗаписи3.Цена2;
    ТабличныйДокумент.Вывести(ОбластьМакета);
    СуммаОбщая = СуммаОбщая + ВыборкаДетальныеЗаписи3.Цена2;
    КонецЦикла
```
---
Пока ВыборкаДетальныеЗаписи2.Следующий() Цикл
    ОбластьМакета.Параметры.Номенклатура
Ничего не замечаете?
---
да, спасибо! Нарукожопил я)
---
Форма печатная ошибок не выдает, но и строк нет.
Ссылка на документ передалась, в документе строки в табличной части есть, а вот в обходе условие "Пока ВыборкаДетальныеЗаписи2.Следующий() Цикл" не проходит и код не выполняется..
---
```1c
    ВыборкаДетальныеЗаписи3 = РезультатЗапроса3.Выбрать();

    Пока ВыборкаДетальныеЗаписи2.Следующий() Цикл
```

Ничего не замечаете? :)
---
Это к вопросу о том, что переменным нужно давать правильные мнемонические названия.
---
А теперь самое страшное..

Мне нужно было взять документ "Прием и передача в ремонт", найти связанные с ним документы "Заказ-наряды" и обойти их табличные части "Работы" и "Запасы"..

Я как совсем не программист и немножечко рукожоп сделал страшную вещь: запросом нашел ссылки на связанные документы и в обходе результатов, двумя вложенными запросами обошел табличные части (сейчас у antz Петров (antz) снова кровь из глаз пойдет).

```1c
    Запрос1 = Новый Запрос;
    Запрос1.УстановитьПараметр("Ссылка", ТекущийДокумент);
    Запрос1.Текст =
    "ВЫБРАТЬ
    | ЗаказПокупателя.Ссылка КАК Ссылка
    |ИЗ
    | Документ.ЗаказПокупателя КАК ЗаказПокупателя
    |ГДЕ
    | ЗаказПокупателя.ДокументОснование.Ссылка = &Ссылка";

    РезультатЗапроса1 = Запрос1.Выполнить();
    ВыборкаДетальныеЗаписи1 = РезультатЗапроса1.Выбрать();

    Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл

    Запрос2 = Новый Запрос;
    Запрос2.УстановитьПараметр("Ссылка", ВыборкаДетальныеЗаписи1.Ссылка);
    Запрос2.Текст =
    "ВЫБРАТЬ
    | ЗаказПокупателяЗапасы.Номенклатура.Наименование КАК Номенклатура1,
    | ЗаказПокупателяЗапасы.Сумма КАК Цена1
    |ИЗ
    | Документ.ЗаказПокупателя.Запасы КАК ЗаказПокупателяЗапасы
    |ГДЕ
    | ЗаказПокупателяЗапасы.Ссылка = &Ссылка";

    РезультатЗапроса2 = Запрос2.Выполнить();
    ВыборкаДетальныеЗаписи2 = РезультатЗапроса2.Выбрать();

    Пока ВыборкаДетальныеЗаписи2.Следующий() Цикл
    ОбластьМакета.Параметры.Номенклатура = ВыборкаДетальныеЗаписи2.Номенклатура1;
    ОбластьМакета.Параметры.Сумма = ВыборкаДетальныеЗаписи2.Цена1;
    ТабличныйДокумент.Вывести(ОбластьМакета);
    СуммаОбщая = СуммаОбщая + ВыборкаДетальныеЗаписи2.Цена1;
    КонецЦикла;

    Запрос3 = Новый Запрос;
    Запрос3.УстановитьПараметр("Ссылка", ВыборкаДетальныеЗаписи1.Ссылка);
    Запрос3.Текст =
    "ВЫБРАТЬ
    | ЗаказПокупателяЗапасы.Номенклатура.Наименование КАК Номенклатура2,
    | ЗаказПокупателяЗапасы.Сумма КАК Цена2
    |ИЗ
    | Документ.ЗаказПокупателя.Работы КАК ЗаказПокупателяЗапасы
    |ГДЕ
    | ЗаказПокупателяЗапасы.Ссылка = &Ссылка";

    РезультатЗапроса3 = Запрос3.Выполнить();
    ВыборкаДетальныеЗаписи3 = РезультатЗапроса3.Выбрать();

    Пока ВыборкаДетальныеЗаписи3.Следующий() Цикл
    ОбластьМакета.Параметры.Номенклатура = ВыборкаДетальныеЗаписи3.Номенклатура2;
    ОбластьМакета.Параметры.Сумма = ВыборкаДетальныеЗаписи3.Цена2;
    ТабличныйДокумент.Вывести(ОбластьМакета);
    СуммаОбщая = СуммаОбщая + ВыборкаДетальныеЗаписи3.Цена2;
    КонецЦикла;

    КонецЦикла;
```

А можете вкрадце рассказать как нужно было?) Можно ли было всё это вместить в один запрос?)
---
В один можно, но не рационально
У тебя все хорошо, только запросы по табличным частям надо делать не в цикле, а получить сразу все табличные части по всем документам - выгрузить массив ссылок из результата первого запроса и передать его в условия запросов табличных частей. А в цикле только обходить их результаты, выбирая данные табличных частей нужных документов. Как именно обходить - по вкусу:
1) добавить в запросы по табличным частям ИТОГИ по ссылке на документ, тогда выборку можно будет обходить иерархически
2) выгрузить результат запроса в таблицу значений и фильтровать ее по ссылкам на документы (через НайтиСтроки(), например)
---
Можно и в одном

```1c
    "ВЫБРАТЬ
    | ЗаказПокупателяЗапасы.Номенклатура.Наименование КАК Номенклатура,
    | ЗаказПокупателяЗапасы.Сумма КАК Цена
    |ИЗ
    | Документ.ЗаказПокупателя.Запасы КАК ЗаказПокупателяЗапасы
    |ГДЕ
    | ЗаказПокупателяЗапасы.Ссылка.ДокументОснование = &Ссылка
    |
    | ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    | ЗаказПокупателяРаботы.Номенклатура.Наименование,
    | ЗаказПокупателяРаботы.Сумма
    |ИЗ
    | Документ.ЗаказПокупателя.Работы КАК ЗаказПокупателяРаботы
    |ГДЕ
    | ЗаказПокупателяРаботы.Ссылка.ДокументОснование = &Ссылка"

    "
```