Имя: Пароль:
1C
1С v8
Запрос с итогами. Как выбрать вложенную таблицу?
0 ik
 
28.02.20
09:44
Есть запрос. Как выбрать вложенную таблицу "Товары"??
На смысл запроса не смотрите, его нет))

Запрос.Текст = "ВЫБРАТЬ
                 |    Документ.Ссылка КАК Документ,
                 |    Документ.Контрагент КАК Контрагент,
                 |    Документ.СуммаДокумента КАК СуммаДокумента,
                 |    Документ.Товары.(
                 |        Номенклатура КАК Номенклатура,
                 |        Количество КАК Количество
                 |    ) КАК Товары
                 |ИЗ
                 |    Документ.ПоступлениеТоваровУслуг КАК Документ
                 |ИТОГИ
                 |    МИНИМУМ(Контрагент),
                 |    СУММА(СуммаДокумента)
                 |ПО
                 |    Документ";

   Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией, "Документ");
   Пока Выборка.Следующий() Цикл
      ВыбТов = Выборка.Товары.Выбрать(); // ЕСТЕСТВЕННО, ПУСТОЙ РЕЗУЛЬТАТ
1 ДенисЧ
 
28.02.20
09:47
Делай запрос к табчасти. И разумеется, не СуммуДокумента, а сумму по строке.
2 dka80
 
28.02.20
09:50
Если нужно и данные документа и данные табличной части, то лучше сделать два запроса. Затем выполнить пакет и данные второго запроса (запроса по табличной части) выбирать методом выбратьследующийполю
3 RomanYS
 
28.02.20
09:51
Длина полоски и комментарий ( // ЕСТЕСТВЕННО, ПУСТОЙ РЕЗУЛЬТАТ) вроде говорят о каком-то понимании. Но сам вопрос шокирует)
Либо убери здесь итоги и будет работать твой код, либо делай запрос к ТЧ с итогами подокументу.
4 dka80
 
28.02.20
10:13
(3) да что вы пристали к этой длине полоски? Ее длина говорит лишь о том, что человек давно зарегистрирован на форуме. Может он не занимался 1С непосредственно все это время?
5 ik
 
28.02.20
10:22
(2) Спасибо. Реальный запрос несколько сложноват.. надеялся, что я не знаю какой-нибудь обход, типа МИНИМУМ(Контрагент)
6 palsergeich
 
28.02.20
10:23
(4) угу, судя по темам человек на 77 сидит.
Лучше помогите
7 RomanYS
 
28.02.20
10:25
(5) Какой МИНИМУМ(Контрагент) в итогах по документу? В документе ОДИН контрагент. Твои итоги в (0) ничего не делают, просто дублируют детальные записи. Только в детальных записях есть нужная тебе ТЧ, а в итогах нет.
8 ik
 
28.02.20
10:28
(7) Я ж писал,
>На смысл запроса не смотрите, его нет))
9 НЕА123
 
28.02.20
10:31
(0)
ВыбТов.Следующий() ЛОЖЬ?
10 RomanYS
 
28.02.20
10:31
А что тебе надо? Убери итоги и спокойно обходи вложенный результат запроса.
11 ik
 
28.02.20
10:37
Ладно, вот "осмысленный" запрос
Запрос.Текст = "ВЫБРАТЬ
                 |    Документ.Контрагент КАК Контрагент,
                 |    Документ.СуммаДокумента КАК СуммаДокумента,
                 |    Документ.Контрагент.ИсторияНаименований.(
                 |        Период КАК Период,
                 |        Наименование КАК Наименование
                 |    ) КАК Исторяи
                 |ИЗ
                 |    Документ.ПоступлениеТоваровУслуг КАК Документ
                 |ИТОГИ
                 |    СУММА(СуммаДокумента)
                 |ПО
                 |    Контрагент";

(9) Да, конечно.
12 D_E_S_131
 
28.02.20
10:46
А нафига тебе вообще запросом получать эту "ИсториюНаименований"? Все равно такая выборка будет отдельным подзапросом выполняться. Так и обойди эту табчасть просто от ссылки на контрагента.
13 RomanYS
 
28.02.20
12:59
(11) Ну и норм
ВыборкаКонтрагент
ВыборкаДетальныеЗаписи(=Документ)
ВыборкаТовары(вложенный результат запроса)
14 Said_We
 
29.02.20
00:25
(11) Я правильно понимаю что на выходе надо иметь что-то типа такого:

Контрагент1, Наименование_Контрагента1_НаДатуДокумента1, СуммаДокумента1
             Наименование_Контрагента1_НаДатуДокумента2, СуммаДокумента2
             Наименование_Контрагента1_НаДатуДокумента3, СуммаДокумента3
             Наименование_Контрагента1_НаДатуДокумента4, СуммаДокумента4
             Наименование_Контрагента1_НаДатуДокумента5, СуммаДокумента5

Контрагент2, Наименование_Контрагента2_НаДатуДокумента1, СуммаДокумента1
             Наименование_Контрагента2_НаДатуДокумента2, СуммаДокумента2
             Наименование_Контрагента2_НаДатуДокумента3, СуммаДокумента3
             Наименование_Контрагента2_НаДатуДокумента4, СуммаДокумента4
             Наименование_Контрагента2_НаДатуДокумента5, СуммаДокумента5

...
КонтрагентN, Наименование_КонтрагентаN_НаДатуДокумента1, СуммаДокумента1
             Наименование_КонтрагентаN_НаДатуДокумента2, СуммаДокумента2
             Наименование_КонтрагентаN_НаДатуДокумента3, СуммаДокумента3
             Наименование_КонтрагентаN_НаДатуДокумента4, СуммаДокумента4
             Наименование_КонтрагентаN_НаДатуДокумента5, СуммаДокумента5

Если да, то зачем знать какое наименование контрагента было на момент документа?
Информацию запроса мы смотрим здесь и сейчас, и как назывался контрагент ранее ..... не пойму для чего.

Если это тоже не реальная задача, то давай уже реальную.