добрый день.Пытаюсь по урокам изучать запросы получил список контрагентов подлежащих к исключению из запроса.Как продолжить выборку из запроса, но за исключением тех контрагентов которых я получил данным запросом?как отобрать всех кроме исключенных и продолжить с ними оперировать?Суть такая.кто посещал магазин и сделал покупку того исключаем путем проверки даты оплаты.тогда останутся только те кто посещал магазин но не совершил покупку соответ.нет даты оплаты
| Контрагент.ссылка,
| Посещения.ДатаПолученияОплаты
|ИЗ
| Справочник.Контрагент КАК Контрагент
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Посещения КАК Посещения
| ПО Контрагент.Ссылка = Посещения .Владелец
| И (Посещения .ДатаПолученияОплаты <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
| Контрагент.ссылка,
| Посещения.ДатаПолученияОплаты
|ИЗ
| Справочник.Контрагент КАК Контрагент
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Посещения КАК Посещения
| ПО Контрагент.Ссылка = Посещения .Владелец
| И (Посещения .ДатаПолученияОплаты <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) на равно нельзя потому что в справочнике может быть 3 записи.где 2 с пустой датой(потому что каждое посещение записывается) и одна с заполненной,это означает что человек все таки совершил покупку.и значит его нужно исключить из дальтнейших действий.вообще выбрать в итоге только тех кто ни разу не совершил покупки.то есть абсолютно все записи с пустой датой
вот отобрал всех ненужных.далее их нужно поместить во временную таблицу чтоб исключать?
| Контрагент.ссылка,
| Посещения.ДатаПолученияОплаты
|ИЗ
| Справочник.Контрагент КАК Контрагент
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Посещения КАК Посещения
| ПО Контрагент.Ссылка = Посещения .Владелец
| И (Посещения .ДатаПолученияОплаты <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
| ГДЕ Посещения .ДатаПолученияОплаты <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| Контрагент.ссылка,
| Посещения.ДатаПолученияОплаты
|ИЗ
| Справочник.Контрагент КАК Контрагент
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Посещения КАК Посещения
| ПО Контрагент.Ссылка = Посещения .Владелец
| И (Посещения .ДатаПолученияОплаты <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
| ГДЕ Посещения .ДатаПолученияОплаты <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
(4)нет.не факт что это нужный.Еще раз:вы 3 раза посещали магазин.в системе 3 строки с пустой датой оплаты,но в конце концов в 4-й раз вы совершили покупку,всего 4 строки в подчиненном справочнике.Так вот вас надо исключить.А если человек так ничего и не купил на момент формирования отчета то его вывести.а у него может быть сколько угодно посещений без оплат
при таком запросе выводятся те клиенты где есть множество посещений и берется максимальная дата,хотя она одна всего.то есть этих надо исключить.и сюда не вошли те которых надо тоже исключить но они с одной строкой.например одно посещение и сразу есть покупка,дата оплаты не пустая
| Контрагент.ссылка,
| Посещения.ДатаПолученияОплаты
|ИЗ
| МАКСИМУМ(Посещения.ДатаПолученияОплаты) КАК ДатаПолученияОплаты
| Справочник.Контрагент КАК Контрагент
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Посещения КАК Посещения
| ПО Контрагент.Ссылка = Посещения .Владелец
| И (Посещения .ДатаПолученияОплаты = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
| ГДЕ Посещения .ДатаПолученияОплаты =ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| Контрагент.ссылка,
| Посещения.ДатаПолученияОплаты
|ИЗ
| МАКСИМУМ(Посещения.ДатаПолученияОплаты) КАК ДатаПолученияОплаты
| Справочник.Контрагент КАК Контрагент
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Посещения КАК Посещения
| ПО Контрагент.Ссылка = Посещения .Владелец
| И (Посещения .ДатаПолученияОплаты = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
| ГДЕ Посещения .ДатаПолученияОплаты =ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
Навскидку как-то так:
ВЫБРАТЬ
Контрагенты.Ссылка КАК Ссылка,
Контра.ДатаПолученияОплаты КАК ДатаПолученияОплаты,
Контра.Контрагент2 КАК Контрагент2
ИЗ
Справочник.Контрагенты КАК Контрагенты
ЛЕВОЕ СОЕДИНЕНИЕ
(ВЫБРАТЬ
Спр.Контрагент КАК Контрагент2,
МАКСИМУМ(Спр.ДатаПолученияОплаты) КАК ДатаПолученияОплаты
ИЗ
Справочник.Посещения КАК Спр
СГРУППИРОВАТЬ ПО
Спр.Контрагент) КАК Контра
ПО Контрагенты.Ссылка = Контра.Контрагент2
ГДЕ
Контра.ДатаПолученияОплаты = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
Показать
вроде получилось но ругается на поле Посещение.ДатаОплаты,не могу к нему доступ получить.не подскажите как?ошибка поле не найдено
ВЫБРАТЬ
Контрагент.Ссылка,
Посещение.ДатаОплаты
ИЗ
Справочник.Контрагент КАК Контрагент
ГДЕ (Контрагент.Ссылка,
Посещение.ДатаОплаты) НЕ В (ВЫБРАТЬ
Контрагент.Ссылка,
ДатаОплаты.ДатаОплаты
ИЗ
Справочник.Контрагент КАК Контрагент
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Посещение КАК Посещение
ПО Контрагент.Ссылка = Посещение.Владелец
И Посещение.ДатаОплаты <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
ГДЕ Посещение.ДатаОплаты <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
И НЕ Контрагент.ПометкаУдаления)
И НЕ Контрагент.ПометкаУдаления
ВЫБРАТЬ
Контрагент.Ссылка,
Посещение.ДатаОплаты
ИЗ
Справочник.Контрагент КАК Контрагент
ГДЕ (Контрагент.Ссылка,
Посещение.ДатаОплаты) НЕ В (ВЫБРАТЬ
Контрагент.Ссылка,
ДатаОплаты.ДатаОплаты
ИЗ
Справочник.Контрагент КАК Контрагент
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Посещение КАК Посещение
ПО Контрагент.Ссылка = Посещение.Владелец
И Посещение.ДатаОплаты <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
ГДЕ Посещение.ДатаОплаты <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
И НЕ Контрагент.ПометкаУдаления)
И НЕ Контрагент.ПометкаУдаления
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот