Подскажите как сгруппировать запрос по номенклатуре?

1. webresurs 205 14.11.18 16:18 Сейчас в теме
Сейчас запрос выводит остатки по каждому складу отдельно, а надо сгруппировать по номенклатуре

&НаСервере
Процедура ЗаполнитьТЧНаСервере3()
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ХозрасчетныйОстатки_КонОст.Счет КАК Счет,
		|	ХозрасчетныйОстатки_КонОст.Субконто1 КАК Номенклатура,
		|	ХозрасчетныйОстатки_КонОст.СуммаОстаток КАК СуммаКонОст,
		|	ХозрасчетныйОстатки_КонОст.КоличествоОстаток КАК КоличествоКонОст,
		|	ХозрасчетныйОстатки_КонОст.Субконто2 КАК Склад,
		|	ХозрасчетныйОстатки_КонОст.Организация КАК Организация,
		|	ХозрасчетныйОстатки_КонОст.Подразделение КАК Подразделение,
		|	0 КАК СуммаПоступление,
		|	0 КАК СуммаВыбытие,
		|	0 КАК КоличествоПоступление,
		|	0 КАК КоличествоВыбытие,
		|	0 КАК СуммаНачОст,
		|	0 КАК КоличествоНачОст,
		|	NULL КАК Регистратор
		|ПОМЕСТИТЬ ОстаткиИОбороты
		|{ВЫБРАТЬ
		|	Счет.*,
		|	Номенклатура.*,
		|	СуммаКонОст,
		|	КоличествоКонОст,
		|	Склад.*,
		|	Организация.*,
		|	Подразделение.*}
		|ИЗ
		|	РегистрБухгалтерии.Хозрасчетный.Остатки(&КонецПериодаОстатки,
		|	 Счет В (&СчетаУчетаСкладТолькоКоличествоИНоменклатура) {(Счет).*},
		|	 &СубконтоНоменклатураИСклад,
		|	 {(Организация).* КАК Организация,
		|	 (Субконто1).* КАК Номенклатура,
		|	 (Субконто2 В ИЕРАРХИИ (&Склады)).* КАК Склад,
		|	 (Подразделение).* КАК Подразделение}
		|	) КАК ХозрасчетныйОстатки_КонОст
		|{ГДЕ
		|	ХозрасчетныйОстатки_КонОст.СуммаОстаток КАК СуммаКонОст,
		|	ХозрасчетныйОстатки_КонОст.КоличествоОстаток КАК КоличествоКонОст}
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	ХозрасчетныйОбороты.Счет,
		|	ХозрасчетныйОбороты.Субконто1,
		|	0,
		|	0,
		|	ХозрасчетныйОбороты.Субконто2,
		|	ХозрасчетныйОбороты.Организация,
		|	ХозрасчетныйОбороты.Подразделение,
		|	ХозрасчетныйОбороты.СуммаОборотДт,
		|	ХозрасчетныйОбороты.СуммаОборотКт,
		|	ХозрасчетныйОбороты.КоличествоОборотДт,
		|	ХозрасчетныйОбороты.КоличествоОборотКт,
		|	0,
		|	0,
		|	ХозрасчетныйОбороты.Регистратор
		|ИЗ
		|	РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Регистратор, Счет В (&СчетаУчетаСкладТолькоКоличествоИНоменклатура) {(Счет).*}, &СубконтоНоменклатураИСклад, {(Организация).* КАК Организация, (Субконто1).* КАК Номенклатура, (Субконто2).* КАК Склад, (Подразделение).* КАК Подразделение}, , ) КАК ХозрасчетныйОбороты
		|{ГДЕ
		|	ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаПоступление,
		|	ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаВыбытие,
		|	ХозрасчетныйОбороты.КоличествоОборотДт КАК КоличествоПоступление,
		|	ХозрасчетныйОбороты.КоличествоОборотКт КАК КоличествоВыбытие}
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	ХозрасчетныйОстатки_НачОст.Счет,
		|	ХозрасчетныйОстатки_НачОст.Субконто1,
		|	0,
		|	0,
		|	ХозрасчетныйОстатки_НачОст.Субконто2,
		|	ХозрасчетныйОстатки_НачОст.Организация,
		|	ХозрасчетныйОстатки_НачОст.Подразделение,
		|	0,
		|	0,
		|	0,
		|	0,
		|	ХозрасчетныйОстатки_НачОст.СуммаОстаток,
		|	ХозрасчетныйОстатки_НачОст.КоличествоОстаток,
		|	NULL
		|ИЗ
		|	РегистрБухгалтерии.Хозрасчетный.Остатки(&НачалоПериода, Счет В (&СчетаУчетаСкладТолькоКоличествоИНоменклатура) {(Счет).*}, &СубконтоНоменклатураИСклад, {(Организация).* КАК Организация, (Субконто1).* КАК Номенклатура, (Субконто2).* КАК Склад, (Подразделение).* КАК Подразделение}) КАК ХозрасчетныйОстатки_НачОст
		|{ГДЕ
		|	ХозрасчетныйОстатки_НачОст.СуммаОстаток КАК СуммаНачОст,
		|	ХозрасчетныйОстатки_НачОст.КоличествоОстаток КАК КоличествоНачОст}
		|
		|ИНДЕКСИРОВАТЬ ПО
		|	Организация,
		|	Подразделение,
		|	Номенклатура
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	ОстаткиИОбороты.Номенклатура КАК Номенклатура,
		|	ОстаткиИОбороты.Организация КАК Организация,
		|	ОстаткиИОбороты.Подразделение КАК Подразделение,
		|	ВЫБОР
		|		КОГДА ОстаткиИОбороты.КоличествоКонОст = 0
		|			ТОГДА 0
		|		ИНАЧЕ ОстаткиИОбороты.СуммаКонОст / ОстаткиИОбороты.КоличествоКонОст
		|	КОНЕЦ КАК ЦенаКонОст,
		|	ВЫБОР
		|		КОГДА ОстаткиИОбороты.КоличествоНачОст = 0
		|			ТОГДА 0
		|		ИНАЧЕ ОстаткиИОбороты.СуммаНачОст / ОстаткиИОбороты.КоличествоНачОст
		|	КОНЕЦ КАК ЦенаНачОст,
		|	ВЫБОР
		|		КОГДА ОстаткиИОбороты.КоличествоПоступление = 0
		|			ТОГДА 0
		|		ИНАЧЕ ОстаткиИОбороты.СуммаПоступление / ОстаткиИОбороты.КоличествоПоступление
		|	КОНЕЦ КАК ЦенаПоступление,
		|	ВЫБОР
		|		КОГДА ОстаткиИОбороты.КоличествоВыбытие = 0
		|			ТОГДА 0
		|		ИНАЧЕ ОстаткиИОбороты.СуммаВыбытие / ОстаткиИОбороты.КоличествоВыбытие
		|	КОНЕЦ КАК ЦенаВыбытие
		|ПОМЕСТИТЬ СредниеЦены
		|ИЗ
		|	ОстаткиИОбороты КАК ОстаткиИОбороты
		|
		|ИНДЕКСИРОВАТЬ ПО
		|	Организация,
		|	Подразделение,
		|	Номенклатура
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	ОстаткиИОбороты.Счет КАК Счет,
		|	ОстаткиИОбороты.Номенклатура КАК Номенклатура,
		|	СУММА(ОстаткиИОбороты.КоличествоКонОст * СредниеЦены.ЦенаКонОст) КАК СуммаКонОст,
		|	СУММА(ОстаткиИОбороты.КоличествоКонОст) КАК КонКол,
		|	ОстаткиИОбороты.Склад КАК Склад,
		|	ОстаткиИОбороты.Организация КАК Организация,
		|	ОстаткиИОбороты.Подразделение КАК Подразделение,
		|	СУММА(ОстаткиИОбороты.КоличествоПоступление * СредниеЦены.ЦенаПоступление) КАК СуммаПоступление,
		|	СУММА(ОстаткиИОбороты.КоличествоВыбытие * СредниеЦены.ЦенаВыбытие) КАК СуммаВыбытие,
		|	СУММА(ОстаткиИОбороты.КоличествоПоступление) КАК ПриходКол,
		|	СУММА(ОстаткиИОбороты.КоличествоВыбытие) КАК РасходКол,
		|	СУММА(ОстаткиИОбороты.КоличествоНачОст * СредниеЦены.ЦенаНачОст) КАК СуммаНачОст,
		|	СУММА(ОстаткиИОбороты.КоличествоНачОст) КАК НачКол,
		|	ОстаткиИОбороты.Регистратор КАК Регистратор
		|{ВЫБРАТЬ
		|	Счет.*,
		|	Номенклатура.*,
		|	СуммаКонОст,
		|	ОстаткиИОбороты.КоличествоКонОст,
		|	Склад.*,
		|	Организация.*,
		|	Подразделение.*,
		|	СуммаПоступление,
		|	СуммаВыбытие,
		|	ОстаткиИОбороты.КоличествоПоступление,
		|	ОстаткиИОбороты.КоличествоВыбытие,
		|	СуммаНачОст,
		|	ОстаткиИОбороты.КоличествоНачОст,
		|	Регистратор.*}
		|ИЗ
		|	ОстаткиИОбороты КАК ОстаткиИОбороты
		|		ЛЕВОЕ СОЕДИНЕНИЕ СредниеЦены КАК СредниеЦены
		|		ПО ОстаткиИОбороты.Организация = СредниеЦены.Организация
		|			И ОстаткиИОбороты.Подразделение = СредниеЦены.Подразделение
		|			И ОстаткиИОбороты.Номенклатура = СредниеЦены.Номенклатура
		|
		|СГРУППИРОВАТЬ ПО
		|	ОстаткиИОбороты.Номенклатура,
		|	ОстаткиИОбороты.Склад,
		|	ОстаткиИОбороты.Организация,
		|	ОстаткиИОбороты.Подразделение,
		|	ОстаткиИОбороты.Регистратор";

	
	Запрос.УстановитьПараметр("ГлавныйСклад", Объект.ГлавныйСклад);
	Запрос.УстановитьПараметр("Докум", Объект.ПредДокумент);
	Запрос.УстановитьПараметр("КонецПериодаОстатки", КонецДня(Объект.ДатаОкончания));
	Запрос.УстановитьПараметр("КонецПериода", КонецДня(Объект.ДатаОкончания));
	Запрос.УстановитьПараметр("НачалоПериода", Объект.ДатаНачала);
	Запрос.УстановитьПараметр("Склады", Объект.Склады.Выгрузить(,"Склад"));
	Если Объект.Склады.Количество()>0 Тогда
		Запрос.УстановитьПараметр("ЕстьСклад",Истина);
	Иначе
		Запрос.УстановитьПараметр("ЕстьСклад",Ложь);
	КонецЕсли;
	
	СубконтоНоменклатураИСклад = Новый Массив;
	СубконтоНоменклатураИСклад.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
	СубконтоНоменклатураИСклад.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);
	Запрос.УстановитьПараметр("СубконтоНоменклатураИСклад", СубконтоНоменклатураИСклад);
	
	Запрос.УстановитьПараметр("СчетаУчетаСкладТолькоКоличествоИНоменклатура", ПланыСчетов.Хозрасчетный.СырьеИМатериалы);
	
	РезультатЗапроса = Запрос.Выполнить();
		Объект.Расчет3.Загрузить(РезультатЗапроса.Выгрузить());

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

