Имя: Пароль:
1C
 
помогите в создании отчета Продажи
,
0 Лентаf
 
07.02.19
09:01
привет!
Руководству нужен отчет по продажам новых (заведенных в 18 году) клиентов.
Думаю нужно сделать запрос по продажам всех клиентов в 18 году и сопоставить результат этого запроса с продажами в предыдущие периоды. Если в предыдущих периодах продаж нет, тогда это попадает в отчет.
Вопрос в том, как это сделать в одном запросе...
1 Лентаf
 
07.02.19
09:02
Если в предыдущих периодах продаж нет, тогда контрагент попадает в отчет.
2 Гипервизор
 
07.02.19
09:09
А если контрагента добавили в 17 году, но тогда продажа не срослась и смогли продать только в 18?
3 Лентаf
 
07.02.19
09:10
попадет в 18 год, это мелочи. + - трамвайная остановка
4 Гипервизор
 
07.02.19
09:13
Может лучше ориентироваться на даты договоров? Если они заполнены, конечно.
5 Лентаf
 
07.02.19
09:15
(4) можно, я так сначала думал. Но как отсечь тех клиентов, которые имеют несколько договоров, созданных ранее 18 года?
6 ДенисЧ
 
07.02.19
09:16
А есть реквизит "Дата создания контрагента" ?
Если нет - можешь сбегать в ближайшую бамбуковую лавку...

А потом начинать парсить ЖР на предмет создания а) реквизита и б) заполнения его по ЖР
7 Maniac
 
07.02.19
09:17
Объединение ДВУХ запросов по продажам в одном один период, в другом другой период от самого начала до начала даты первого запроса.

Условие с тем что кол продаж во втором равно 0.
8 Maniac
 
07.02.19
09:22
Обединяешь два запроса по продажам с разными периодами.
так чтобы на выходе была два вычисляемых результата КоличествоПродаж1 и КоличествоПродаж2

Потом условие КоличествоПродаж2 = 0
9 Dotoshin
 
07.02.19
09:24
(0) Делаешь выборку по контрагентам у которых к-во продаж до 2018 года равно 0, далее делаешь отчет по продажам с отбором по клиентам попавших в выборку.
Как-то так...
10 Maniac
 
07.02.19
09:24
А вообще для всей работы цело м на будущее (без изменения типовой)
добавь реквизит ДатаРегистрации

и сзделай подписку в которой при записи если элемент новый (проверка ссылки) заполнять эту дату.

Можно вывести в список, в отчеты и прочее.
Всегда будет видно когда контрагент появился в базе.
11 Maniac
 
07.02.19
09:25
(9) в одном  запросе это = (8)
12 Maniac
 
07.02.19
09:26
Можно и без обьединения с вложенным условием в котором будет запрос.
Пофигу.
13 Лентаf
 
07.02.19
09:28
(7)
ВЫБРАТЬ
    Продажи.Период,
    Продажи.Регистратор,
    Продажи.НомерСтроки,
    Продажи.Активность,
    Продажи.Номенклатура,
    Продажи.ХарактеристикаНоменклатуры,
    Продажи.ЗаказПокупателя,
    Продажи.ДоговорКонтрагента,
    Продажи.ДокументПродажи,
    Продажи.Проект,
    Продажи.Подразделение,
    Продажи.Количество,
    Продажи.Стоимость,
    Продажи.СтоимостьБезСкидок,
    Продажи.НДС,
    Продажи.СуммаБезНДС
ИЗ
    РегистрНакопления.Продажи КАК Продажи
ГДЕ
    Продажи.Период МЕЖДУ &Н И &К
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Продажи.Период,
    Продажи.Регистратор,
    Продажи.НомерСтроки,
    Продажи.Активность,
    Продажи.Номенклатура,
    Продажи.ХарактеристикаНоменклатуры,
    Продажи.ЗаказПокупателя,
    Продажи.ДоговорКонтрагента,
    Продажи.ДокументПродажи,
    Продажи.Проект,
    Продажи.Подразделение,
    Продажи.Количество,
    Продажи.Стоимость,
    Продажи.СтоимостьБезСкидок,
    Продажи.НДС,
    Продажи.СуммаБезНДС
ИЗ
    РегистрНакопления.Продажи КАК Продажи
ГДЕ
    Продажи.Период МЕЖДУ &НОтчет И &КОтчет

а как Объединить два запроса?
14 Maniac
 
07.02.19
09:29
Я бы пошел еще дальше. Так как продажи новых за период это конечно хорошо.

Но в этом периоде один появился вчера, другой неделю назад - продажи РАЗНЫЕ! так как даже в этом периоде они все в разное время начали покупать.

Поэтому еще хорошо ловить первую дату начала продаж.
Потом по подпериодам разбивать этот период.

Получать средние продажи каждого нового покупателя от начала его первых продаж.

Это уравняет всех новых покупателей по интенсивности продаж/частоте и так далее.

Короче мегаотчетик такой интересный
15 Maniac
 
07.02.19
09:30
(13) ты вообще запросы умеешь писать? что эжто за хрень полная. Даже обращение к регистру кривое.
16 Maniac
 
