Не работает отбор по булево в отчете СКД, УНФ

1. FesenkoA 59 03.04.18 10:09 Сейчас в теме
Добрый день
есть запрос, который вытягивает дополнительные реквизиты (тип доп. реквизита - булево) из документа заказ, заменяя отсутствующие реквизиты значением ложь (или значение да/нет или нет). Отчет строится красиво, даже великолепно строится условное оформление "где значение = ложь". все хорошо, но при отборе "где значение = ложь" отчет не выбирает вообще ничего. При этом когда стоит отбор "где значение = истина" - поля чудным образом находятся. Не работает даже отбор НЕ (поле1=истина или поле2=истина или поле3=истина). Подскажите, почему так? Как сделать отбор по значение=ложь? Это ошибка в генетическом коде или в типовой форме отчета УНФ?

часть запроса и скрины в приложении.
///////////////////
ВЫБРАТЬ
	ЕСТЬNULL(ВТДанные.ФормаВзаиморасчетов, ЛОЖЬ) КАК ФормаВзаиморасчетов,
	ЕСТЬNULL(ВТДанные.ОригиналДоговора, ЛОЖЬ) КАК ОригиналДоговора,
	ЕСТЬNULL(ВТДанные.ОригиналРасходной, ЛОЖЬ) КАК ОригиналРасходной,
	ЕСТЬNULL(ВТДанные.ОригиналДоверенности, ЛОЖЬ) КАК ОригиналДоверенности,
	ВТДанные.ЗаказСсылка,
	ЗаказПокупателя.Контрагент,
	ЗаказПокупателя.СостояниеЗаказа,
	ЗаказПокупателя.СуммаДокумента
ИЗ
	ВТДанные КАК ВТДанные
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя
		ПО ВТДанные.ЗаказСсылка = ЗаказПокупателя.Ссылка
Показать
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
12. FesenkoA 59 03.04.18 14:11 Сейчас в теме +0.38 $m
Решение: не использовать в СКД временные таблицы, только вложенные. При отказе все заработало. Похожу каким то образом отбор накладывается на 1 таблицу из виртуальных, а так как а так как НУЛЛ и булево не сочитаются - ничего не работало.

Вопрос закрыт
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user633533_encantado 12 03.04.18 10:14 Сейчас в теме
Попробуй сделать отбор не глобальный , а на конкретную группировку.
3. FesenkoA 59 03.04.18 10:16 Сейчас в теме
(2)нет группировок, отчет линейный, то есть в виде:
Отчет
|_ детельные записи
4. Akuji 22 03.04.18 10:25 Сейчас в теме
ЕСТЬNULL(ВТДанные.ФормаВзаиморасчетов

тут возможно не нул, а неопределено... или пусто
5. FesenkoA 59 03.04.18 10:28 Сейчас в теме
(4)
1) В виртуальной таблице есть место где
МАКСИМУМ(ВЫБОР
КОГДА ЗаказПокупателяДополнительныеРеквизиты.Свойство = &ОригиналДоговора
ТОГДА ЗаказПокупателяДополнительныеРеквизиты.Значение
ИНАЧЕ NULL
КОНЕЦ) КАК ОригиналДоговора,


2)могу показать консоль запросов, выдает "да/нет"
3) условное оформление на ложь, как видно на фото, отрабатывает на ура
6. user633533_encantado 12 03.04.18 10:28 Сейчас в теме
У тебя левым соединением к временной таблице вт_данные цепляется заказ покупателя.

Поскольку у тебя это доп. реквизиты, то в случае, когда такой реквизит не заполнен, то его просто нет. Соответственно такой запрос будет выводить только данные со значением истина.

Поменяй соединение : к заказам левым соединением цепляй ВТ_Данные
Shersman; +1 Ответить
7. FesenkoA 59 03.04.18 10:37 Сейчас в теме
(6) не, тот же эфект. Из заказа я вытягиваю только его реквизиты, и соединяю с уже существующей таблицей вида
"ДокументСсылка, булево, булево, булево, справочникСсылка"

убрал кстати левое соединение, вытягиваю только ВТ, эффект все тот же)
8. user633533_encantado 12 03.04.18 10:39 Сейчас в теме
Покажи как ты формируешь ВТ_, еще раз повторю , доп реквизита нет если он не в положении истина.
9. FesenkoA 59 03.04.18 10:41 Сейчас в теме
(8)
Я вытягиваю реквизиты, если его нет - ложб. группирую, если есть истина - выпадает истина, иначе нулл, потом заменяю нулл на ложь

