Имя: Пароль:
1C
1С v8
Задвоение итогов запроса
,
0 Amfiaray
 
25.09.14
07:26
Добрый день!
Есть самописная база 8.3, и отчет там вот с таким запросом:
ВЫБРАТЬ
    ЛицевыеСчета.Владелец КАК Район,
    ЛицевыеСчета.Родитель.Родитель КАК Участок,
    ЛицевыеСчета.Родитель КАК МУчасток,
    ЛицевыеСчета.Ссылка КАК Лицевой,
    ЛицевыеСчета.ДлинаГазопровода КАК ДлинаГазопровода,
    ВЫБОР
        КОГДА ИсторияПодключенияГазовогоОборудованияСрезПоследних.ПодключениеГазовогоОборудования
            ТОГДА ЛицевыеСчета.Ссылка
        ИНАЧЕ NULL
    КОНЕЦ КАК Подключен,
    ВЫБОР
        КОГДА Адреса.ГВС
            ТОГДА ЛицевыеСчета.Ссылка
        ИНАЧЕ NULL
    КОНЕЦ КАК ГВС,
    ЕСТЬNULL(КоличествоПроживающихСрезПоследних.КоличествоПроживающих, 0) КАК КоличествоПроживающих,
    ЕСТЬNULL(ПлощадьОтопленияСрезПоследних.ОбъемОтапливаемойПлощади, 0) КАК ОбъемОтапливаемойПлощади,
    ВЫБОР
        КОГДА ИсторияПодключенияГазовогоОборудованияСрезПоследних.ВидПотребленияГаза = &ВидПотребленияГаза
            ТОГДА ЛицевыеСчета.Ссылка
        ИНАЧЕ NULL
    КОНЕЦ КАК Счетчик,
    ВЫБОР
        КОГДА ИсторияПодключенияГазовогоОборудованияСрезПоследних.ТипСооружения = &ТипСооружения
            ТОГДА ВЫБОР
                    КОГДА ИсторияПодключенияГазовогоОборудованияСрезПоследних.ГазовоеОборудование.ВидПоборудования = &ОборудованиеОтопление
                        ТОГДА ЛицевыеСчета.Ссылка
                    ИНАЧЕ NULL
                КОНЕЦ
        ИНАЧЕ NULL
    КОНЕЦ КАК Отопление,
    ВЫБОР
        КОГДА ИсторияПодключенияГазовогоОборудованияСрезПоследних.ТипСооружения = &ТипСооружения
            ТОГДА ВЫБОР
                    КОГДА ИсторияПодключенияГазовогоОборудованияСрезПоследних.ГазовоеОборудование.ВидПоборудования = &ОборудованиеГазПлита
                        ТОГДА ЛицевыеСчета.Ссылка
                    ИНАЧЕ NULL
                КОНЕЦ
        ИНАЧЕ NULL
    КОНЕЦ КАК ГазПлита,
    ВЫБОР
        КОГДА ИсторияПодключенияГазовогоОборудованияСрезПоследних.ТипСооружения = &ТипСооружения
            ТОГДА ВЫБОР
                    КОГДА ИсторияПодключенияГазовогоОборудованияСрезПоследних.ГазовоеОборудование.ВидПоборудования = &ОборудованиеКолонка
                        ТОГДА ЛицевыеСчета.Ссылка
                    ИНАЧЕ NULL
                КОНЕЦ
        ИНАЧЕ NULL
    КОНЕЦ КАК Колонка,
    ВЫБОР
        КОГДА ИсторияПодключенияГазовогоОборудованияСрезПоследних.ТипСооружения <> &ТипСооружения
            ТОГДА ЛицевыеСчета.Ссылка
        ИНАЧЕ NULL
    КОНЕЦ КАК Баня,
    ВЫБОР
        КОГДА ЛицевыеСчета.ПометкаУдаления
            ТОГДА NULL
        ИНАЧЕ ЛицевыеСчета.Ссылка
    КОНЕЦ КАК КоличествоЛицевых,
    ЛицевыеСчета.Наименование КАК Наименование,
    ЛицевыеСчета.Родитель.Наименование КАК РодительНаименование,
    ЛицевыеСчета.Родитель.Родитель.Наименование КАК РодительРодительНаименование,
    ЛицевыеСчета.Владелец.Наименование КАК ВладелецНаименование
ИЗ
    Справочник.ЛицевыеСчета КАК ЛицевыеСчета
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Адреса КАК Адреса
        ПО ЛицевыеСчета.Адрес = Адреса.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияПодключенияГазовогоОборудования.СрезПоследних(&ДатаСреза, ) КАК ИсторияПодключенияГазовогоОборудованияСрезПоследних
        ПО ЛицевыеСчета.Ссылка = ИсторияПодключенияГазовогоОборудованияСрезПоследних.ЛицевойСчет
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КоличествоПроживающих.СрезПоследних(&ДатаСреза, ) КАК КоличествоПроживающихСрезПоследних
        ПО ЛицевыеСчета.Ссылка = КоличествоПроживающихСрезПоследних.ЛицевойСчет
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПлощадьОтопления.СрезПоследних(&ДатаСреза, ) КАК ПлощадьОтопленияСрезПоследних
        ПО ЛицевыеСчета.Ссылка = ПлощадьОтопленияСрезПоследних.ЛицевойСчет
