Проблема с запросом

1. psa247 21 01.12.12 19:42 Сейчас в теме
Коллеги, помогите понять, где проблема
Есть запрос:

ВЫБРАТЬ
ХарактеристикаСырьяМесторожденияХарактеристики.ТипХарки,
ХарактеристикаСырьяМесторожденияХарактеристики.Харка,
ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMin,
ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMax,
ХарактеристикаСырьяМесторожденияХарактеристики.Среднее,
ХарактеристикаСырьяМесторожденияХарактеристики.Ссылка,
ХарактеристикаСырьяМесторожденияХарактеристики.Ссылка.ПринадлежностьМесторождению
ИЗ
Документ.ХарактеристикаСырьяМесторождения.Характеристики КАК ХарактеристикаСырьяМесторожденияХарактеристики
ГДЕ
ХарактеристикаСырьяМесторожденияХарактеристики.Ссылка.Сырье = &Сырье
И (ХарактеристикаСырьяМесторожденияХарактеристики.ТипХарки = &ТипХарки1
И ХарактеристикаСырьяМесторожденияХарактеристики.Харка = &Харка1
И ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMin > &ЗначениеMin1)
И (ХарактеристикаСырьяМесторожденияХарактеристики.ТипХарки = &ТипХарки2
И ХарактеристикаСырьяМесторожденияХарактеристики.Харка = &Харка2
И ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMin < &ЗначениеMin2)

Делаю выборку из документов, где в табличной части есть совпадающие условия
Если убрать второе "И"

( И (ХарактеристикаСырьяМесторожденияХарактеристики.ТипХарки = &ТипХарки2
И ХарактеристикаСырьяМесторожденияХарактеристики.Харка = &Харка2
И ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMin < &ЗначениеMin2))

Запрос корректно работает, а если не убирать - пишет, что ничего не найдено.
Все значения проверил, такой документ существует, но запрос не отрабатывает
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
13. m-serg74 46 01.12.12 20:59 Сейчас в теме
(11)psa247,
даже наверное точнее вот как то так, на примере другого типа документа, свои поля просто подставишь
ВЫБРАТЬ
	Вложение.Ссылка
ИЗ
	(ВЫБРАТЬ
		ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка,
		1 КАК Поле1,
		0 КАК Поле2
	ИЗ
		Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
	ГДЕ
		ПоступлениеТоваровУслугТовары.Ссылка.Склад = &Склад
		И ПоступлениеТоваровУслугТовары.Номенклатура = &Номенклатура1
		И ПоступлениеТоваровУслугТовары.Характеристика = &Характеристика1
		И ПоступлениеТоваровУслугТовары.Цена > &Цена1
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		ПоступлениеТоваровУслугТовары.Ссылка,
		0,
		1
	ИЗ
		Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
	ГДЕ
		ПоступлениеТоваровУслугТовары.Ссылка.Склад = &Склад
		И ПоступлениеТоваровУслугТовары.Номенклатура = &Номенклатура2
		И ПоступлениеТоваровУслугТовары.Характеристика = &Характеристика2
		И ПоступлениеТоваровУслугТовары.Цена < &Цена2) КАК Вложение

СГРУППИРОВАТЬ ПО
	Вложение.Ссылка

ИМЕЮЩИЕ
	СУММА(Вложение.Поле1) > 0 И
	СУММА(Вложение.Поле2) > 0
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
14. AlexO 136 02.12.12 14:43 Сейчас в теме
(1) psa247,
а что такое Харка?
15. psa247 21 02.12.12 14:48 Сейчас в теме
(14) AlexO, Составной тип из справочников
16. AlexO 136 02.12.12 14:56 Сейчас в теме
(15) psa247,
оставной тип из справочников

