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

запрос получает последний докуемнт по которому приходила номенклатура, по аналогии можно и первичные продажи получить
4 Сияющий Асинхраль
 
22.06.17
13:15
(2) Реализация (счет могут не оплатить), то есть первая реализация по каждому контрагенту.
5 Масянька
 
22.06.17
13:16
(4) Реализация - сама по себе или все-таки привязана к счет (пусть и не оплаченному)?
6 Сияющий Асинхраль
 
22.06.17
13:17
(5) Реализация сама по себе
7 Масянька
 
22.06.17
13:18
(6) Ну, и как определить - "первичная"?
8 FormatC
 
22.06.17
13:19
первичная продажа - это первый документ реализации?
9 Сияющий Асинхраль
 
22.06.17
13:19
(3) Ну да, можно продажи анализировать, просто считал, что при больших периодах такие запросы тормозить должны :-( , хотя спасибо, проанализирую, может и правда чисто по продажам сделать
(7) Так в этом и вопрос :-)
10 Сияющий Асинхраль
 
22.06.17
13:20
(8) Да, первый документ, все что после уже вторичные
11 FormatC
 
22.06.17
13:20
(9) на больших периодах да, будут не очень быстро формироваться... все зависит от базы
12 skafandr
 
22.06.17
13:21
(10) Странненько  ... у яндекса по другому:
"Первичными называют продажи товаров оптовым клиентам (дистрибьюторам и оптовым компаниям) и в торговые точки. К вторичным относят продажи товаров непосредственно потребителям."
13 FormatC
 
22.06.17
13:21
(12)у каждой фирмы обычно своя теория ))
14 Масянька
 
22.06.17
13:22
(10) В таком разе: выбираешь все реализации, сортируешь по дате - в первую колонку самая первая, во вторую - последующие.
15 Сияющий Асинхраль
 
22.06.17
13:22
(12) Ну так мы же 1С-ники, работаем на конкретных клиентов, а у конкретных клиентов свои собственные понятия и термины :-)
16 skafandr
 
22.06.17
13:23
Да .... уж
(10) А если в Ваших категориях - то совсем первая реализация или первая реализация в  пределах заказа?
17 FormatC
 
22.06.17
13:23
(14)это если делать по одному клиенту и не одним запросом всё
18 Масянька
 
22.06.17
13:24
(17) Да ладно...
19 skafandr
 
22.06.17
13:24
Сделать реквизит у клиента и заполнять его первой реализацией не насилуя каждый раз хитрым запросом ;)
20 FormatC
 
22.06.17
13:26
(18) пример запроса
21 Сияющий Асинхраль
 
22.06.17
13:26
(14) Этот вариант в (3), вариант рабочий, но медленный, думаю вариант с периодическим регистром сведений должен быстрее работать :-(
(16) В базе речь идет фактически о розничных покупателях - клиентах фитнеса, поэтому о счете речь вообще не идет
22 senior
 
22.06.17
13:28
(0) вообще не вижу проблемы, запрос по продажам с группировкой по контрагенту Мин() по дате, потом соединить снова с продажами получишь первичные продажи, остальное вторичные
23 Масянька
 
22.06.17
13:35
(20) Если ты не можешь - это не значит, что нельзя (С)
У меня нет восьмерки под рукой.
24 Масянька
 
22.06.17
13:35
(21) В день - одна реализация?
25 Сияющий Асинхраль
 
22.06.17
13:36
Ладно. К моим вариантам прибавляю еще пару - запрос по все реализациям с группировкой Мин(), плюс вариант (19). Буду глядеть - Спасибо!!!
26 FormatC
 
22.06.17
13:36
(23) я вообще-то привел уже пример запроса
27 Сияющий Асинхраль
 
22.06.17
13:38
(24) В принципе, конечно, может быть и несколько, например чел может придти на фитнес два раза в день - утром и вечером, но для простоты учитывается только самый первый документ, все остальное вторичные
28 Масянька
 
22.06.17
13:41
(27) А смысл такого отчета?
29 Сияющий Асинхраль
 
22.06.17
13:43
(28) Для меня просто выполнение заказа, а для клиента я у него не спрашивал :-) , может хочет увидеть работу рекламы, может еще чего...
30 FormatC
 
22.06.17
13:44
(29) скоере всего хочет увидеть какие типы абонементов продаются при первом обращении
31 Сияющий Асинхраль
 
22.06.17
13:47
(30) Очень даже может быть.
32 eryomin
 
22.06.17
13:51
(9) ограничь период. обычно новые клиенты интересуют в связи с какими-нибудь недавними мероприятиями. а зачем тебе считать покупку вторичной, если клиент перед этим уже года три не заходил.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший