Имя: Пароль:
1C
1С v8
Как теоретически сделать такой запрос с плавучим интервалом
0 Cerera
 
05.09.12
09:59
Значит вот такой запрос:  
Если за анализируемый месяц было >= трёх продаж, то Если За период с -24 месяца от начала анализируемого периода по начало периода небыло продаж то 1

ИначеЕсли за месяц было меньше трёх продаж то если за 2 месяца включая предыдущий месяц было более трёх продаж то тогда -24 месяца от предыдущего месяца и
такое же условия только если за три месяца было более трех продаж то 1 иначе -24 относительно начала.

тоесть получается три интервала (1 месячный, 2 месячный, 3 месячный)
и три двухгодовых интервала отличающихся на один месяц.
и как вот это всё теоретически реализовать запросом?

это получается на каждого контрагента может быть свой интервал.
как это реализовать?

http://s003.radikal.ru/i202/1209/03/906f80aaf09f.jpg
Вот рисунок
1 Godofsin
 
05.09.12
10:00
(0) Рисунок шедевр!!! В эрмитаж!
2 Omskdizel
 
05.09.12
10:02
Что мешает сделать последовательные выборки в зависимости от результата первых запросов? А дальнейшее кодом рулится. Это как вариант. И вообще, что за экзотика таким макаром считается?
3 Omskdizel
 
05.09.12
10:02
(1) Рисунок да, доставил :)
4 Рэйв
 
05.09.12
10:03
Зачетная трава :-)
5 Рэйв
 
05.09.12
10:04
(0)Разбей на несколько последовательных запросов и анализируй.
6 butterbean
 
05.09.12
10:04
делаешь две таблицы - в одной считаешь количество продаж помесячно в отдельных полях, во второй - помесячно за -24 от крайней даты, а потом соединяешь их как надо
7 Cerera
 
05.09.12
10:09
(2)это клиенты. если не брали на протяжении двух лет но брали хотя бы 3 раза за 3 месяца то значит присвоим этому клиенту статус "Новый" и менеджеру бонус.
8 Рэйв
 
05.09.12
10:14
(7)Проверяешь продажи с (ТекДата-24) по (ТекДата - 3).  
Если Продажи = 0 Тогда
  //Проверяешь с (ТекДата- 3 мес) по (ТекДата)
  Если Продажи>0 Тогда
     //Менеджеру бюонус.
  Иначе
     //ФигВам.
  КонецЕсли;
Иначе
  //ФигВам
КонецЕсли;
9 Cerera
 
05.09.12
10:19
(8)но ведь это кодинг! а чисто языком запросов возможно?
10 Рэйв
 
05.09.12
10:20
(9)Анакуа?
11 Cerera
 
05.09.12
10:23
(10)Я же в  СКД работаю. и хочу получить на выходе таблицу "Контрагент"-"бонус"
12 Рэйв
 
05.09.12
10:24
(11)На кой тебе именно СКД для таких простых вещей , которые на коленке делаются за 15 мин?
13 Cerera
 
05.09.12
10:24
(12)это лишь часть большого отчета по зарплате.
14 rs_trade
 
05.09.12
10:29
Получаешь таблицу со значениями всех нужных диапазонов. И дальше через кейс считаешь че хочешь
15 ChAlex
 
05.09.12
10:33
(11) - ну раз в СКД работаешь, то связь 2-х наборов с передачей параметров из первого во второй.
16 ILM
 
гуру
05.09.12
10:39
(13) очень тяжелые наркотики выдают в вашей организации, если зарплата зависит от количества контрагентов с продажами помесячно...
17 Bober
 
05.09.12
10:41
Напиши запрос сразу по трем интервалам, потом в зависимости от условий делай те или инные выводы.
18 Рэйв
 
05.09.12
10:44
(16)Они доп. начисление в виде бонуса получают за новых клиентов :-)
19 Kashemir
 
05.09.12
10:44
Что-то у вас как то все сложно. Не вижу проблемы посчитать запросм количество продаж для фиксированого набора интервалов.
20 ILM
 
гуру
05.09.12
10:46
(18) Даже если купят на 20 копеек? То дадут бонус на тысячу?
21 Рэйв
 
05.09.12
10:46
(20)Это к ТС с такими вопросами:-)
22 Cerera
 
05.09.12
10:55
(20)Если не мене трех сделок по целевым продуктам_
23 Kashemir
 
05.09.12
11:02
(22) Какая тебе детализация каждой продажи нужна? период, регистратор, контрагент, номенклатура ?
24 Cerera
 
05.09.12
11:05
(23)просто Контрагент - КоличествоПродаж и всё. остальные бонусы в других запросах.
25 Kashemir
 