новый тип в 1С? :)
2. psa247 21 01.12.12 19:43 Сейчас в теме
3. m-serg74 46 01.12.12 19:48 Сейчас в теме
(2) psa247, одна Харка не может одновременно и =&Харка1 и =&Харка2, ты уж определись: чему она должна равняться, с ТипХарка кстати тоже
4. psa247 21 01.12.12 19:53 Сейчас в теме
Скорее всего, Вы правы. Но как выбрать документы, у которых в табличной части есть Харка1 и ее значение Мин1
и Харка2, где ее значение, к примеру, больше 10 ??
5. psa247 21 01.12.12 19:54 Сейчас в теме
6. m-serg74 46 01.12.12 19:58 Сейчас в теме
[CODE
ГДЕ
ХарактеристикаСырьяМесторожденияХарактеристики.Ссылка.Сырье = &Сырье
И
(
(ХарактеристикаСырьяМесторожденияХарактеристики.ТипХарки = &ТипХарки1
И ХарактеристикаСырьяМесторожденияХарактеристики.Харка = &Харка1
И ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMin > &ЗначениеMin1)
ИЛИ
(ХарактеристикаСырьяМесторожденияХарактеристики.ТипХарки = &ТипХарки2
И ХарактеристикаСырьяМесторожденияХарактеристики.Харка = &Харка2
И ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMin < &ЗначениеMin2)
)
[/1C-CODE]
7. psa247 21 01.12.12 20:03 Сейчас в теме
Так пойдет только в одном случае, если клиента интересует ИЛИ это ИЛИ то.
Попробую вложенных запросов понаделать и объединить )))
8. m-serg74 46 01.12.12 20:12 Сейчас в теме
(7) psa247, в одной строчке ТЧ документа одно поле Харка?
9. psa247 21 01.12.12 20:18 Сейчас в теме
10. m-serg74 46 01.12.12 20:23 Сейчас в теме
(9) psa247, тогда я так понимаю надо выбрать документы где есть одновременно две строки одна из которых подходит под условие:
(ХарактеристикаСырьяМесторожденияХарактеристики.ТипХарки = &ТипХарки1
И ХарактеристикаСырьяМесторожденияХарактеристики.Харка = &Харка1
И ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMin > &ЗначениеMin1)

и вторая под условие:
(ХарактеристикаСырьяМесторожденияХарактеристики.ТипХарки = &ТипХарки2
И ХарактеристикаСырьяМесторожденияХарактеристики.Харка = &Харка2
И ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMin < &ЗначениеMin2)
)


но тогда не получится:
ВЫБРАТЬ
ХарактеристикаСырьяМесторожденияХарактеристики.ТипХарки,
ХарактеристикаСырьяМесторожденияХарактеристики.Харка,
ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMin,
ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMax,

а лишь только получить ссылку на сам документ...
11. psa247 21 01.12.12 20:30 Сейчас в теме
Да, достаточно ссылку на документ получить
Убрал лишнее, запрос получается такой:

ВЫБРАТЬ
ХарактеристикаСырьяМесторожденияХарактеристики.Ссылка
ИЗ
Документ.ХарактеристикаСырьяМесторождения.Характеристики КАК ХарактеристикаСырьяМесторожденияХарактеристики
ГДЕ
ХарактеристикаСырьяМесторожденияХарактеристики.Ссылка.Сырье = &Сырье
И (ХарактеристикаСырьяМесторожденияХарактеристики.ТипХарки = &ТипХарки1
И ХарактеристикаСырьяМесторожденияХарактеристики.Харка = &Харка1
И ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMin > &ЗначениеMin1)
И (ХарактеристикаСырьяМесторожденияХарактеристики.ТипХарки = &ТипХарки2
И ХарактеристикаСырьяМесторожденияХарактеристики.Харка = &Харка2
И ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMin < &ЗначениеMin2)

Но все равно пустой результат
12. m-serg74 46 01.12.12 20:46 Сейчас в теме
(11) psa247,
ВЫБРАТЬ
	Вложение.Ссылка
ИЗ
	(ВЫБРАТЬ
			ХарактеристикаСырьяМесторожденияХарактеристики.Ссылка КАК Ссылка,
			СУММА(1) КАК Признак
		ИЗ
			Документ.ХарактеристикаСырьяМесторождения.Характеристики КАК ХарактеристикаСырьяМесторожденияХарактеристики
		ГДЕ
			ХарактеристикаСырьяМесторожденияХарактеристики.Ссылка.Сырье = &Сырье
			И 
			(
			(ХарактеристикаСырьяМесторожденияХарактеристики.ТипХарки = &ТипХарки1
			И ХарактеристикаСырьяМесторожденияХарактеристики.Харка = &Харка1
			И ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMin > &ЗначениеMin1)
			ИЛИ
			(ХарактеристикаСырьяМесторожденияХарактеристики.ТипХарки = &ТипХарки2
			И ХарактеристикаСырьяМесторожденияХарактеристики.Харка = &Харка2
			И ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMin < &ЗначениеMin2)
			)     
		СГРУППИРОВАТЬ ПО
			ХарактеристикаСырьяМесторожденияХарактеристики.Ссылка) КАК Вложение
