Здравствуйте. Подскажите, пожалуйста, берем остатки товаров (регистра накопления ТоварыНаСкладахОстатки) на дату документа, выбираем с этих остатков родителей (группы номенклатуры) и сворачиваем - у нас массив групп номенклатуры. Как можно правильно сделать массив групп номенклатуры и потом его свернуть?
---
Так?

```1c
    ВЫБРАТЬ
    ВложенныйЗапрос.НоменклатураРодитель КАК НоменклатураРодитель
    ИЗ
    (ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура.Родитель КАК НоменклатураРодитель
    ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаНачала, ) КАК ТоварыНаСкладахОстатки
    ГДЕ
    ТоварыНаСкладахОстатки.Склад = &СкладНачала
    И ТоварыНаСкладахОстатки.КоличествоОстаток > 0

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура.Родитель
    ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОкончания, ) КАК ТоварыНаСкладахОстатки
    ГДЕ
    ТоварыНаСкладахОстатки.КоличествоОстаток > 0
    И ТоварыНаСкладахОстатки.Склад = &СкладОкончания) КАК ВложенныйЗапрос

    СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.НоменклатураРодитель
```
---
Насоветуете тоже виртуальные таблицы во вложенные запросы оборачивать......
Вот с ОстаткиИОбороты - норм.
---
Ограничение по складу в параметры виртуальной таблицы, ограничение на количествоОстаток > 0 не нужно, оно и так выведет, что больше 0.
---
Показывайте свой вариант. А то непонятно - то ли вы уже свернули в массив, то ли вы хотите еще раз что-то куда-то свернуть...
---
Родитель случайно не верхнего уровня нужен? А то сейчас тут многие осекутся ...
---
Вопрос не понятен, нужно смотреть что делаете
---
```1c
    Выбрать Различные
    Номенклатура.Родитель
    Из Регистрблаблабла.Остатки()
```
---
```1c
    ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура.НоменклатурнаяГруппа
    ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&НаДату, ) КАК ТоварыНаСкладахОстатки

    СГРУППИРОВАТЬ ПО
    ТоварыНаСкладахОстатки.Номенклатура.НоменклатурнаяГруппа
```
---
Создала 2 запроса, получаю родителей, где количество остаток > 0 на одну и вторую дату. Как массив групп из первого результата объединить со втором?

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

    Запрос.УстановитьПараметр("НаДату",Объект.ДатаОкончания);
    Результат2 = Запрос.Выполнить().Выбрать();
```
---
Использовать в одном запросе два подзапроса с использованием ОБЪЕДИНИТЬ... А еще правильнее вложть это все во вложенный подзапрос и потом сгруппировать...

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

Или даже вот так:

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Родитель КАК НоменклатураРодитель
    |ИЗ
    | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, , ДвиженияИГраницыПериода, ) КАК ТоварыНаСкладахОстаткиИОбороты
    |ГДЕ
    | (ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток > 0
    | ИЛИ ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток > 0)
    |
    |СГРУППИРОВАТЬ ПО
    | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Родитель";
    Запрос.УстановитьПараметр("ДатаНачала",Объект.ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания",Объект.ДатаОкончания);
    Результат = Запрос.Выполнить().Выбрать();
```
---
Так?

```1c
    ВЫБРАТЬ
    ВложенныйЗапрос.НоменклатураРодитель КАК НоменклатураРодитель
    ИЗ
    (ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура.Родитель КАК НоменклатураРодитель
    ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаНачала, ) КАК ТоварыНаСкладахОстатки
    ГДЕ
    ТоварыНаСкладахОстатки.Склад = &СкладНачала
    И ТоварыНаСкладахОстатки.КоличествоОстаток > 0

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура.Родитель
    ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОкончания, ) КАК ТоварыНаСкладахОстатки
    ГДЕ
    ТоварыНаСкладахОстатки.КоличествоОстаток > 0
    И ТоварыНаСкладахОстатки.Склад = &СкладОкончания) КАК ВложенныйЗапрос

    СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.НоменклатураРодитель
```
---
Нет, Склад надо отправить в параметры виртуальной таблицы (дам где дата остатков).
---
Ограничение по складу в параметры виртуальной таблицы, ограничение на количествоОстаток > 0 не нужно, оно и так выведет, что больше 0.
---
Насоветуете тоже виртуальные таблицы во вложенные запросы оборачивать......
Вот с ОстаткиИОбороты - норм.
---
Само собой правильнее через ВТ, но судя по всему человек только учится, ему бы про объединение понять )))
---
Так они ему и не нужны, объединения эти, все есть в ОстаткиИОбороты :)
---
Знаю )) По порядку же идем. Человек захотел объединить два результата запроса. Я ему предложил для начала объединить сами запросы еще ДО получения результата, технически... Уже потом можно сказать, что в данной ЧАСТНОЙ задаче есть возможность обойтись другой виртуальной таблицей. Потому что есть дата начала остатков и дата окончания остатков именно в данном частном случае. А если дат не две? Или нужны остатки по разным регистрам?

Именно так приходит понимание внутренней механики... Ну, на мой взгляд, конечно...
---
Так можно?

```1c
    ВЫБРАТЬ
    ВложенныйЗапрос.НоменклатураРодитель КАК Родитель
    ИЗ
    (ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура.Родитель КАК НоменклатураРодитель
    ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаНачала, Склад В (&СкладНачала)) КАК ТоварыНаСкладахОстатки

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура.Родитель
    ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОкончания, Склад В (&СкладОкончания)) КАК ТоварыНаСкладахОстатки) КАК ВложенныйЗапрос

    СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.НоменклатураРодитель
```
---
Можно.