выбрка из запроса исключенных

1. zonder2000 09.09.21 11:52 Сейчас в теме
добрый день.Пытаюсь по урокам изучать запросы получил список контрагентов подлежащих к исключению из запроса.Как продолжить выборку из запроса, но за исключением тех контрагентов которых я получил данным запросом?как отобрать всех кроме исключенных и продолжить с ними оперировать?Суть такая.кто посещал магазин и сделал покупку того исключаем путем проверки даты оплаты.тогда останутся только те кто посещал магазин но не совершил покупку соответ.нет даты оплаты

| Контрагент.ссылка,
| Посещения.ДатаПолученияОплаты
|ИЗ
| Справочник.Контрагент КАК Контрагент
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Посещения КАК Посещения
| ПО Контрагент.Ссылка = Посещения .Владелец
| И (Посещения .ДатаПолученияОплаты <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Vlan 36 09.09.21 12:05 Сейчас в теме
У вас есть массив исключающихся контрагентов. При выборке используйте условие, чтобы контрагент был НЕ в этом списке.
3. Vlan 36 09.09.21 12:09 Сейчас в теме
(2) А вообще, поменяйте условие по дате на "равно", и дополнительные списки не понадобятся.
4. zonder2000 09.09.21 12:18 Сейчас в теме
(2) на равно нельзя потому что в справочнике может быть 3 записи.где 2 с пустой датой(потому что каждое посещение записывается) и одна с заполненной,это означает что человек все таки совершил покупку.и значит его нужно исключить из дальтнейших действий.вообще выбрать в итоге только тех кто ни разу не совершил покупки.то есть абсолютно все записи с пустой датой
8. Vlan 36 09.09.21 12:35 Сейчас в теме
(4) Ну, проверяйте максимальную дату для каждого. Если она равна пустой, то это нужный контрагент.
5. zonder2000 09.09.21 12:30 Сейчас в теме
вот отобрал всех ненужных.далее их нужно поместить во временную таблицу чтоб исключать?

| Контрагент.ссылка,
| Посещения.ДатаПолученияОплаты
|ИЗ
| Справочник.Контрагент КАК Контрагент
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Посещения КАК Посещения
| ПО Контрагент.Ссылка = Посещения .Владелец
| И (Посещения .ДатаПолученияОплаты <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
| ГДЕ Посещения .ДатаПолученияОплаты <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
6. ZergKRSK 130 09.09.21 12:31 Сейчас в теме
(5) зачем сюда тянуть спр. Контрагенты? Вполне можно обойтись выборкой по спр. Посещения.
7. zonder2000 09.09.21 12:35 Сейчас в теме
(6)а как же исключить строки посещений до покупки?я таким образом просто пытаюсь создать таблицу контрагентов которых нужно исключить
9. zonder2000 09.09.21 12:39 Сейчас в теме
(4)нет.не факт что это нужный.Еще раз:вы 3 раза посещали магазин.в системе 3 строки с пустой датой оплаты,но в конце концов в 4-й раз вы совершили покупку,всего 4 строки в подчиненном справочнике.Так вот вас надо исключить.А если человек так ничего и не купил на момент формирования отчета то его вывести.а у него может быть сколько угодно посещений без оплат
10. zonder2000 09.09.21 12:42 Сейчас в теме
может я туплю?как в моем случае сработает максимум?
11. zonder2000 09.09.21 12:49 Сейчас в теме
при таком запросе выводятся те клиенты где есть множество посещений и берется максимальная дата,хотя она одна всего.то есть этих надо исключить.и сюда не вошли те которых надо тоже исключить но они с одной строкой.например одно посещение и сразу есть покупка,дата оплаты не пустая

| Контрагент.ссылка,
| Посещения.ДатаПолученияОплаты
|ИЗ
| МАКСИМУМ(Посещения.ДатаПолученияОплаты) КАК ДатаПолученияОплаты

| Справочник.Контрагент КАК Контрагент
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Посещения КАК Посещения
| ПО Контрагент.Ссылка = Посещения .Владелец
| И (Посещения .ДатаПолученияОплаты = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
| ГДЕ Посещения .ДатаПолученияОплаты =ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
12. Vlan 36 09.09.21 14:05 Сейчас в теме
Навскидку как-то так:
ВЫБРАТЬ
	Контрагенты.Ссылка КАК Ссылка,
	Контра.ДатаПолученияОплаты КАК ДатаПолученияОплаты,
	Контра.Контрагент2 КАК Контрагент2
ИЗ
	Справочник.Контрагенты КАК Контрагенты
		ЛЕВОЕ СОЕДИНЕНИЕ 
			(ВЫБРАТЬ
				Спр.Контрагент КАК Контрагент2,
				МАКСИМУМ(Спр.ДатаПолученияОплаты) КАК ДатаПолученияОплаты
			ИЗ
				Справочник.Посещения КАК Спр
			
			СГРУППИРОВАТЬ ПО
				Спр.Контрагент) КАК Контра
		ПО Контрагенты.Ссылка = Контра.Контрагент2
ГДЕ
	Контра.ДатаПолученияОплаты = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
Показать
13. Vlan 36 09.09.21 14:13 Сейчас в теме
(12) Если нужно, чтобы все контрагенты выводились, а не только те, что в Посещениях, еще надо пустое поле ДатаПолученияОплаты заполнить нулевой датой
14. zonder2000 09.09.21 18:38 Сейчас в теме
вроде получилось но ругается на поле Посещение.ДатаОплаты,не могу к нему доступ получить.не подскажите как?ошибка поле не найдено

ВЫБРАТЬ
Контрагент.Ссылка,
Посещение.ДатаОплаты

ИЗ
Справочник.Контрагент КАК Контрагент

ГДЕ (Контрагент.Ссылка,
Посещение.ДатаОплаты) НЕ В (ВЫБРАТЬ
Контрагент.Ссылка,
ДатаОплаты.ДатаОплаты
ИЗ
Справочник.Контрагент КАК Контрагент
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Посещение КАК Посещение
ПО Контрагент.Ссылка = Посещение.Владелец
И Посещение.ДатаОплаты <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
ГДЕ Посещение.ДатаОплаты <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
И НЕ Контрагент.ПометкаУдаления)

И НЕ Контрагент.ПометкаУдаления
15. zonder2000 09.09.21 19:29 Сейчас в теме
Оставьте свое сообщение

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