Выборка клиентов, которые не заезжали в полсднее время

Материал из База знаний 5S AUTO
Перейти к навигации Перейти к поиску

ВЫБРАТЬ

 Покупатели.Покупатель.Код КАК Код,
 Покупатели.Покупатель,
 ВЫРАЗИТЬ(Покупатели.СуммаОплат КАК ЧИСЛО(10)) КАК СуммаОплат

ПОМЕСТИТЬ ВремПокупатели ИЗ

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

ГДЕ

  ДокЗаявкаНаРемонт.Ссылка IS NULL
  И ДокЗаказНаряд.Ссылка IS NULL
  И ДокЗаказПокупателя.Ссылка IS NULL
  И ДокРеализацияТоваров.Ссылка IS NULL;

ВЫБРАТЬ

 ВремПокупатели.Покупатель,
 РегСвКИ.Вид,
 РегСвКИ.Представление

ПОМЕСТИТЬ ВремКИ ИЗ

 ВремПокупатели
 СОЕДИНЕНИЕ
 РегистрСведений.КонтактнаяИнформация КАК РегСвКИ
 ПО( ВремПокупатели.Покупатель=РегСвКИ.Объект
     И РегСвКИ.Тип=ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон) )

ГДЕ

 ПОДСТРОКА(РегСвКИ.Представление, 10, 1)<>"";

ВЫБРАТЬ

   КИ1.Покупатель,
   КИ1.Вид,
   КОЛИЧЕСТВО(*) КАК ПорядковыйНомер

ПОМЕСТИТЬ ВремКИНомер ИЗ

   ВремКИ КАК КИ1
   СОЕДИНЕНИЕ
   ВремКИ КАК КИ2
   ПО( КИ1.Покупатель=КИ2.ПОкупатель
       И КИ1.Вид>=КИ2.Вид )

СГРУППИРОВАТЬ ПО

   КИ1.Покупатель,
   КИ1.Вид;

ВЫБРАТЬ

   ВремКИ.Покупатель,
   ВремКИНомер.ПорядковыйНомер,
   МАКСИМУМ(ВремКИ.Представление) КАК Представление

ПОМЕСТИТЬ ВремНомераТелефона ИЗ

   ВремКИ
   СОЕДИНЕНИЕ
   ВремКИНомер
   ПО( ВремКИ.Покупатель=ВремКИНомер.Покупатель
       И ВремКИ.Вид=ВремКИНомер.Вид )

СГРУППИРОВАТЬ ПО

   ВремКИ.Покупатель,
   ВремКИНомер.ПорядковыйНомер;

ВЫБРАТЬ

   ВремПокупатели.Код,
   ВремПокупатели.Покупатель,
   ISNULL(НомераТелефона1.Представление, "")+", "+ISNULL(НомераТелефона2.Представление, "")+", "+ISNULL(НомераТелефона3.Представление, "") КАК НомераТелефона,
   ВремПокупатели.СуммаОплат

ПОМЕСТИТЬ ВремТелефоны ИЗ

   ВремПокупатели
   ЛЕВОЕ СОЕДИНЕНИЕ
   ВремНомераТелефона КАК НомераТелефона1
   ПО(ВремПокупатели.Покупатель=НомераТелефона1.Покупатель
      И НомераТелефона1.ПорядковыйНомер=1)
   ЛЕВОЕ СОЕДИНЕНИЕ
   ВремНомераТелефона КАК НомераТелефона2
   ПО(ВремПокупатели.Покупатель=НомераТелефона2.Покупатель
      И НомераТелефона2.ПорядковыйНомер=2)
   ЛЕВОЕ СОЕДИНЕНИЕ
   ВремНомераТелефона КАК НомераТелефона3
   ПО(ВремПокупатели.Покупатель=НомераТелефона3.Покупатель
      И НомераТелефона3.ПорядковыйНомер=3);

ВЫБРАТЬ

 ВремПокупатели.Покупатель,
 МАКСИМУМ(ДокЗаказНаряд.Дата) КАК Дата