ГДЕ
    ЛицевыеСчета.ПометкаУдаления = ЛОЖЬ
И    ЛицевыеСчета.Ссылка В ИЕРАРХИИ(&Владелец)
    И ИсторияПодключенияГазовогоОборудованияСрезПоследних.ВидПотребленияГаза = &ВидПотребленияГаза1

УПОРЯДОЧИТЬ ПО
    ВладелецНаименование,
    РодительРодительНаименование,
    РодительНаименование,
    Наименование
          
ИТОГИ
    СУММА(ДлинаГазопровода),
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Подключен),
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ГВС),
    СУММА(КоличествоПроживающих),
    СУММА(ОбъемОтапливаемойПлощади),
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Счетчик),
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Отопление),
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ГазПлита),
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Колонка),
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ КоличествоЛицевых),
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Баня)
ПО
    Район,
    Участок,
    МУчасток,
      Лицевой

Все работает хорошо, кроме того что итоги СУММА(КоличествоПроживающих) задваиваются, подскажите плиз что не так с запросом!
1 Wobland
 
25.09.14
07:40
не все измерения учтены?
2 hhhh
 
25.09.14
07:41
наверно потому что

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


в регистре сведений много измерений, а у вас только связь по одному измерению ЛицевойСчет
3 Amfiaray
 
25.09.14
07:47
(2) Да, Там 5 измерений, но они все являются реквизитами Лицевого счета
4 Amfiaray
 
25.09.14
07:49
Хотя сейчас попробую соединить по всем измерениям, посмотрим что выйдет
5 hhhh
 
25.09.14
08:08
(4) и другие регистры сведений надо смотреть на эту тему. то есть ПлощадьОтопления, ИсторияПодключенияГазовогоОборудования
6 Amfiaray
 
25.09.14
08:09
(5) сделал связи со всеми регистрами по всем измерениям имеющимся в справочнике Лицевые счета, не помогло
7 Amfiaray
 
25.09.14
08:11
т.е. вот так получилось

ИЗ
    Справочник.ЛицевыеСчета КАК ЛицевыеСчета
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Адреса КАК Адреса
        ПО ЛицевыеСчета.Адрес = Адреса.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияПодключенияГазовогоОборудования.СрезПоследних(&ДатаСреза, ) КАК ИсторияПодключенияГазовогоОборудованияСрезПоследних
        ПО ЛицевыеСчета.Ссылка = ИсторияПодключенияГазовогоОборудованияСрезПоследних.ЛицевойСчет
            И ЛицевыеСчета.Владелец.Владелец = ИсторияПодключенияГазовогоОборудованияСрезПоследних.Регион
            И ЛицевыеСчета.Владелец = ИсторияПодключенияГазовогоОборудованияСрезПоследних.Район
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КоличествоПроживающих.СрезПоследних(&ДатаСреза, ) КАК КоличествоПроживающихСрезПоследних
        ПО ЛицевыеСчета.Ссылка = КоличествоПроживающихСрезПоследних.ЛицевойСчет
            И ЛицевыеСчета.Владелец.Владелец = КоличествоПроживающихСрезПоследних.Регион
            И ЛицевыеСчета.Владелец = КоличествоПроживающихСрезПоследних.Район
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПлощадьОтопления.СрезПоследних(&ДатаСреза, ) КАК ПлощадьОтопленияСрезПоследних
        ПО ЛицевыеСчета.Ссылка = ПлощадьОтопленияСрезПоследних.ЛицевойСчет
            И ЛицевыеСчета.Владелец.Владелец = ПлощадьОтопленияСрезПоследних.Регион
            И ЛицевыеСчета.Владелец = ПлощадьОтопленияСрезПоследних.Район
ГДЕ
8 Amfiaray
 
25.09.14
08:12
Остальные измерения нет возможности заполнить из справочника, некоторые потом добавляются в условия, в зависимости от настроек отбора
9 hhhh
 
25.09.14
08:12
пять вроде измерений должно быть, почему три?
10 hhhh
 
25.09.14
08:13
(8) срез последних дает строчку по каждому измерению, если нет возможности, выкидывайте срез последних.
11 Amfiaray
 
25.09.14
08:14
Ошибся в (3), остальные измерения не из справочника Лицевые счета
12 Amfiaray
 
25.09.14
08:14
а если выкину срез последних, он не выдаст все записи по всем периодам?
13 Amfiaray
 
25.09.14
08:25
Убрал Срез последних, не помогло, есть ещё варианты?
14 User_Agronom
 
25.09.14
08:29
(0) Одно из левых соединений даёт две строки.
Какое: найди сам. Все телепаты в отпуску.