05.09.12
11:23
(24) Это структура результата
26 Cerera
 
05.09.12
11:25
(25)детализация по регистратору
27 Kashemir
 
05.09.12
11:37
(26) Как-то так


ВЫБРАТЬ
   ТЗ.Период,
   ТЗ.Регистратор,
   ТЗ.Контрагент
ПОМЕСТИТЬ Продажи
ИЗ
   &ТЗ КАК ТЗ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   РАЗНОСТЬДАТ(&ТекущаяДата, Продажи.Период, МЕСЯЦ) + 1 КАК ГлубинаПомесячно,
   Продажи.Регистратор,
   Продажи.Контрагент,
   Продажи.Период
ПОМЕСТИТЬ ПродажиСГлубинойПомесячно
ИЗ
   Продажи КАК Продажи

СГРУППИРОВАТЬ ПО
   Продажи.Период,
   Продажи.Контрагент,
   Продажи.Регистратор
;

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

СГРУППИРОВАТЬ ПО
   ВложенныйЗапрос.ГлубинаПомесячно,
   ВложенныйЗапрос.Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   КоличествоПродажЗаМесяц.Контрагент,
   СУММА(ВЫБОР
           КОГДА КоличествоПродажЗаМесяц.ГлубинаПомесячно <= 1
               ТОГДА КоличествоПродажЗаМесяц.КоличествоПродаж
           ИНАЧЕ 0
       КОНЕЦ) КАК ПродажиЗаПоследнийМесяц,
   ВЫБОР
       КОГДА КоличествоПродажЗаМесяц.ГлубинаПомесячно <= 2
           ТОГДА КоличествоПродажЗаМесяц.КоличествоПродаж
       ИНАЧЕ 0
   КОНЕЦ КАК ПродажиЗаПоследние2Месяца,
   ВЫБОР
       КОГДА КоличествоПродажЗаМесяц.ГлубинаПомесячно <= 2
           ТОГДА КоличествоПродажЗаМесяц.КоличествоПродаж
       ИНАЧЕ 0
   КОНЕЦ КАК ПродажиЗаПоследние3Месяца
ИЗ
   КоличествоПродажЗаМесяц КАК КоличествоПродажЗаМесяц

СГРУППИРОВАТЬ ПО
   КоличествоПродажЗаМесяц.Контрагент,
   ВЫБОР
       КОГДА КоличествоПродажЗаМесяц.ГлубинаПомесячно <= 2
           ТОГДА КоличествоПродажЗаМесяц.КоличествоПродаж
       ИНАЧЕ 0
   КОНЕЦ,
   ВЫБОР
       КОГДА КоличествоПродажЗаМесяц.ГлубинаПомесячно <= 2
           ТОГДА КоличествоПродажЗаМесяц.КоличествоПродаж
       ИНАЧЕ 0
   КОНЕЦ
28 Kashemir
 
05.09.12
11:38
+(27) Правка к последнему куску


ВЫБРАТЬ
   КоличествоПродажЗаМесяц.Контрагент,
   СУММА(ВЫБОР
           КОГДА КоличествоПродажЗаМесяц.ГлубинаПомесячно <= 1
               ТОГДА КоличествоПродажЗаМесяц.КоличествоПродаж
           ИНАЧЕ 0
       КОНЕЦ) КАК ПродажиЗаПоследнийМесяц,
   СУММА(ВЫБОР
           КОГДА КоличествоПродажЗаМесяц.ГлубинаПомесячно <= 2
               ТОГДА КоличествоПродажЗаМесяц.КоличествоПродаж
           ИНАЧЕ 0
       КОНЕЦ) КАК ПродажиЗаПоследние2Месяца,
   СУММА(ВЫБОР
           КОГДА КоличествоПродажЗаМесяц.ГлубинаПомесячно <= 3
               ТОГДА КоличествоПродажЗаМесяц.КоличествоПродаж
           ИНАЧЕ 0
       КОНЕЦ) КАК ПродажиЗаПоследние3Месяца
ИЗ
   КоличествоПродажЗаМесяц КАК КоличествоПродажЗаМесяц

СГРУППИРОВАТЬ ПО
   КоличествоПродажЗаМесяц.Контрагент
29 Cerera
 
05.09.12
12:50
(23)это слишком круто. каким умным надо быть человеком чтоб такой запрос создать?
30 Kashemir
 
05.09.12
12:55
(29) Запрос как запрос - не вижу сложностей
31 Cerera
 
05.09.12
13:14
(30)а тз откда берёшь?
32 Kashemir
 
05.09.12
13:16
(31) Я без понятия какой у тебя источник данных - потому ввел внешний для удобства. Подставь вместо него свой