Здравствуйте, форумчане!
Подскажите что у меня не так с запросом:

```1c
    &НаКлиенте
    Процедура ЗакСО_ПоказатьОстаткиПосле(Команда)

    Перем Остаток;

    МассивНоменклатуры = Новый Массив;

    Для Каждого Строка Из Объект.Товары Цикл
    МассивНоменклатуры.Добавить(Строка.Номенклатура);
    Сообщить ("Номенклатура "+Строка.Номенклатура);
    КонецЦикла;

    ЗакСО_ПоказатьОстаткиПослеНаСервере(МассивНоменклатуры,Остаток);

    Объект.Товары.ОстатокСклад = Остаток;

    КонецПроцедуры

    &НаСервере
    Функция ЗакСО_ПоказатьОстаткиПослеНаСервере(МассивНоменклатуры,Остаток)

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

    Запрос.УстановитьПараметр("МассивНоменклатуры",МассивНоменклатуры);

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

    Пока Выборка.Следующий() Цикл
    Сообщить (" + Выборка.Номенклатура + " осталось на складе " + Выборка.ВНаличииОстаток);
    Остаток = Выборка.ВНаличииОстаток;
    Возврат (Остаток);
    КонецЦикла;

    КонецФункции
```

В
```1c
    Сообщить (" + Выборка.Номенклатура + " осталось на складе " + Выборка.ВНаличииОстаток);
```

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

+ желательно установить отбор по &МассивНоменклатуры в параметры остатков.
что-то вроде :
СвободныеОстатки.Остатки(, Номенклатура В (&МассивНоменклатуры)) КАК СвободныеОстаткиОстатки
---
Перед Пока Выборка...
Мс = Новый Массив;

Вместо возврата в цикле
Мс.Добавить(Новый Структура("Номенклатура,Количество",Выборка.Номенклатура, Выборка,ВНаличииОстаток)
После цикла
Возврат Мс.
---
так может только по одной номенклатуре остаток есть...
А, нет. Возврат внутри цикла. возвращать будет только одно первое значение.
---
а сколько строк вы хотели бы?
---
столько сколько в массиве
---
посмотри по отладчику, что происходит после:
Возврат (Остаток);?
---
Перед Пока Выборка...
Мс = Новый Массив;

Вместо возврата в цикле
Мс.Добавить(Новый Структура("Номенклатура,Количество",Выборка.Номенклатура, Выборка,ВНаличииОстаток)
После цикла
Возврат Мс.
---
Спасибо, попробую.
---
Все бы хорошо, но в массив не попадает номенклатура с нулевым остатком, ЕСТЬNULL не помогает.

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

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

+ желательно установить отбор по &МассивНоменклатуры в параметры остатков.
что-то вроде :
СвободныеОстатки.Остатки(, Номенклатура В (&МассивНоменклатуры)) КАК СвободныеОстаткиОстатки
---
Возврат убери =)