Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   запрос: новые покупатели за этот год (http://forums.kuban.ru/f1040/zapros_novye_pokupateli_za_etot_god-3380368.html)

EarlyBird 03.12.2012 07:34

запрос: новые покупатели за этот год
 
Всем привет!
Задачка на поразмять мозги. Нужно запросом вывести всех новых покупателей, которые пришли в этом году.
Накидал тут кое-что. Результат выдаёт вроде правильный, но как-то неготично...
Может, можно покороче?

EarlyBird 03.12.2012 07:35

ВЫБРАТЬ
СтарыеПродажи.Контрагент КАК Покупатель,
ИСТИНА КАК ЭтоСтарыйПокупатель
ПОМЕСТИТЬ
СтарыеПокупатели
ИЗ
РегистрНакопления.Продажи.Обороты(, &НачалоГода, Период, ) КАК СтарыеПродажи
;


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

//////////////////////////////////////////////////////////////////
ВЫБРАТЬ
НовыеПокупателиЗаЭтотГод.*
ИЗ
ПокупателиЗаЭтотГод КАК НовыеПокупателиЗаЭтотГод
ГДЕ
НовыеПокупателиЗаЭтотГод.ЭтоНовый = ИСТИНА

Reaper 03.12.2012 07:43

В первом запросе пакета добавить хинт "Различные", в параметрах виртуальной таблицы не использовать периодичность. Третий запрос пакета не нужен. Во втором запросе соединение выбросить, "ПокупателиЗаЭтотГод" из полей выбросить, в параметрах виртуальной таблицы сделать условие "Не Контрагент В (Запрос к временной таблице)".

lalex23 03.12.2012 07:47

ВЫБРАТЬ
ПродажиОбороты.Контрагент
ИЗ
РегистрНакопления.Продажи.Обороты(
&КонтрольнаяДата,
&ТекущаяДата,
,
(НЕ Контрагент В
(ВЫБРАТЬ
ПродажиОбороты.Контрагент
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоВремён, &КонтрольнаяДата, , ) КАК ПродажиОбороты))) КАК ПродажиОбороты

незнаю как в плане производительности, но так проще на мой взгляд

EarlyBird 03.12.2012 08:13

(2), (3) спасибо!

EarlyBird 03.12.2012 08:16

условие в параметре ВТ действительно удобнее
а я чё-то зациклился на левом соединении, кручу его так и сяк, а зачем спрашивается?

lalex23 03.12.2012 08:16

ничего личного, но построения типа
ПокупателиЗаЭтотГод.ЭтоСтарыйПокупатель = ИСТИНА
меня напрягают

EarlyBird 03.12.2012 08:21

я тебя прекрасно понимаю ;-)


Текущее время: 07:10. Часовой пояс GMT +3.