Имя: Пароль:
1C
1С v8
Как правильно составить запрос
,
0 егаис
 
31.05.17
09:42
Звпрос должен связывать 3 РС: лицевые счета, данные помещения лицевых счетов и еще один - доли лицевых счетов (для коммунальных квартир).
Ниже запрос по первым двум регистрам. Как учесть в ресурсах "площади" эти доли? РС называется КВП_РазмерыДолейЛицевыхСчетов и он заполняется только при наличии долей по л/с.

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

СГРУППИРОВАТЬ ПО
    КВП_ЛицевыеСчетаСрезПоследних.ЛицевойСчет,
    КВП_ЛицевыеСчетаСрезПоследних.Объект.Владелец
1 PCcomCat
 
31.05.17
09:49
Доля по отношению к общей площади?
2 егаис
 
31.05.17
09:54
к общей и расчетной
3 rabbidX
 
31.05.17
09:59
А в чем проблема? Добавьте регистр, домножьте площади на доли.
4 егаис
 
31.05.17
10:03
(3) доли только по ЛС, где есть эти доли
Как домножать на пустое значение?
5 егаис
 
31.05.17
10:06
кв1 Иванов доля 1/2
кв1 Петров доля 1/2
кв2 Сидоров
кв3 Пупкин
...
6 h-sp
 
31.05.17
10:08
(5) ну условие вставьте, если пустое, значит не домножать. Что-то странные вопросы задаете.
7 егаис
 
31.05.17
10:12
(6) туплю, можно примером

добавляем в запрос
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КВП_РазмерыДолейЛицевыхСчетов.СрезПоследних(&Период, ) КАК КВП_РазмерыДолейЛицевыхСчетовСрезПоследних
        ПО КВП_РазмерыДолейЛицевыхСчетовСрезПоследних.ЛицевойСчет = КВП_ЛицевыеСчетаСрезПоследних.ЛицевойСчет

дальше?
8 h-sp
 
31.05.17
10:18
(7) ну, сами напишите, а мы поправим, неужели читать еще портянку эту.
9 dezss
 
31.05.17
10:23
(7) Выбор Когда Доля Есть NuLL
          Тогда Полное
          Иначе Полное/Доля
    Конец
10 егаис
 
31.05.17
10:26
(8), (9) во я тупанул
    СУММА(ВЫБОР
            КОГДА КВП_РазмерыДолейЛицевыхСчетовСрезПоследних.ДоляЗнаменатель = 0
                    ИЛИ КВП_РазмерыДолейЛицевыхСчетовСрезПоследних.ДоляЗнаменатель ЕСТЬ NULL
                ТОГДА Площади.ОбщаяПлощадь
            ИНАЧЕ Площади.ОбщаяПлощадь * КВП_РазмерыДолейЛицевыхСчетовСрезПоследних.ДоляЧислитель / КВП_РазмерыДолейЛицевыхСчетовСрезПоследних.ДоляЗнаменатель
        КОНЕЦ) КАК ОбщаяПлощадь,


спасибо
2 + 2 = 3.9999999999999999999999999999999...