Имя: Пароль:
1C
1С v8
Таблицы с разными периодами в запросе
0 distorter
 
16.10.23
18:59
Задача - вывести в ответ количественные данные по продажам и производству. Продажи (из одного регистра) берутся за период с B по C. Производство (из другого регистра) берется за более продолжительный период с A по С.
Вопрос - как объединить таблицы, чтобы попали данные за соответствующие периоды?
В результате ПОЛНОГО СОЕДИНЕНИЯ выпадают данные по производству за период А-В и остаются только с В по С.
1 2S
 
16.10.23
19:18
Ищи про пересечение периодов. На ис есть статьи
2 Жан Пердежон
 
16.10.23
19:27
(0)
1. криво соединяешь;
2. проще и быстрее объединением делать
3 RomanYS
 
16.10.23
20:03
(2) 👍
4 who respawn
 
16.10.23
23:04
(2) 👍
5 distorter
 
19.10.23
16:44
(2) Через объединение та же ситуация

А в чем кривизна соединения - способ соединения неверный?
6 СвинТуз
 
19.10.23
17:05
Что значит выпало при полном соединении? Это как?

full join on НачалоПериода(Таб1.Период, "Месяц")=НачалоПериода(Таб2.Период, "Месяц")
7 СвинТуз
 
19.10.23
17:06
+ ЕстьNULL() конечно.
Как оно может выпасть?
8 СвинТуз
 
19.10.23
17:07
Боты стали более изобретательные?

Втираешь тут ... При полном соединении что то выпало.
Такого не бывает.
9 shuhard
 
19.10.23
17:14
(5) если речь про СКД, то нужно экранировать дата начала и окончания периода {}
10 distorter
 
20.10.23
12:54
(6)

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

СГРУППИРОВАТЬ ПО
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Характеристика
11 distorter
 
20.10.23
12:59
(9) Да, СКД. Спасибо большое, экранирование помогло!

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

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