Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Объединение в запросе (число прочтений - 1547 )
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Объединение в запросе
25. Февраля 2011 :: 03:40
Печать  
Стоит задача:
Показать заполненность адресного склада, т.е. ячейка, объем, номенклатура, ее объем и количество.

Пока родил следующее:
Код
Выбрать все
Текст =
	"ВЫБРАТЬ
	|	АС_Склады.Ссылка КАК Склад,
	|	АС_ЭтажиСкладов.Ссылка КАК Этаж,
	|	АС_ПроходыСкладов.Ссылка КАК Проход,
	|	АС_Стеллажи.Ссылка КАК Стеллаж,
	|	АС_ПолкиСтеллажей.Ссылка КАК Полка,
	|	АС_ЯчейкиПолок.Ссылка КАК Ячейка,
	|	NULL КАК Номенклатура,
	|	СУММА(АС_ЯчейкиПолок.Длина * АС_ЯчейкиПолок.Ширина * АС_ЯчейкиПолок.Высота) КАК ОбъемЯчейки,
	|	NULL КАК НоменклатураОбъем,
	|	NULL КАК Количество
	|ИЗ
	|	Справочник.АС_ЯчейкиПолок КАК АС_ЯчейкиПолок
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.АС_ПолкиСтеллажей КАК АС_ПолкиСтеллажей
	|			ЛЕВОЕ СОЕДИНЕНИЕ Справочник.АС_Стеллажи КАК АС_Стеллажи
	|				ЛЕВОЕ СОЕДИНЕНИЕ Справочник.АС_ПроходыСкладов КАК АС_ПроходыСкладов
	|					ЛЕВОЕ СОЕДИНЕНИЕ Справочник.АС_ЭтажиСкладов КАК АС_ЭтажиСкладов
	|						ЛЕВОЕ СОЕДИНЕНИЕ Справочник.АС_Склады КАК АС_Склады
	|						ПО АС_ЭтажиСкладов.Владелец = АС_Склады.Ссылка
	|					ПО АС_ПроходыСкладов.Владелец = АС_ЭтажиСкладов.Ссылка
	|				ПО АС_Стеллажи.Владелец = АС_ПроходыСкладов.Ссылка
	|			ПО АС_ПолкиСтеллажей.Владелец = АС_Стеллажи.Ссылка
	|		ПО АС_ЯчейкиПолок.Владелец = АС_ПолкиСтеллажей.Ссылка
	|
	|СГРУППИРОВАТЬ ПО
	|	АС_Склады.Ссылка,
	|	АС_ЭтажиСкладов.Ссылка,
	|	АС_ПроходыСкладов.Ссылка,
	|	АС_Стеллажи.Ссылка,
	|	АС_ПолкиСтеллажей.Ссылка,
	|	АС_ЯчейкиПолок.Ссылка
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	АС_Остатки.Склад,
	|	АС_Остатки.Этаж,
	|	АС_Остатки.Проход,
	|	АС_Остатки.Стеллаж,
	|	АС_Остатки.Полка,
	|	АС_Остатки.Ячейка,
	|	АС_Остатки.Номенклатура,
	|	СУММА(АС_Остатки.Ячейка.Длина * АС_Остатки.Ячейка.Ширина * АС_Остатки.Ячейка.Высота),
	|	СУММА(АС_Остатки.Номенклатура.Длина * АС_Остатки.Номенклатура.Ширина * АС_Остатки.Номенклатура.Высота),
	|	СУММА(АС_ОстаткиОстаткиИОбороты.КоличествоКонечныйОстаток)
	|ИЗ
	|	РегистрНакопления.АС_Остатки КАК АС_Остатки
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.АС_Остатки.ОстаткиИОбороты(, , Регистратор, , ) КАК АС_ОстаткиОстаткиИОбороты
	|		ПО АС_Остатки.Регистратор = АС_ОстаткиОстаткиИОбороты.Регистратор
	|			И АС_Остатки.Склад = АС_ОстаткиОстаткиИОбороты.Склад
	|			И АС_Остатки.Этаж = АС_ОстаткиОстаткиИОбороты.Этаж
	|			И АС_Остатки.Проход = АС_ОстаткиОстаткиИОбороты.Проход
	|			И АС_Остатки.Стеллаж = АС_ОстаткиОстаткиИОбороты.Стеллаж
	|			И АС_Остатки.Полка = АС_ОстаткиОстаткиИОбороты.Полка
	|			И АС_Остатки.Ячейка = АС_ОстаткиОстаткиИОбороты.Ячейка
	|			И АС_Остатки.Номенклатура = АС_ОстаткиОстаткиИОбороты.Номенклатура
	|
	|СГРУППИРОВАТЬ ПО
	|	АС_Остатки.Склад,
	|	АС_Остатки.Этаж,
	|	АС_Остатки.Проход,
	|	АС_Остатки.Стеллаж,
	|	АС_Остатки.Полка,
	|	АС_Остатки.Ячейка,
	|	АС_Остатки.Номенклатура
	|
	|УПОРЯДОЧИТЬ ПО
	|	Склад,
	|	Этаж,
	|	Проход,
	|	Стеллаж,
	|	Полка,
	|	Ячейка,
	|	Номенклатура,
	|	ОбъемЯчейки,
	|	НоменклатураОбъем,
	|	Количество
	|ИТОГИ
	|	СУММА(ОбъемЯчейки),
	|	СУММА(НоменклатураОбъем),
	|	СУММА(Количество)
	|ПО
	|	Склад,
	|	Этаж,
	|	Проход,
	|	Стеллаж,
	|	Полка,
	|	Ячейка,
	|	Номенклатура"; 


