Имя: Пароль:
1C
1С v8
Вопрос по диаграмме (сравнение двух периодов)
, , ,
0 Gsof
 
02.02.22
15:00
Добрый день, подскажите форумчане пожалуйста.
Делаю простой запрос который должен по дням сравнить продажи контрагента декабря 2021 и января 2022 , в прилучившейся таблице в консольке все ОК, есть все числа.
Далее делаю в отчет на СКД диаграмму, в качестве точек указываю “ПериодДень” в сериях “АналитикаУчетаПоПартнерамПартнер” в выбранных поляк “КолДек” и “КолЯнв”, все хорошо на диаграмме показывается только те число по которым были продажи как в декабре так и в январе(то есть нет первого числа так как в январе не было продаж в этот день, но они были в декабре и в диаграмме они нужны), а как сделать так чтобы выводились все числа?


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

СГРУППИРОВАТЬ ПО
    ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Партнер,
    ДЕНЬ(ВыручкаИСебестоимостьПродажОбороты.Период)

ОБЪЕДИНИТЬ ВСЕ

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    таб.АналитикаУчетаПоПартнерамПартнер КАК АналитикаУчетаПоПартнерамПартнер,
    таб.ПериодДень КАК ПериодДень,
    СУММА(таб.КолДекабрь) КАК КолДекабрь,
    СУММА(таб.КолЯнварь) КАК КолЯнварь
ИЗ
    таб КАК таб

СГРУППИРОВАТЬ ПО
    таб.АналитикаУчетаПоПартнерамПартнер,
    таб.ПериодДень
1 Gsof
 
02.02.22
15:12
Когда вывел результат в виде таблицы СКД тоже ни все даты вышли, возникает вопрос как в СКД сгруппировать так чтобы все даты выходили
2 DrShad
 
02.02.22
15:17
в данном варианте запроса никак СКД не поможет
нужно формировать таблицу дат и с ней соединять
3 Gsof
 
02.02.22
15:37
(2) не совсем понял как надо, но сделал вот так, колонка в таблицы первое число появился, но по всем контрагентам по нулям , не могу понять чем проблема

запрос вот

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

ОБЪЕДИНИТЬ ВСЕ

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДанныеПроизводственногоКалендаря.Дата КАК Дата
ПОМЕСТИТЬ ТабДат
ИЗ
    РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
ГДЕ
    ДанныеПроизводственногоКалендаря.Дата >= &НачДекабря
    И ДанныеПроизводственногоКалендаря.Дата <= &КонЯнв
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТабДат.Дата КАК Дата,
    ТабПродаж.АналитикаУчетаПоПартнерамПартнер КАК АналитикаУчетаПоПартнерамПартнер,
    ТабПродаж.КолДекабрь КАК КолДекабрь,
    ТабПродаж.КолЯнварь КАК КолЯнварь,
    ТабПродаж.ПериодДень КАК ПериодДень
ИЗ
    ТабДат КАК ТабДат
        ЛЕВОЕ СОЕДИНЕНИЕ ТабПродаж КАК ТабПродаж
        ПО ТабДат.Дата = ТабПродаж.ПериодДень
4 Gsof
 
02.02.22
15:41
может у кого есть подобный пример работающий, скиньте на него ссылку плиз
5 Ivan_495
 
02.02.22
15:46
в (3) содинение д.б правое
6 Gsof
 
02.02.22
15:59
(5) ты про какое самое нижнее? то пробовал и правое "Правое СОЕДИНЕНИЕ ТабПродаж КАК ТабПродаж" не помогает, более того при правом колонки первого числа вообще нет

упрости запрос


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

ОБЪЕДИНИТЬ ВСЕ

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДанныеПроизводственногоКалендаря.Дата КАК Дата
ПОМЕСТИТЬ ТабДат
ИЗ
    РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
