|
Правильное построение запросов 1с? Задваивание в результате(( | ☑ | ||
---|---|---|---|---|
0
exiter1
21.02.18
✎
22:47
|
Столкнулся с такой проблемой. Задваивается (затраивается) результат по регистру с площадями. Как правильно выстроить логику?
|ВЫБРАТЬ | СписокЛС.ЛицевойСчет, | СписокЛС.Собственник, | СписокЛС.Помещение, | СписокЛС.Этаж, | СписокЛС.КоличествоКомнат, | СписокЛС.Здание, | СписокЛС.Здание.Многоквартирное КАК ПризнакМКД, | КВП_АдресаСрезПоследних.Город, | КВП_АдресаСрезПоследних.НаселенныйПункт, | КВП_АдресаСрезПоследних.Улица, | КВП_АдресаСрезПоследних.Дом, | КВП_АдресаСрезПоследних.Корпус, | ВЫБОР | КОГДА КВП_ПлощадьПомещенияСрезПоследних.ВидПлощади.Код = ""000000001"" | ТОГДА КВП_ПлощадьПомещенияСрезПоследних.Площадь | ИНАЧЕ 0 | КОНЕЦ КАК ОбщаяПлощадь, | ВЫБОР | КОГДА КВП_ПлощадьПомещенияСрезПоследних.ВидПлощади.Код = ""000000002"" | ТОГДА КВП_ПлощадьПомещенияСрезПоследних.Площадь | ИНАЧЕ 0 | КОНЕЦ КАК ЖилаяПлощадь, | ВЫБОР | КОГДА КВП_ПлощадьПомещенияСрезПоследних.ВидПлощади.Код = ""000000007"" | ТОГДА КВП_ПлощадьПомещенияСрезПоследних.Площадь | ИНАЧЕ 0 | КОНЕЦ КАК ПлощадьЗемельногоУчастка |ИЗ | СписокЛС КАК СписокЛС | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КВП_Адреса.СрезПоследних(&Дата, ) КАК КВП_АдресаСрезПоследних | ПО СписокЛС.Здание = КВП_АдресаСрезПоследних.Объект | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КВП_ПлощадьПомещения.СрезПоследних(&Дата, ) КАК КВП_ПлощадьПомещенияСрезПоследних | ПО СписокЛС.Помещение = КВП_ПлощадьПомещенияСрезПоследних.Объект"; |
|||
1
Cyberhawk
21.02.18
✎
22:49
|
СГРУППИРОВАТЬ ПО?
|
|||
2
exiter1
21.02.18
✎
22:57
|
Добавил группировку к запросу:
|СГРУППИРОВАТЬ ПО | СписокЛС.ЛицевойСчет, | СписокЛС.Помещение, | СписокЛС.Собственник, | СписокЛС.Этаж, | СписокЛС.КоличествоКомнат, | СписокЛС.Здание, | СписокЛС.Здание.Многоквартирное, | КВП_АдресаСрезПоследних.Город, | КВП_АдресаСрезПоследних.НаселенныйПункт, | КВП_АдресаСрезПоследних.Улица, | КВП_АдресаСрезПоследних.Дом, | КВП_АдресаСрезПоследних.Корпус, | ВЫБОР | КОГДА КВП_ПлощадьПомещенияСрезПоследних.ВидПлощади.Код = ""000000001"" | ТОГДА КВП_ПлощадьПомещенияСрезПоследних.Площадь | ИНАЧЕ 0 | КОНЕЦ, | ВЫБОР | КОГДА КВП_ПлощадьПомещенияСрезПоследних.ВидПлощади.Код = ""000000002"" | ТОГДА КВП_ПлощадьПомещенияСрезПоследних.Площадь | ИНАЧЕ 0 | КОНЕЦ, | ВЫБОР | КОГДА КВП_ПлощадьПомещенияСрезПоследних.ВидПлощади.Код = ""000000007"" | ТОГДА КВП_ПлощадьПомещенияСрезПоследних.Площадь | ИНАЧЕ 0 | КОНЕЦ" Ничего не дало(( |
|||
3
youalex
21.02.18
✎
23:04
|
Запрос просто получает данные в том виде, который ты описал в тексте запроса. Те данные, которые у тебя есть в таблицах.
И да, в качестве наводки, может быть - СрезПоследних, в отличие от виртуальных РН - возвращает все возможные сочетания измерений. Вне зависимости от выбранных полей. |
|||
4
exiter1
21.02.18
✎
23:20
|
(3) Вот по РегистрСведений.КВП_ПлощадьПомещения.СрезПоследних и идет дублирование . Тогда как правильно свернуть? Может убрать в условии "ИНАЧЕ 0"?
|
|||
5
youalex
21.02.18
✎
23:25
|
(4) я не знаю) Ну, вытащи его в поля, и сверни по нему. Но оно все равно задублится по нему, что логично.
Сделай отбор в параметрах вт по площади, тогда не задублится. |
|||
6
youalex
21.02.18
✎
23:27
|
Зачем вы вообще площадь воткнули в измерения?
|
|||
7
exiter1
21.02.18
✎
23:28
|
(4) Т.е. обратиться к трем разным вт одного регистра РегистрСведений.КВП_ПлощадьПомещения с разным отбором по площадям?
П.С.: Не я пихал. Это "крутая" конфа от ВДГБ)) Там все не как у всех)) |
|||
8
exiter1
21.02.18
✎
23:41
|
Сделал так:
|ВЫБРАТЬ | СписокЛС.ЛицевойСчет, | СписокЛС.Собственник, | СписокЛС.Помещение, | СписокЛС.Этаж, |..., | ОбщПл.Площадь КАК ОбщаяПлощадь, | ЖилПл.Площадь КАК ЖилаяПлощадь, | ЗемУчПл.Площадь КАК ПлощадьЗемельногоУчастка |ИЗ | СписокЛС КАК СписокЛС | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КВП_Адреса.СрезПоследних(&Дата, ) КАК КВП_АдресаСрезПоследних | ПО СписокЛС.Здание = КВП_АдресаСрезПоследних.Объект | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КВП_ПлощадьПомещения.СрезПоследних(&Дата, ВидПлощади.Код = ""000000001"") КАК ОбщПл | ПО СписокЛС.Помещение = ОбщПл.Объект | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КВП_ПлощадьПомещения.СрезПоследних(&Дата, ВидПлощади.Код = ""000000002"") КАК ЖилПл | ПО СписокЛС.Помещение = ЖилПл.Объект | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КВП_ПлощадьПомещения.СрезПоследних(&Дата, ВидПлощади.Код = ""000000007"") КАК ЗемУчПл | ПО СписокЛС.Помещение = ЗемУчПл.Объект" Все работает. Но есть более элегантное решение? |
|||
9
chelentano
22.02.18
✎
06:49
|
(8) Более элегантного нет. Но я бы сначала сформировал временную таблицу по РС КВП_ПлощадьПомещения сразу для трёх видов площадей, а потом уже с ней бы соединял
|
|||
10
Малыш Джон
22.02.18
✎
07:48
|
(8) Сделай предварительную выборку из срез и добавь поле в неё поле
ВЫБОР КОГДА ВидПлощади.Код = ""000000001" ТОГДА ОбщПл.Объект |
|||
11
Малыш Джон
22.02.18
✎
07:49
|
КОГДА ВидПлощади.Код = ""000000002" ТОГДА ЖилПл.Объект
и т.д. а потом по этому полю соединяй |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |