Вывод полей с нулевыми значениями ресурсов (СКД)

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. RocKeR_13 1342 29.05.13 09:56 Сейчас в теме
Ситуация следующая: есть отчет на СКД, состоящий из 2х наборов данных. Первый набор выбирает все зарегистрированные работы по дому, второй - соответствующие цены:
Работы:
ВЫБРАТЬ
	ПлановыеРаботыПоДомам.Ссылка КАК Работа,
	ПлановыеРаботыПоДомам.КонструктивныйЭлемент
ИЗ
	РегистрСведений.ПроверенныеПеречниРабот.СрезПоследних(
			&Дата,
			Дом = &Дом
				И ВидПеречня = &ВидПеречня) КАК ПроверенныеПеречниРаботСрезПоследних
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПлановыеРаботыПоДомам КАК ПлановыеРаботыПоДомам
		ПО ПроверенныеПеречниРаботСрезПоследних.КонструктивныйЭлемент = ПлановыеРаботыПоДомам.КонструктивныйЭлемент
Показать


Тарифы:
ВЫБРАТЬ
	СостояниеДомаСрезПоследних.Дом,
	ХарактеристикиДомовТипДома.Значение КАК ТипДома,
	ТипыТарифовПоДомамСрезПоследних.ТипТарифа,
	ВидыНормативовПоДомамСрезПоследних.ВидНорматива
ПОМЕСТИТЬ Дома
ИЗ
	РегистрСведений.СостояниеДома.СрезПоследних(&Дата, Дом = &Дом) КАК СостояниеДомаСрезПоследних
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ХарактеристикиДомов.СрезПоследних(
				&Дата,
				Дом = &Дом
					И ХарактеристикаДома = &ХарактеристикаТип) КАК ХарактеристикиДомовТипДома
		ПО СостояниеДомаСрезПоследних.Дом = ХарактеристикиДомовТипДома.Дом
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ХарактеристикиДомов.СрезПоследних(
				&Дата,
				ХарактеристикаДома = &Жилой
					И Дом = &Дом) КАК ХарактеристикиДомовЖилой
		ПО СостояниеДомаСрезПоследних.Дом = ХарактеристикиДомовЖилой.Дом
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТипыТарифовПоДомам.СрезПоследних(
				&Дата,
				Дом = &Дом
					И ВидПеречня = &ВидПеречня) КАК ТипыТарифовПоДомамСрезПоследних
		ПО СостояниеДомаСрезПоследних.Дом = ТипыТарифовПоДомамСрезПоследних.Дом
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВидыНормативовПоДомам.СрезПоследних(&Дата, Дом = &Дом) КАК ВидыНормативовПоДомамСрезПоследних
		ПО СостояниеДомаСрезПоследних.Дом = ВидыНормативовПоДомамСрезПоследних.Дом
ГДЕ
	СостояниеДомаСрезПоследних.Состояние = ЗНАЧЕНИЕ(Перечисление.ВидыСостоянияДома.ПринятКУчету)
	И ХарактеристикиДомовЖилой.Значение > 0
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	НормативыПоПлановымРаботамСрезПоследних.КонструктивныйЭлемент,
	НормативыПоПлановымРаботамСрезПоследних.Цена,
	НормативыПоПлановымРаботамСрезПоследних.ЦенаСНДС,
	НормативыПоПлановымРаботамСрезПоследних.Объект,
	НормативыПоПлановымРаботамСрезПоследних.ТипТарифа
ПОМЕСТИТЬ Тарифы
ИЗ
	РегистрСведений.НормативыПоПлановымРаботам.СрезПоследних(&Дата, ) КАК НормативыПоПлановымРаботамСрезПоследних
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Дома.Дом,
	СУММА(Тарифы.Цена) КАК Цена,
	СУММА(Тарифы.ЦенаСНДС) КАК ЦенаСНДС,
	Тарифы.КонструктивныйЭлемент
ИЗ
	Дома КАК Дома
		ЛЕВОЕ СОЕДИНЕНИЕ Тарифы КАК Тарифы
		ПО Дома.ТипТарифа = Тарифы.ТипТарифа
			И Дома.ТипДома = Тарифы.Объект
ГДЕ
	Дома.ВидНорматива = &ПоТипуДома

СГРУППИРОВАТЬ ПО
	Дома.Дом,
	Тарифы.КонструктивныйЭлемент

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	Дома.Дом,
	СУММА(Тарифы.Цена),
	СУММА(Тарифы.ЦенаСНДС),
	Тарифы.КонструктивныйЭлемент
