Имя: Пароль:
1C
1С v8
Запрос СКД
0 zerat
 
28.08.13
16:33
Добрый день!
Не соображу как в этом запросе заполненное значение показателя "ДневноеПоказание" если допустим в одном из месяцев оно равно нулю, мне нужно получить последнее его заполненное значение.

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

СГРУППИРОВАТЬ ПО
    УПЖКХ_РасчетПриборовУчетаОстаткиИОбороты.Объект,
    УПЖКХ_РасчетПриборовУчетаОстаткиИОбороты.Услуга,
    УПЖКХ_РасчетПриборовУчетаОстаткиИОбороты.ПериодМесяц,
    КВП_НормыПотребленияУслугЛССрезПоследних.НормаПотребления
1 Basilio
 
28.08.13
16:49
Если оно равно нулю ты его в регистр не пиши и тогда все будет как надр
2 Basilio
 
28.08.13
16:49
а по старым записям - почикай с нулевыми ДневноеПоказание.
3 zerat
 
28.08.13
17:30
как по старым записям...не пойму
4 Fram
 
28.08.13
17:52
... РегистрСведений.КВП_ПоказанияСчетчиков.СрезПоследних(&КонецПериода, ДневноеПоказание <> 0) ...
5 Basilio
 
28.08.13
17:54
ДневноеПоказание единственный ресурс?
6 zerat
 
28.08.13
17:56
(5) да единственный, и он пустой в том случае если не было никаких показаний в этом месяце, вот мне и нужно если не было показаний брать последнее заполненное
7 Fram
 
28.08.13
17:56
(5) Вроде из этого регистра больше ничего не берет
8 Fram
 
28.08.13
17:57
(6) тогда точно (4)
9 ДемонМаксвелла
 
28.08.13
18:29
(8) неверно
срез последних тут вообще не подойдет. Все движения надо брать.
10 Fram
 
28.08.13
18:59
(9) Ну и почему неверно? Прежде чем сляпать срез последних движок платформы выполняет условие в скобках, т.е. уберет все записи где ДневноеПоказание <> 0
11 zerat
 
28.08.13
23:14
так как сделать через срез последних? как в запросе написать??
12 ДемонМаксвелла
 
29.08.13
00:01
(10) Да, ты прав. Думал в другом порядке выполняется.
13 zerat
 
29.08.13
10:50
не получается
вот запрос
ВЫБРАТЬ
    УПЖКХ_РасчетПриборовУчетаОстаткиИОбороты.Объект,
    УПЖКХ_РасчетПриборовУчетаОстаткиИОбороты.Услуга,
    СУММА(УПЖКХ_РасчетПриборовУчетаОстаткиИОбороты.ПоказаниеПриход) КАК ПоказаниеПриход,
    УПЖКХ_РасчетПриборовУчетаОстаткиИОбороты.ПериодМесяц КАК ПериодМесяц,
    СУММА(КВП_ПоказанияСчетчиков.ДневноеПоказание) КАК ДневноеПоказание,
    СУММА(КВП_НормыПотребленияУслугЛССрезПоследних.НормаПотребления.Размер) КАК НормаПотребленияРазмер
ИЗ
    РегистрНакопления.УПЖКХ_РасчетПриборовУчета.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , {(Объект В ИЕРАРХИИ (&ЛицевойСчет))}) КАК УПЖКХ_РасчетПриборовУчетаОстаткиИОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КВП_НормыПотребленияУслугЛС.СрезПоследних(&КонецПериода, ) КАК КВП_НормыПотребленияУслугЛССрезПоследних
        ПО УПЖКХ_РасчетПриборовУчетаОстаткиИОбороты.Услуга = КВП_НормыПотребленияУслугЛССрезПоследних.Услуга
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КВП_ПоказанияСчетчиков КАК КВП_ПоказанияСчетчиков
        ПО УПЖКХ_РасчетПриборовУчетаОстаткиИОбороты.Счетчик = КВП_ПоказанияСчетчиков.Счетчик
            И (КВП_ПоказанияСчетчиков.Период = УПЖКХ_РасчетПриборовУчетаОстаткиИОбороты.ПериодДень)
            И (КВП_ПоказанияСчетчиков.ДневноеПоказание <> 0)

СГРУППИРОВАТЬ ПО
    УПЖКХ_РасчетПриборовУчетаОстаткиИОбороты.Объект,
    УПЖКХ_РасчетПриборовУчетаОстаткиИОбороты.Услуга,
    УПЖКХ_РасчетПриборовУчетаОстаткиИОбороты.ПериодМесяц
14 zerat
 
29.08.13
11:35
ап ап
15 Fram
 
29.08.13
13:44
(13) я разве так тебе написал?
16 Basilio
 
29.08.13
13:54
(13) в параметрах виртульной таблицы условие  ДневноеПоказание <> 0 ставь
17 zerat
 
29.08.13
14:23
(15) ну вот этот запрос берет данные на каждый месяц, условие поставил там, но не работает
18 Fram
 
29.08.13
15:16
(17) поставь условие как в (4)
а И (КВП_ПоказанияСчетчиков.ДневноеПоказание <> 0) убери
19 zerat
 
29.08.13
15:42
(18) у меня там не виртуальная таблица берется
20 Fram
 
29.08.13
16:01
(19) сделай (0) + (4)
21 zerat
 
29.08.13
16:37
(20)  тогда не работает срез на каждую дату
22 Fram
 
29.08.13
17:19
(21) Нууу.. это уже другой вопрос. Про это в (0) ничего не было
23 zerat
 
29.08.13
17:27
(22) )))) так что мне делать
24 ДемонМаксвелла
 
30.08.13
09:00
тебе вначале нужно получить таблицу, в которой полный набор измерений и период (максимальный период с ненулевой записью) - группируешь по измерениям, от периода берешь Максимум, ресурсы тут не нужны. Потом к этой таблице левым соединением по всем измерениям и периоду присоединяешь таблицу движений, и из неё берешь значения ресурсов.
25 zerat
 
30.08.13
09:33
(24) написано красиво)) вот только как это на моем запросе сделать подскажи пожалуйста...
26 ДемонМаксвелла
 
30.08.13
09:42
(25) мне за это не платят.
27 zerat
 
30.08.13
10:52
(26) ради идеи уже не катит?)
28 ДемонМаксвелла
 
30.08.13
10:57
(27) а тебе не стыдно попрошайничать?
29 zerat
 
30.08.13
11:04
(28) я прошу всего немного помощи, так как бьюсь с этой фигней уже долгое время...