ПОМЕСТИТЬ ВремДатаПоследнегоЗаказНаряда ИЗ

 ВремПокупатели
 СОЕДИНЕНИЕ
 Документ.ЗаказНаряд КАК ДокЗаказНаряд
 ПО((ВремПокупатели.Покупатель=ДокЗаказНаряд.Заказчик
     ИЛИ ВремПокупатели.Покупатель=ДокЗаказНаряд.Контрагент)
    И ДокЗаказНаряд.ПометкаУдаления=ЛОЖЬ)

СГРУППИРОВАТЬ ПО

 ВремПокупатели.Покупатель;

ВЫБРАТЬ

 ВремПокупатели.Покупатель,
 МАКСИМУМ(ДокЗаказНаряд.Дата) КАК Дата

ПОМЕСТИТЬ ВремДатаПредыдущегоЗаказНаряда ИЗ

 ВремПокупатели
 СОЕДИНЕНИЕ
 Документ.ЗаказНаряд КАК ДокЗаказНаряд
 ПО((ВремПокупатели.Покупатель=ДокЗаказНаряд.Заказчик
     ИЛИ ВремПокупатели.Покупатель=ДокЗаказНаряд.Контрагент)
     И ДокЗаказНаряд.ПометкаУдаления=ЛОЖЬ)
  ЛЕВОЕ СОЕДИНЕНИЕ
  ВремДатаПоследнегоЗаказНаряда
  ПО(ВремПокупатели.Покупатель=ВремДатаПоследнегоЗаказНаряда.Покупатель
     И ДокЗаказНаряд.Дата=ВремДатаПоследнегоЗаказНаряда.Дата)

ГДЕ

  ВремДатаПоследнегоЗаказНаряда.Покупатель IS NULL	

СГРУППИРОВАТЬ ПО

  ВремПокупатели.Покупатель;

ВЫБРАТЬ

  ВремДатаПоследнегоЗаказНаряда.Покупатель,
  МАКСИМУМ(ДокЗаказНаряд.Ссылка) КАК ЗаказНаряд

ПОМЕСТИТЬ ВремПоследнийЗаказНаряд ИЗ

  ВремДатаПоследнегоЗаказНаряда
  СОЕДИНЕНИЕ
  Документ.ЗаказНаряд КАК ДокЗаказНаряд
  ПО((ВремДатаПоследнегоЗаказНаряда.Покупатель=ДокЗаказНаряд.Заказчик
      ИЛИ ВремДатаПоследнегоЗаказНаряда.Покупатель=ДокЗаказНаряд.Контрагент)
     И ВремДатаПоследнегоЗаказНаряда.Дата=ДокЗаказНаряд.Дата)

СГРУППИРОВАТЬ ПО

  ВремДатаПоследнегоЗаказНаряда.Покупатель;

ВЫБРАТЬ

  ВремДатаПредыдущегоЗаказНаряда.Покупатель,
  МАКСИМУМ(ДокЗаказНаряд.Ссылка) КАК ЗаказНаряд

ПОМЕСТИТЬ ВремПрерыдущийЗаказНаряд ИЗ

 ВремДатаПредыдущегоЗаказНаряда
 СОЕДИНЕНИЕ
 Документ.ЗаказНаряд КАК ДокЗаказНаряд
 ПО((ВремДатаПредыдущегоЗаказНаряда.Покупатель=ДокЗаказНаряд.Заказчик
     ИЛИ ВремДатаПредыдущегоЗаказНаряда.Покупатель=ДокЗаказНаряд.Контрагент)
    И ВремДатаПредыдущегоЗаказНаряда.Дата=ДокЗаказНаряд.Дата)

СГРУППИРОВАТЬ ПО

 ВремДатаПредыдущегоЗаказНаряда.Покупатель;

ВЫБРАТЬ

 ВремПокупатели.Покупатель,
 МАКСИМУМ(РегСвАвтомобилиСрезПоследних.Автомобиль) КАК Автомобиль

ПОМЕСТИТЬ ВремАвтомобили ИЗ

 ВремПокупатели
 СОЕДИНЕНИЕ
 РегистрСведений.Автомобили.СрезПоследних(, ВидЗначения=ЗНАЧЕНИЕ(Перечисление.ДополнительнаяИнформацияАвтомобилей.Хозяин)) КАК РегСвАвтомобилиСрезПоследних
 ПО(ВремПокупатели.Покупатель=РегСвАвтомобилиСрезПоследних.Значение)