ВЫБРАТЬ
	МАКСИМУМ(ВЫБОР
			КОГДА ЗаказПокупателяДополнительныеРеквизиты.Свойство = &ФормаВзаиморасчетов
				ТОГДА ЗаказПокупателяДополнительныеРеквизиты.Значение
			ИНАЧЕ NULL
		КОНЕЦ) КАК ФормаВзаиморасчетов,
	МАКСИМУМ(ВЫБОР
			КОГДА ЗаказПокупателяДополнительныеРеквизиты.Свойство = &ОригиналДоговора
				ТОГДА ЗаказПокупателяДополнительныеРеквизиты.Значение
			ИНАЧЕ NULL
		КОНЕЦ) КАК ОригиналДоговора,
	МАКСИМУМ(ВЫБОР
			КОГДА ЗаказПокупателяДополнительныеРеквизиты.Свойство = &ОригиналРасходной
				ТОГДА ЗаказПокупателяДополнительныеРеквизиты.Значение
			ИНАЧЕ NULL
		КОНЕЦ) КАК ОригиналРасходной,
	МАКСИМУМ(ВЫБОР
			КОГДА ЗаказПокупателяДополнительныеРеквизиты.Свойство = &ОригиналДоверенности
				ТОГДА ЗаказПокупателяДополнительныеРеквизиты.Значение
			ИНАЧЕ NULL
		КОНЕЦ) КАК ОригиналДоверенности,
	ВложенныйЗапрос.ЗаказСсылка
ПОМЕСТИТЬ ВТДанные
ИЗ
	(ВЫБРАТЬ
		ЗаказыПокупателей.ЗаказПокупателя КАК ЗаказСсылка
	ИЗ
		РегистрНакопления.ЗаказыПокупателей КАК ЗаказыПокупателей
	ГДЕ
		ТИПЗНАЧЕНИЯ(ЗаказыПокупателей.Регистратор) = ТИП(Документ.ЗаказПокупателя)
		И ЗаказыПокупателей.Период МЕЖДУ &НачалоПериода И &КонецПериода
	
	СГРУППИРОВАТЬ ПО
		ЗаказыПокупателей.ЗаказПокупателя) КАК ВложенныйЗапрос
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.ДополнительныеРеквизиты КАК ЗаказПокупателяДополнительныеРеквизиты
		ПО ВложенныйЗапрос.ЗаказСсылка = ЗаказПокупателяДополнительныеРеквизиты.Ссылка.Ссылка

СГРУППИРОВАТЬ ПО
	ВложенныйЗапрос.ЗаказСсылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЕСТЬNULL(ВТДанные.ФормаВзаиморасчетов, ЛОЖЬ) КАК ФормаВзаиморасчетов,
	ЕСТЬNULL(ВТДанные.ОригиналДоговора, ЛОЖЬ) КАК ОригиналДоговора,
	ЕСТЬNULL(ВТДанные.ОригиналРасходной, ЛОЖЬ) КАК ОригиналРасходной,
	ЕСТЬNULL(ВТДанные.ОригиналДоверенности, ЛОЖЬ) КАК ОригиналДоверенности,
	ВТДанные.ЗаказСсылка,
	ЗаказПокупателя.Контрагент,
	ЗаказПокупателя.СостояниеЗаказа,
	ЗаказПокупателя.СуммаДокумента
ИЗ
	ВТДанные КАК ВТДанные
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя
		ПО ВТДанные.ЗаказСсылка = ЗаказПокупателя.Ссылка
Показать
10. user633533_encantado 12 03.04.18 11:14 Сейчас в теме
"ЗаказПокупателяДополнительныеРеквизиты.Свойство = &ОригиналДоверенности" смущает. ЗаказПокупателяДополнительныеРеквизиты.Свойство может быть Null.
11. FesenkoA 59 03.04.18 12:49 Сейчас в теме
(10)Правильно, если Null- то сравнение не пройдет, и вернется "Иначе Null". ИМХО, если бы запрос был бы неправильный - не отрабатывалось бы условное оформление, и Консоль запросов не выдавала бы ложь. Или вы считаете что отбор накладывается не на результат запроса?
12. FesenkoA 59 03.04.18 14:11 Сейчас в теме +0.38 $m
Решение: не использовать в СКД временные таблицы, только вложенные. При отказе все заработало. Похожу каким то образом отбор накладывается на 1 таблицу из виртуальных, а так как а так как НУЛЛ и булево не сочитаются - ничего не работало.

Вопрос закрыт
13. Chai Nic 162 13.02.20 12:04 Сейчас в теме
(12) Это не решение проблемы, иногда без временных таблиц не обойтись - и как быть?
mpvrus21; +1 Ответить
Оставьте свое сообщение

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