ГДЕ
    ДанныеПроизводственногоКалендаря.Дата >= &НачДекабря
    И ДанныеПроизводственногоКалендаря.Дата <= &КонЯнв
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТабПродаж.КолДекабрь КАК КолДекабрь,
    ТабПродаж.КолЯнварь КАК КолЯнварь,
    ДЕНЬ(ТабДат.Дата) КАК НомерДня
ИЗ
    ТабДат КАК ТабДат
        Правое СОЕДИНЕНИЕ ТабПродаж КАК ТабПродаж
        ПО ТабДат.Дата = ТабПродаж.ПериодДень
7 Ivan_495
 
02.02.22
16:09
табдат и табпродаж покажи содержимое полей с датам , по - которым связываешь
8 Gsof
 
02.02.22
16:15
(7) не помогло вот такое соединение сделал


" ТабДат КАК ТабДат
    Правое СОЕДИНЕНИЕ ТабПродаж КАК ТабПродаж
        ПО ТабДат.Дата = ТабПродаж.ПериодДень "


выдает вот что
Номер дня    Итого    
    Кол декабрь    Кол январь
6        90
10        5 546


а с левым выдавало вот что

Номер дня    Итого    
    Кол декабрь    Кол январь
1        
2        
3        
4        
5        
6        90
7        
8        
9        
10        5 546

и так далее
9 Gsof
 
02.02.22
16:16
хотя первого число(первого декабря ) продажи есть
10 Ivan_495
 
02.02.22
16:31
второе верно работает, а с 1 декабря что- то не так, может год другой))
11 Gsof
 
02.02.22
16:35
(10) вот результата запросе по первом числу в консоли запросов

КолДекабрь    КолЯнварь    НомерДня
743                        1
12 Ivan_495
 
02.02.22
16:37
оставь в объединении только январь
13 Ivan_495
 
02.02.22
16:37
только декабрь
14 Ivan_495
 
02.02.22
16:38
все верно надо еще по номеру месяца вязать , если полную дату не используешь
15 Gsof
 
02.02.22
16:39
(10) да ты был прав косяк в датах, спасибо за помощь , но работает корректно все таки с левым соединением  , может кому поможет привожу работающий запрос  

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

ОБЪЕДИНИТЬ ВСЕ

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДанныеПроизводственногоКалендаря.Дата КАК Дата
ПОМЕСТИТЬ ТабДат
ИЗ
    РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
ГДЕ
    ДанныеПроизводственногоКалендаря.Дата >= &НачДекабря
    И ДанныеПроизводственногоКалендаря.Дата <= &КонЯнв
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТабПродаж.КолДекабрь КАК КолДекабрь,
    Выразить(ТабПродаж.КолЯнварь КАК Число) КАК КолЯнварь,
    ТабДат.Дата КАК НомерДня
ПОМЕСТИТЬ Т1
ИЗ
    ТабДат КАК ТабДат
        Левое СОЕДИНЕНИЕ ТабПродаж КАК ТабПродаж
        ПО ТабДат.Дата = ТабПродаж.ПериодДень
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СУММА(Т1.КолДекабрь) КАК КолДекабрь,
    СУММА(Т1.КолЯнварь) КАК КолЯнварь,
    ДЕНЬ(Т1.НомерДня) КАК НомерДня
ИЗ
    Т1 КАК Т1

СГРУППИРОВАТЬ ПО
    ДЕНЬ(Т1.НомерДня)
16 DrShad
 
02.02.22
16:40
вот не нужно было его сюда выкладывать
17 DrShad
 
02.02.22
16:40
не нужно тебе объединение
в запросе просто кроме дня еще и месяц нужно было выбрать и все
18 DrShad
 
02.02.22
16:41
и не пришлось бы делать разные поля колдек и колянв
19 DrShad
 
02.02.22
16:45
и для СКД не нужна группировка - она лишняя
20 Gsof
 
02.02.22
16:50
(19) ок, спасибо учту на будущее