ИЗ
	Дома КАК Дома
		ЛЕВОЕ СОЕДИНЕНИЕ Тарифы КАК Тарифы
		ПО Дома.Дом = Тарифы.Объект
ГДЕ
	Дома.ВидНорматива = &ПоДому

СГРУППИРОВАТЬ ПО
	Дома.Дом,
	Тарифы.КонструктивныйЭлемент
Показать


Связь наборов происходит по полю КонструктивныйЭлемент. Нигде условий, что цена обязательно должна быть больше 0 не вводил. Однако, в отчет не попадают поля "КонструктивныйЭлемент", для которых Цена = 0. Можно ли в данной ситуации все-таки вывести подобные данные (с нулевыми ценами)?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
2. ZergKRSK 130 29.05.13 10:05 Сейчас в теме
Всё логично. КонструктивныйЭлемент у к-рого цена 0 в регистре НормативыПоПлановымРаботам не находится. Делайте всё в одном запросе без разбиения по наборам. Получайте цены КонструктивныхЭлементов через левое соединение и всё.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. AnryMc 849 29.05.13 10:19 Сейчас в теме
(1) RocKeR_13, Неуверен, но наверно у Вас цена не 0, а NULL - т.е. её вообще нет
в таких случаях должно помочь

ЕСТЬNULL
6. RocKeR_13 1342 29.05.13 10:22 Сейчас в теме
(4) AnryMc, пробовал - безрезультатно)
2. ZergKRSK 130 29.05.13 10:05 Сейчас в теме
Всё логично. КонструктивныйЭлемент у к-рого цена 0 в регистре НормативыПоПлановымРаботам не находится. Делайте всё в одном запросе без разбиения по наборам. Получайте цены КонструктивныхЭлементов через левое соединение и всё.
5. RocKeR_13 1342 29.05.13 10:21 Сейчас в теме
(2) ZergKRSK, к тому же почему "КонструктивныйЭлемент у к-рого цена 0 в регистре НормативыПоПлановымРаботам не находится"? А вот консоль запросов утверждает обратное:
Прикрепленные файлы:
3. RocKeR_13 1342 29.05.13 10:16 Сейчас в теме
ВЫБРАТЬ
	СостояниеДомаСрезПоследних.Дом,
	ХарактеристикиДомовТипДома.Значение КАК ТипДома,
	ТипыТарифовПоДомамСрезПоследних.ТипТарифа,
	ВидыНормативовПоДомамСрезПоследних.ВидНорматива
ПОМЕСТИТЬ Дома
ИЗ
	РегистрСведений.СостояниеДома.СрезПоследних(&Дата, Дом = &Дом) КАК СостояниеДомаСрезПоследних
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ХарактеристикиДомов.СрезПоследних(
				&Дата,
				Дом = &Дом
					И ХарактеристикаДома = &ХарактеристикаТип) КАК ХарактеристикиДомовТипДома
		ПО СостояниеДомаСрезПоследних.Дом = ХарактеристикиДомовТипДома.Дом
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ХарактеристикиДомов.СрезПоследних(
				&Дата,
				ХарактеристикаДома = &Жилой
					И Дом = &Дом) КАК ХарактеристикиДомовЖилой
		ПО СостояниеДомаСрезПоследних.Дом = ХарактеристикиДомовЖилой.Дом
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТипыТарифовПоДомам.СрезПоследних(
				&Дата,
				Дом = &Дом
					И ВидПеречня = &ВидПеречня) КАК ТипыТарифовПоДомамСрезПоследних
		ПО СостояниеДомаСрезПоследних.Дом = ТипыТарифовПоДомамСрезПоследних.Дом
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВидыНормативовПоДомам.СрезПоследних(&Дата, Дом = &Дом) КАК ВидыНормативовПоДомамСрезПоследних
		ПО СостояниеДомаСрезПоследних.Дом = ВидыНормативовПоДомамСрезПоследних.Дом
ГДЕ
	СостояниеДомаСрезПоследних.Состояние = ЗНАЧЕНИЕ(Перечисление.ВидыСостоянияДома.ПринятКУчету)
	И ХарактеристикиДомовЖилой.Значение > 0
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	НормативыПоПлановымРаботамСрезПоследних.КонструктивныйЭлемент,
	НормативыПоПлановымРаботамСрезПоследних.Цена,
	НормативыПоПлановымРаботамСрезПоследних.ЦенаСНДС,
	НормативыПоПлановымРаботамСрезПоследних.Объект,
	НормативыПоПлановымРаботамСрезПоследних.ТипТарифа