ГДЕ
	Вложение.Признак >= 2
Показать
13. m-serg74 46 01.12.12 20:59 Сейчас в теме
(11)psa247,
даже наверное точнее вот как то так, на примере другого типа документа, свои поля просто подставишь
ВЫБРАТЬ
	Вложение.Ссылка
ИЗ
	(ВЫБРАТЬ
		ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка,
		1 КАК Поле1,
		0 КАК Поле2
	ИЗ
		Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
	ГДЕ
		ПоступлениеТоваровУслугТовары.Ссылка.Склад = &Склад
		И ПоступлениеТоваровУслугТовары.Номенклатура = &Номенклатура1
		И ПоступлениеТоваровУслугТовары.Характеристика = &Характеристика1
		И ПоступлениеТоваровУслугТовары.Цена > &Цена1
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		ПоступлениеТоваровУслугТовары.Ссылка,
		0,
		1
	ИЗ
		Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
	ГДЕ
		ПоступлениеТоваровУслугТовары.Ссылка.Склад = &Склад
		И ПоступлениеТоваровУслугТовары.Номенклатура = &Номенклатура2
		И ПоступлениеТоваровУслугТовары.Характеристика = &Характеристика2
		И ПоступлениеТоваровУслугТовары.Цена < &Цена2) КАК Вложение

СГРУППИРОВАТЬ ПО
	Вложение.Ссылка

ИМЕЮЩИЕ
	СУММА(Вложение.Поле1) > 0 И
	СУММА(Вложение.Поле2) > 0
Показать
18. psa247 21 02.12.12 18:23 Сейчас в теме
(13) m-serg74, Спасибо. Ответ на мысль навел - сделаю Условия в Группе
19. m-serg74 46 02.12.12 18:28 Сейчас в теме
(18) psa247, не совсем понял... про "Условия в Группе", можешь показать?
17. psa247 21 02.12.12 15:06 Сейчас в теме
20. psa247 21 02.12.12 18:33 Сейчас в теме
ВЫБРАТЬ
ХарактеристикаСырьяМесторожденияХарактеристики.Ссылка,
ХарактеристикаСырьяМесторожденияХарактеристики.Харка,
ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMin
ИЗ
Документ.ХарактеристикаСырьяМесторождения.Характеристики КАК ХарактеристикаСырьяМесторожденияХарактеристики
ГДЕ
ХарактеристикаСырьяМесторожденияХарактеристики.Ссылка.Сырье = &Сырье
И ВЫБОР
КОГДА ХарактеристикаСырьяМесторожденияХарактеристики.Харка = &Харка1
ТОГДА ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMin > &ЗначениеMin1
И ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMin <> 0
КОГДА ХарактеристикаСырьяМесторожденияХарактеристики.Харка = &Харка2
ТОГДА ХарактеристикаСырьяМесторожденияХарактеристики.ЗначениеMin < &ЗначениеMin2
ИНАЧЕ ЛОЖЬ
КОНЕЦ
21. psa247 21 02.12.12 18:34 Сейчас в теме
Ну и, где надо - вставляю ИЛИ с таким же набором условий
22. m-serg74 46 02.12.12 18:41 Сейчас в теме
(21) psa247, не факт что получишь документы в которых обязательно присутствуют хотя бы две строки попадающие под два нужных условия, все равно как в (13) придется группировать с контролем двух видов строк, так сказать, я вчера сначала сделал (12), а потом понял что, если попадутся две строки по Условию1, то такой документ все равно выведется, а тебе он не нужен, поэтому и переделал на (13)
23. psa247 21 02.12.12 18:49 Сейчас в теме
(22) m-serg74, спасибо. проверю
24. m-serg74 46 02.12.12 18:50 Сейчас в теме
25. psa247 21 03.12.12 12:26 Сейчас в теме
(22) m-serg74, точно, вернусь к варианту ОБЪЕДИНИТЬ ВСЕ, еще раз спасибо ))
Оставьте свое сообщение

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