Показать
+
Найденные решения
2. DenisCh 14.11.18 16:29 Сейчас в теме
Или использовать ИТОГИ или убрать группировку по складу.
Но, судя по скобкам - у тебя построитель отчёта. Лучше воспользоваться его средствами
webresurs; +1
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DenisCh 14.11.18 16:29 Сейчас в теме
Или использовать ИТОГИ или убрать группировку по складу.
Но, судя по скобкам - у тебя построитель отчёта. Лучше воспользоваться его средствами
webresurs; +1
7. webresurs 205 14.11.18 17:03 Сейчас в теме
(2) использовал построитель

|ИЗ
| ОстаткиИОбороты КАК ОстаткиИОбороты
| ЛЕВОЕ СОЕДИНЕНИЕ СредниеЦены КАК СредниеЦены
| ПО ОстаткиИОбороты.Организация = СредниеЦены.Организация
| И ОстаткиИОбороты.Подразделение = СредниеЦены.Подразделение
| И ОстаткиИОбороты.Номенклатура = СредниеЦены.Номенклатура
|
|СГРУППИРОВАТЬ ПО
| ОстаткиИОбороты.Номенклатура
|{ИТОГИ ПО
| Номенклатура.*,
| КонКол,
| ПриходКол,
| РасходКол,
| НачКол}";
+
3. YannikAlx 43 14.11.18 16:44 Сейчас в теме
А зачем тогда в параметры загоняешь склад?
Куча лишних строчек выходит...
Убери вообще отовсюду склады и будет тебе счастье.
+
4. webresurs 205 14.11.18 16:48 Сейчас в теме
(3) выборка по не скольким складам нужна, т.е. сумма остатков на этих складах
+
5. YannikAlx 43 14.11.18 16:54 Сейчас в теме
(4) Я что-то не пойму.
Вы уж определитесь что вам нужно.
выводит остатки по каждому складу отдельно, а надо сгруппировать по номенклатуре

выборка по не скольким складам нужна


Это все же взаимоисключающие желания
+
6. webresurs 205 14.11.18 16:59 Сейчас в теме
(5) нужно общее количество номенклатуры на определенных складах

склад 1 - Номенклатура - 1 шт
склад 2 - Номенклатура - 1 шт
-----------------------------------
Итого - Номенклатура - 2 шт

а еще есть склад3, 4 и .т.п. по ним не нужны данные
+
Внимание! Тема сдана в архив

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