УТ 11.4 Массив в Запросе

1. Самоделкин 2 29.10.21 17:24 Сейчас в теме
Здравствуйте, форумчане!
Подскажите что у меня не так с запросом:
&НаКлиенте
Процедура ЗакСО_ПоказатьОстаткиПосле(Команда)
	
	Перем Остаток;

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

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

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

Показать


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

попадает только первая строка из массива.
Помогите исправить.
По теме из базы знаний
Найденные решения
10. Art39_ 30.10.21 15:10 Сейчас в теме
(9)

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


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

Вместо возврата в цикле
Мс.Добавить(Новый Структура("Номенклатура,Количество",Выборка.Номенклатура, Выборка,ВНаличииОстаток)
После цикла
Возврат Мс.
Самоделкин; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. spacecraft 29.10.21 17:56 Сейчас в теме
(1) так может только по одной номенклатуре остаток есть...
А, нет. Возврат внутри цикла. возвращать будет только одно первое значение.
2. user1461477 29.10.21 17:35 Сейчас в теме
а сколько строк вы хотели бы?
5. Самоделкин 2 29.10.21 17:47 Сейчас в теме
(2)столько сколько в массиве
3. anykey_vrn 29.10.21 17:38 Сейчас в теме
посмотри по отладчику, что происходит после:
Возврат (Остаток);?
4. gorakh 26 29.10.21 17:46 Сейчас в теме
Перед Пока Выборка...
Мс = Новый Массив;

Вместо возврата в цикле
Мс.Добавить(Новый Структура("Номенклатура,Количество",Выборка.Номенклатура, Выборка,ВНаличииОстаток)
После цикла
Возврат Мс.
Самоделкин; +1 Ответить
6. Самоделкин 2 29.10.21 17:48 Сейчас в теме
9. Самоделкин 2 30.10.21 14:18 Сейчас в теме
(4)Все бы хорошо, но в массив не попадает номенклатура с нулевым остатком, ЕСТЬNULL не помогает.
"ВЫБРАТЬ
	|СвободныеОстаткиОстатки.Номенклатура КАК Номенклатура,
	|ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток,0)  КАК ВНаличииОстаток
	|ИЗ
	|РегистрНакопления.СвободныеОстатки.Остатки КАК СвободныеОстаткиОстатки
	|ГДЕ
	|СвободныеОстаткиОстатки.Номенклатура В(&МассивНоменклатуры)";

где-то опять накосячил.
10. Art39_ 30.10.21 15:10 Сейчас в теме
(9)

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


+ желательно установить отбор по &МассивНоменклатуры в параметры остатков.
что-то вроде :
СвободныеОстатки.Остатки(, Номенклатура В (&МассивНоменклатуры)) КАК СвободныеОстаткиОстатки
gorakh; Самоделкин; +2 Ответить
8. gybson 29.10.21 19:40 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот