Имя: Пароль:
1C
1С v8
объединение двух таблиц
0 RizONE
 
29.01.18
11:54
Подскажите решение такой задачи:
регистр накопления по периодам, например
01.12.2017
01.01.2018
01.02.2018
01.03.2018
01.04.2018

периодический регистр цен, типа
01.01.2016 140
01.02.2018 128
01.03.2018 315

как прикрутить цены в запросе к регистру накопления, чтобы напротив каждой строки стояла своя цена?
1 Timon1405
 
29.01.18
12:07
поискать срез последних на каждую дату не предлагать?
2 RizONE
 
29.01.18
12:10
(1) предлагай, главное чтобы все делалось в запросе
3 Timon1405
 
29.01.18
12:12
4 Azxcvbn
 
29.01.18
12:35
Не объединение, гуглите срез последних на каждую дату, найдете кучу решений
5 RizONE
 
29.01.18
13:52
Спасибо за наводки.
Решилось довольно просто )
6 RizONE
 
29.01.18
13:59
// разворачиваем регистр в строки
ВЫБРАТЬ
    Запрос.Период,
    СУММА(Запрос.Цена_1) КАК Цена_1,
    СУММА(Запрос.Цена_2) КАК Цена_2
ПОМЕСТИТЬ Цены
ИЗ
    (ВЫБРАТЬ
        Цены.Период КАК Период,
        ВЫБОР
            КОГДА Цены.ТипУслуги = ЗНАЧЕНИЕ(перечисление.ТипУслуги.Услуга_1)
                ТОГДА Цены.Цена
            ИНАЧЕ 0
        КОНЕЦ КАК Цена_1,
        ВЫБОР
            КОГДА Цены.ТипУслуги = ЗНАЧЕНИЕ(перечисление.ТипУслуги.Услуга_2)
                ТОГДА Цены.Цена
            ИНАЧЕ 0
        КОНЕЦ КАК Цена_2
    ИЗ
        РегистрСведений.Цены КАК Цены) КАК Запрос

СГРУППИРОВАТЬ ПО
    Запрос.Период
;

////////////////////////////////////////////////////////////////////////////////
// тут собираем все периоды по которым нужны Цены
ВЫБРАТЬ РАЗЛИЧНЫЕ
    Начисления.Период
ПОМЕСТИТЬ Периоды
ИЗ
    РегистрНакопления.Начисления КАК Начисления
;

////////////////////////////////////////////////////////////////////////////////
// собственно вся магия
ВЫБРАТЬ
    Периоды.Период,
    МАКСИМУМ(Цены.Период) КАК ПериодЦены
ПОМЕСТИТЬ ППЦ
ИЗ
    Периоды КАК Периоды
        ЛЕВОЕ СОЕДИНЕНИЕ Цены КАК Цены
        ПО Периоды.Период >= Цены.Период

СГРУППИРОВАТЬ ПО
    Периоды.Период
;

////////////////////////////////////////////////////////////////////////////////
// результат
ВЫБРАТЬ
    ППЦ.Период,
    Цены.Цена_1,
    Цены.Цена_2
ИЗ
    ППЦ КАК ППЦ
        ЛЕВОЕ СОЕДИНЕНИЕ Цены КАК Цены
        ПО ППЦ.ПериодЦены = Цены.Период