Но группировка NULL'а с номенклатурой дает пустоту, что отражается и на итоговых колонках....
Помогите...

P.S.: Уже после решения вырезал весь мусор - представления и настройки построителя.
« Последняя редакция: 25. Февраля 2011 :: 09:50 - Dmitry The Wing »  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Объединение в запросе
Ответ #1 - 25. Февраля 2011 :: 09:04
Печать  
Все правильно, что тебя не устраивает?
как иначе ты можешь показать пустые ячейки?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Проблема решена
Ответ #2 - 25. Февраля 2011 :: 09:48
Печать  
Проблема решена. Объединение тут не подходит, а вот соединение очень даже к месту. Если интересно
Код
Выбрать все
Текст =
	"ВЫБРАТЬ
	|	ЗапросСклад.Склад КАК Склад,
	|	ЗапросСклад.Этаж КАК Этаж,
	|	ЗапросСклад.Проход КАК Проход,
	|	ЗапросСклад.Стеллаж КАК Стеллаж,
	|	ЗапросСклад.Полка КАК Полка,
	|	ЗапросСклад.Ячейка КАК Ячейка,
	|	ЗапросСклад.ОбъемЯчейки КАК ОбъемЯчейки,
	|	ЗапросОстатков.Номенклатура КАК Номенклатура,
	|	ЗапросОстатков.Номенклатура.Длина * ЗапросОстатков.Номенклатура.Ширина * ЗапросОстатков.Номенклатура.Высота КАК ОбъемЕдиницыНоменклатуры,
	|	СУММА(ЗапросОстатков.Номенклатура.Длина * ЗапросОстатков.Номенклатура.Ширина * ЗапросОстатков.Номенклатура.Высота * ЗапросОстатков.Остаток) КАК ОбъемНоменклатуры,
	|	СУММА(ЗапросОстатков.Остаток) КАК Остаток
	|ИЗ
	|	(ВЫБРАТЬ
	|		АС_Склады.Ссылка КАК Склад,
	|		АС_ЭтажиСкладов.Ссылка КАК Этаж,
	|		АС_ПроходыСкладов.Ссылка КАК Проход,
	|		АС_Стеллажи.Ссылка КАК Стеллаж,
	|		АС_ПолкиСтеллажей.Ссылка КАК Полка,
	|		АС_ЯчейкиПолок.Ссылка КАК Ячейка,
	|		АС_ЯчейкиПолок.Длина * АС_ЯчейкиПолок.Ширина * АС_ЯчейкиПолок.Высота КАК ОбъемЯчейки
	|	ИЗ
	|		Справочник.АС_ЯчейкиПолок КАК АС_ЯчейкиПолок
	|			ЛЕВОЕ СОЕДИНЕНИЕ Справочник.АС_ПолкиСтеллажей КАК АС_ПолкиСтеллажей
	|				ЛЕВОЕ СОЕДИНЕНИЕ Справочник.АС_Стеллажи КАК АС_Стеллажи
	|					ЛЕВОЕ СОЕДИНЕНИЕ Справочник.АС_ПроходыСкладов КАК АС_ПроходыСкладов
	|						ЛЕВОЕ СОЕДИНЕНИЕ Справочник.АС_ЭтажиСкладов КАК АС_ЭтажиСкладов
	|							ЛЕВОЕ СОЕДИНЕНИЕ Справочник.АС_Склады КАК АС_Склады
	|							ПО АС_ЭтажиСкладов.Владелец = АС_Склады.Ссылка
	|						ПО АС_ПроходыСкладов.Владелец = АС_ЭтажиСкладов.Ссылка
	|					ПО АС_Стеллажи.Владелец = АС_ПроходыСкладов.Ссылка
	|				ПО АС_ПолкиСтеллажей.Владелец = АС_Стеллажи.Ссылка
	|			ПО АС_ЯчейкиПолок.Владелец = АС_ПолкиСтеллажей.Ссылка
	|
	|	СГРУППИРОВАТЬ ПО
	|		АС_Склады.Ссылка,
	|		АС_ЭтажиСкладов.Ссылка,
	|		АС_ПроходыСкладов.Ссылка,
	|		АС_Стеллажи.Ссылка,
	|		АС_ПолкиСтеллажей.Ссылка,
	|		АС_ЯчейкиПолок.Ссылка,
	|		АС_ЯчейкиПолок.Длина * АС_ЯчейкиПолок.Ширина * АС_ЯчейкиПолок.Высота) КАК ЗапросСклад
	|		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	|			АС_ОстаткиОстаткиИОбороты.Ячейка КАК Ячейка,
	|			АС_ОстаткиОстаткиИОбороты.Номенклатура КАК Номенклатура,
	|			СУММА(АС_ОстаткиОстаткиИОбороты.КоличествоКонечныйОстаток) КАК Остаток
	|		ИЗ
	|			РегистрНакопления.АС_Остатки.ОстаткиИОбороты КАК АС_ОстаткиОстаткиИОбороты
	|
	|		СГРУППИРОВАТЬ ПО
	|			АС_ОстаткиОстаткиИОбороты.Ячейка,
	|			АС_ОстаткиОстаткиИОбороты.Номенклатура) КАК ЗапросОстатков
	|		ПО ЗапросСклад.Ячейка = ЗапросОстатков.Ячейка
	|
	|СГРУППИРОВАТЬ ПО
	|	ЗапросОстатков.Номенклатура,
	|	ЗапросОстатков.Номенклатура.Длина * ЗапросОстатков.Номенклатура.Ширина * ЗапросОстатков.Номенклатура.Высота,
	|	ЗапросСклад.Склад,
	|	ЗапросСклад.Этаж,
	|	ЗапросСклад.Проход,
	|	ЗапросСклад.Стеллаж,
	|	ЗапросСклад.Полка,
	|	ЗапросСклад.Ячейка,
	|	ЗапросСклад.ОбъемЯчейки
	|
	|УПОРЯДОЧИТЬ ПО
	|	Склад,
	|	Этаж,
	|	Проход,
	|	Стеллаж,
	|	Полка,
	|	Ячейка,
	|	ОбъемЯчейки,
	|	Номенклатура,
	|	ОбъемЕдиницыНоменклатуры,
	|	ОбъемНоменклатуры,
	|	Остаток
	|ИТОГИ
	|	СУММА(Остаток)
	|ПО
	|	Склад,
	|	Этаж,
	|	Проход,
	|	Стеллаж,
	|	Полка"; 

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать