Vlad7131 писал(а) 17. Октября 2012 :: 10:24: В конкретном случае выходят остатки по двум товарам, первый товар есть на двух складах, а другой на трех.
(Всего в таблицу попадает 5 строк)
Нужно чтобы первый товар был показан с нулевым остатком и на третьем складе, т.е. как при "ВСЕ Вошедшие в запрос".
(В таблице тогда будет 6 строк, 3 строки по каждому товару)
Вот такой код:
ТекстЗапроса = "
|SELECT ОстаткиТоваровОстатки.Товар [Товар $Справочник.Номенклатура]
| , ОстаткиТоваровОстатки.Склад [Склад $Справочник.МестаХранения]
| , ОстаткиТоваровОстатки.ОстатокТовараОстаток
|FROM $РегистрОстатки.ОстаткиТоваров(,,
| (Фирма = :ВыбФирма),
| (Товар, Склад),) AS ОстаткиТоваровОстатки
|TOTALS Sum(ОстатокТовараОстаток)
|BY ALL
| , [Товар $Справочник.Номенклатура]
| , [Склад $Справочник.МестаХранения]
|";
ПостроительЗапроса = СоздатьОбъект("ПостроительЗапроса");
ПостроительЗапроса.Текст = ТекстЗапроса;
ПостроительЗапроса.Параметры.Установить("ВыбФирма", ВыбФирма);
ПостроительЗапроса.Группировки.Добавить("[Товар]");
ПостроительЗапроса.Группировки.Добавить("[Склад]");
ПостроительЗапроса.Выполнить();
Выборка = ПостроительЗапроса.Результат();
Пока Выборка.Группировка("Товар") = 1 Цикл
Пока Выборка.Группировка("Склад") = 1 Цикл
Сообщить("Товар: " + Выборка.Товар + ", склад: " + Выборка.Склад + ", остаток: " + Выборка.СуммаОстатокТовараОстаток);
КонецЦикла;
КонецЦикла;
выводит в окне сообщений
Цитата:Товар: товар 1, склад: Склад 1, остаток: 10
Товар: товар 1, склад: Склад 2, остаток: 10
Товар: товар 2, склад: Склад 1, остаток: 10
Товар: товар 2, склад: Склад 2, остаток: 10
Товар: товар 3, склад: Склад 1, остаток: 10
Товар: товар 3, склад: Склад 2, остаток:
Если чё, используются разработки
1 и
2.
Или вот так, если нужна таблица значений:
ТекстЗапроса = "
|SELECT ОстаткиТоваровОстатки.Товар [Товар $Справочник.Номенклатура]
| , ОстаткиТоваровОстатки.Склад [Склад $Справочник.МестаХранения]
| , ОстаткиТоваровОстатки.ОстатокТовараОстаток
|FROM $РегистрОстатки.ОстаткиТоваров(,,
| (Фирма = :ВыбФирма),
| (Товар, Склад),) AS ОстаткиТоваровОстатки
|TOTALS Sum(ОстатокТовараОстаток)
|BY [Товар $Справочник.Номенклатура]
| , [Склад $Справочник.МестаХранения]
|";
Консоль = СоздатьОбъект("AddIn.qryConsole");
Консоль.УстановитьТекстовыйПараметр("ВыбФирма", ВыбФирма);
ФайлКуба = Консоль.СоздатьКуб(ТекстЗапроса);
СводныйЗапрос = СоздатьОбъект("СводныйЗапрос");
СводныйЗапрос.Открыть(ФайлКуба);
тз = СводныйЗапрос.Выгрузить(, "[Товар], [Склад]");