СГРУППИРОВАТЬ ПО

 ВремПокупатели.Покупатель;

ВЫБРАТЬ

 ВремПокупатели.Покупатель,
 СУММА(ISNULL(РегСвБонусыСтандартныеОбороты.КоличествоОборот, 0)) КАК Стандартные,
 СУММА(ISNULL(РегСвБонусыПремиумОбороты.КоличествоОборот, 0)) КАК Премиум

ПОМЕСТИТЬ ВремБонусы ИЗ

 ВремПокупатели
 СОЕДИНЕНИЕ	
 РегистрСведений._5с_ВладельцыБонусныхСчетов КАК РегСвВладельцыБонусныхСчетов
 ПО(ВремПокупатели.Покупатель=РегСвВладельцыБонусныхСчетов.Контрагент)
 ЛЕВОЕ СОЕДИНЕНИЕ
 Справочник._5с_ТипыБонусов КАК СпрТипыБонусовСтандартные
 ПО(СпрТипыБонусовСтандартные.Код="000000001")
 ЛЕВОЕ СОЕДИНЕНИЕ
 Справочник._5с_ТипыБонусов КАК СпрТипыБонусовПремиум
 ПО(СпрТипыБонусовПремиум.Код="000000002")
 ЛЕВОЕ СОЕДИНЕНИЕ
 РегистрНакопления._5с_Бонусы.Обороты() КАК РегСвБонусыСтандартныеОбороты
 ПО(РегСвВладельцыБонусныхСчетов.БонусныйСчет=РегСвБонусыСтандартныеОбороты.БонусныйСчет
    И СпрТипыБонусовСтандартные.Ссылка=РегСвБонусыСтандартныеОбороты.ТипБонуса)
 ЛЕВОЕ СОЕДИНЕНИЕ
 РегистрНакопления._5с_Бонусы.Обороты() КАК РегСвБонусыПремиумОбороты
 ПО(РегСвВладельцыБонусныхСчетов.БонусныйСчет=РегСвБонусыПремиумОбороты.БонусныйСчет
    И СпрТипыБонусовПремиум.Ссылка=РегСвБонусыПремиумОбороты.ТипБонуса)

СГРУППИРОВАТЬ ПО

 ВремПокупатели.Покупатель;

ВЫБРАТЬ

 ВремПокупатели.Покупатель,
 ВремПокупатели.Покупатель.Наименование КАК ФИО,
 ISNULL(ВремТелефоны.НомераТелефона, "") КАК НомерТелефона,
 ISNULL(ВремАвтомобили.Автомобиль.Модель.Родитель.Наименование, "")+" / "+ ISNULL(ВремАвтомобили.Автомобиль.Модель.Наименование, "") КАК МаркаМодель,
 ISNULL(ВремПоследнийЗаказНаряд.ЗаказНаряд.Дата, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаКрайнегоЗаказНаряда,
 ISNULL(ВремПоследнийЗаказНаряд.ЗаказНаряд.Номер, "") КАК НомерКрайнегоЗаказНаряда,
 ISNULL(ВремБонусы.Стандартные, 0) КАК КоличествоСтандартныхБонусов,
 ISNULL(ВремБонусы.Премиум, 0) КАК КоличествоПремиумБонусов

ИЗ

 ВремПокупатели
 ЛЕВОЕ СОЕДИНЕНИЕ
 ВремТелефоны
 ПО(ВремПокупатели.Покупатель=ВремТелефоны.Покупатель)	
 ЛЕВОЕ СОЕДИНЕНИЕ
 ВремАвтомобили
 ПО(ВремПокупатели.Покупатель=ВремАвтомобили.Покупатель)
 ЛЕВОЕ СОЕДИНЕНИЕ
 ВремПоследнийЗаказНаряд
 ПО(ВремПокупатели.Покупатель=ВремПоследнийЗаказНаряд.Покупатель)
 ЛЕВОЕ СОЕДИНЕНИЕ
 ВремБонусы
 ПО(ВремПокупатели.Покупатель=ВремБонусы.Покупатель)

УПОРЯДОЧИТЬ ПО

 ISNULL(ВремПоследнийЗаказНаряд.ЗаказНаряд.Дата, ДАТАВРЕМЯ(1, 1, 1))