ПОМЕСТИТЬ Тарифы
ИЗ
	РегистрСведений.НормативыПоПлановымРаботам.СрезПоследних(&Дата, ) КАК НормативыПоПлановымРаботамСрезПоследних
ГДЕ
	НормативыПоПлановымРаботамСрезПоследних.ЦенаСНДС > 0
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Дома.Дом,
	СУММА(Тарифы.Цена) КАК Цена,
	СУММА(Тарифы.ЦенаСНДС) КАК ЦенаСНДС,
	Тарифы.КонструктивныйЭлемент
ПОМЕСТИТЬ Суммы
ИЗ
	Дома КАК Дома
		ЛЕВОЕ СОЕДИНЕНИЕ Тарифы КАК Тарифы
		ПО Дома.ТипТарифа = Тарифы.ТипТарифа
			И Дома.ТипДома = Тарифы.Объект
ГДЕ
	Дома.ВидНорматива = &ПоТипуДома

СГРУППИРОВАТЬ ПО
	Дома.Дом,
	Тарифы.КонструктивныйЭлемент

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	Дома.Дом,
	СУММА(Тарифы.Цена),
	СУММА(Тарифы.ЦенаСНДС),
	Тарифы.КонструктивныйЭлемент
ИЗ
	Дома КАК Дома
		ЛЕВОЕ СОЕДИНЕНИЕ Тарифы КАК Тарифы
		ПО Дома.Дом = Тарифы.Объект
ГДЕ
	Дома.ВидНорматива = &ПоДому

СГРУППИРОВАТЬ ПО
	Дома.Дом,
	Тарифы.КонструктивныйЭлемент
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ПлановыеРаботыПоДомам.Ссылка КАК Работа,
	ПлановыеРаботыПоДомам.КонструктивныйЭлемент,
	Суммы.Цена КАК Цена,
	Суммы.ЦенаСНДС КАК ЦенаСНДС
ИЗ
	РегистрСведений.ПроверенныеПеречниРабот.СрезПоследних(
			&Дата,
			Дом = &Дом
				И ВидПеречня = &ВидПеречня) КАК ПроверенныеПеречниРаботСрезПоследних
		ЛЕВОЕ СОЕДИНЕНИЕ Суммы КАК Суммы
		ПО ПроверенныеПеречниРаботСрезПоследних.КонструктивныйЭлемент = Суммы.КонструктивныйЭлемент
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПлановыеРаботыПоДомам КАК ПлановыеРаботыПоДомам
		ПО ПроверенныеПеречниРаботСрезПоследних.КонструктивныйЭлемент = ПлановыеРаботыПоДомам.КонструктивныйЭлемент
Показать


Ничего не поменялось
7. RocKeR_13 1342 29.05.13 10:35 Сейчас в теме
Попробовал запрос (3) в консоль вбить - с нулевыми ценами результаты попадают:
Прикрепленные файлы:
8. Rovan 22 29.05.13 10:46 Сейчас в теме
В запросе сделай так
СУММА(Тарифы.Цена) КАК Цена1,

создай вычисляемое поле
Цена = ISNULL(Цена1,0)

занеси Цена в ресурсы отчета
9. RocKeR_13 1342 29.05.13 11:15 Сейчас в теме
10. Akuji 22 29.05.13 11:26 Сейчас в теме
как то было похожее... не припоминаю только как решилось
может параметры... если попробовать параметры задавать в конструкторе запроса на закладке СКД, что б они в фигурных скобках были, в частности Дату
11. RocKeR_13 1342 29.05.13 11:30 Сейчас в теме
(10) Akuji, довольно-таки странное решение, но чем черт не шутит, как говорится))) Попробую...
12. AnryMc 849 29.05.13 11:39 Сейчас в теме
13. forev8 29.05.13 11:41 Сейчас в теме
в измерениях случайно Игнорировать null не стоит?
14. RocKeR_13 1342 29.05.13 12:03 Сейчас в теме
(13) forev8, везде стоит "Без роли" и галка "Игнорировать NULL" не стоит. Кст, в (3) немного не тот текст запроса скопировал: естественно, условия "НормативыПоПлановымРаботамСрезПоследних.ЦенаСНДС > 0" там быть не должно.
15. RocKeR_13 1342 29.05.13 13:00 Сейчас в теме
Спасибо всем, кто помогал! Вот что значит не самому писать отчет: мало того, что в запросе стояло условие ЦенаСНДС>0, так еще и в группировке отбор был:
Прикрепленные файлы:
Оставьте свое сообщение

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