07.02.19
09:31
С такими навыками запросов лучше на курсы идти учится. чем работать на живой работе да еще задачи брать такие для руководства.
17 Dotoshin
 
07.02.19
09:32
(13) Запихнуть первый запрос в ВТ и присоединить ее ко второму запросу или использовать в условии второго запроса.
И вообще в первом запросе тебе нужен только контрагент
18 zak555
 
07.02.19
09:34
(13) делаешь запрос к регистру продаж за 2018 и клеешь его слева к такому же запросу но за период с начала до 2017 по is null
19 zak555
 
07.02.19
09:36
(6) кстати, хорошая идея
Для номенклатуры так делали )
20 ДенисЧ
 
07.02.19
09:38
(19) Да я для многих нужных справочников такое делал..
21 Лентаf
 
07.02.19
09:38
(15) давно не писал, этим редко занимаюсь.
22 Maniac
 
07.02.19
09:41
Запрос.Текст =
        "ВЫБРАТЬ
        |    ПродажиОбороты.Контрагент,
        |    ПродажиОбороты.КоличествоОборот,
        |    ПродажиОбороты.СтоимостьОборот
        |ИЗ
        |    РегистрНакопления.Продажи.Обороты(
        |            &НачалоПериода,
        |            &КонецПериода,
        |            ,
        |            НЕ Контрагент В
        |                    (ВЫБРАТЬ
        |                        ПродажиДО.Контрагент
        |                    ИЗ
        |                        РегистрНакопления.Продажи.Обороты(&НачалоПериодаДО, &КонецПериодаДО) КАК ПродажиДО)) КАК ПродажиОбороты";
23 zak555
 
07.02.19
09:46
(22) за вложенные запросы не казнят?
24 Базис
 
naïve
07.02.19
09:57
Если контрагенты создаются последовательно и код элемента никто руками не правит, то вручную (опрос местных жителей, архивная копия, журнал регистрации, волевое решение) выяснить, кто был первым контрагентом 2018 года.
25 Maniac
 
07.02.19
10:07
Вот еще лучше. так как не требует указания дат во втором запросе

ВЫБРАТЬ
    ПродажиОбороты.Контрагент,
    ПродажиОбороты.КоличествоОборот,
    ПродажиОбороты.СтоимостьОборот
ИЗ
    РегистрНакопления.Продажи.Обороты(
            &НачалоПериода,
            &КонецПериода,
            Период,
            НЕ Контрагент В
                    (ВЫБРАТЬ
                        ПродажиДО.Контрагент
                    ИЗ
                        РегистрНакопления.Продажи.Обороты(, , День) КАК ПродажиДО
                    ГДЕ
                        ПродажиДО.Период < &НачалоПериода)) КАК ПродажиОбороты
26 Лентаf
 
07.02.19
10:10
(22) попробовал, формируется минуту, спасибо. Столкнулся с тем что клиент заведен в 17 году и дата в договоре контрагента стоит не у всех
27 Maniac
 
07.02.19
10:11
Короче так как тут файл выложить некуда сделал миниотчет на СКД. для УТ10 так как регистр Продажи только там так называется.
В УТ11 он другой.

Добавил там удобный выбор периода и все такое.

Скачать тут можно бесплатно

https://subsystems.ru/forum/46/topic1022/
28 Maniac
 
07.02.19
10:11
Сейчас сделаю группировку еще по горизонтали по периодам
29 DexterMorgan
 
07.02.19
10:12
То, что завели клиента и заполнили дату регистрации - не означает, что он стал клиентом. Надо смотреть дату первой реализации (может заказа клиента), а затем уже соединять с продажами за период.
30 Лентаf
 
07.02.19
10:14
(29) так то согласен. Просто как факт заметил.
31 Maniac
 
07.02.19
10:28
Сразу обновление - два отчета в одном.
Динамика продаж - Возможность выбирать любую периодичность для вывода динамики по периодам (будет наглядно видно продажи по новым покупателям).
Простой список - всех контрагентов с итогами.
32 Maniac
 
07.02.19
10:35
(29) зато это тоже полезное дело.

от даты регистрации до первой продаж итоже показатель.
Или клиент так долго думал или манагер так плохо уговаривал.
33 Maniac
 
07.02.19
10:36
Кстати за отчет магарыч. хоть 100 рублей. телефон там на сайте.
34 OpKc
 
07.02.19
10:37
(26) а вот так сколько будет формироваться?

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    втПродажи.Период,
    втПродажи.Контрагент,
    втПродажи.СтоимостьОборот КАК СтоимостьОборот
ИЗ
    втПродажи КАК втПродажи
        ЛЕВОЕ СОЕДИНЕНИЕ втПродажи КАК втПродажи1
        ПО втПродажи.Контрагент = втПродажи1.Контрагент
            И (втПродажи1.Период < &Начало2018)
ГДЕ
    втПродажи1.СтоимостьОборот ЕСТЬ NULL
    И втПродажи.Период >= &Начало2018
35 OpKc
 
07.02.19
10:39
(34) + формируй с начала времён до конца 2018 года
36 ILM
 
гуру
07.02.19
10:40
Никто не расходится. Как вариант, вы еще Дату из ссылки по Гуиду не получали? )))
37 Лентаf
 
07.02.19
11:13
спс