Имя: Пароль:
1C
1С v8
СКД зависает отчет на вложеном запросе
,
0 2307861c
 
07.08.11
16:34
Почему может зависать такой запрос?

ВЫБРАТЬ
   ВложенныйЗапрос.Здание КАК Здание,
   ВложенныйЗапрос.ПлощадьЗдания КАК ПлощадьЗдания,
   0 КАК Процент,
   VKSOFT_ПомещенияЗданий.Ссылка КАК Помещение,
   VKSOFT_ПомещенияЗданий.Площадь КАК ПлощадьПомещения
ИЗ
   (ВЫБРАТЬ
       КВП_Здания.Ссылка КАК Здание,
       VKSOFT_ПомещенияЗданий.Площадь КАК ПлощадьЗдания
   ИЗ
       Справочник.КВП_Здания КАК КВП_Здания
           ЛЕВОЕ СОЕДИНЕНИЕ Справочник.VKSOFT_ПомещенияЗданий КАК VKSOFT_ПомещенияЗданий
           ПО КВП_Здания.Ссылка = VKSOFT_ПомещенияЗданий.Владелец
   ГДЕ
       VKSOFT_ПомещенияЗданий.Переданно = ЗНАЧЕНИЕ(Перечисление.ФактПередачи.Да)) КАК ВложенныйЗапрос
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.VKSOFT_ПомещенияЗданий КАК VKSOFT_ПомещенияЗданий
       ПО ВложенныйЗапрос.Здание = VKSOFT_ПомещенияЗданий.Владелец
1 2307861c
 
07.08.11
16:36
Такое подозрение что не нравится что дважды идет обращение к таблице VKSOFT_ПомещенияЗданий
2 Axel2009
 
07.08.11
16:48
а что для вас "повисать"?
3 Ritofc
 
07.08.11
16:54
Перепиши без вложенности. А, вообще, неплохая антиреклама интеграторов.
4 Grusswelle
 
07.08.11
16:55
1-АБ - Дерьмо!
5 2307861c
 
07.08.11
16:55
(3)А как без вложености?
6 Axel2009
 
07.08.11
16:57
(5) т.е. тот факт что у вас идет перемножение записей нисколько не расстраивает, и для вас сервер тупо "повис"?
7 2307861c
 
07.08.11
16:59
(6)Предложите как сделать по другом?
8 Axel2009
 
07.08.11
17:00
(7) ну хотябы сгруппировать по зданию, и просуммировать площади, чтобы получить площадь здания
9 Ritofc
 
07.08.11
17:01
(5) вот ждал я этого вопроса :)

ВЫБРАТЬ
       КВП_Здания.Ссылка КАК Здание,
       VKSOFT_ПомещенияЗданий.Площадь КАК ПлощадьЗдания
       0 КАК Процент,
       VKSOFT_ПомещенияЗданий.Ссылка КАК Помещение,
       VKSOFT_ПомещенияЗданий.Площадь КАК ПлощадьПомещения
   ИЗ
       Справочник.КВП_Здания КАК КВП_Здания
           ЛЕВОЕ СОЕДИНЕНИЕ Справочник.VKSOFT_ПомещенияЗданий КАК VKSOFT_ПомещенияЗданий
           ПО КВП_Здания.Ссылка = VKSOFT_ПомещенияЗданий.Владелец
   ГДЕ
       VKSOFT_ПомещенияЗданий.Переданно = ЗНАЧЕНИЕ(Перечисление.ФактПередачи.Да)


Именно приведенный пример можно переделать так.

(6) бесполезно, я с "ихним братом" не первый день работаю, там во главе стола "бизнес-логика, а технари ее все равно не  поймут" ;)
10 2307861c
 
07.08.11
17:06
(9)Да только я так пробовал и не получилось.  Мне нужно высчитать процент площади помещения от площади здания. Но у нас по группировкам площадь здания мы получим только посчле прохода всех помещений. Или я неправильно понимаю?
11 Ritofc
 
07.08.11
17:06
(10) тогда запрос в (1) некорректен :)
12 2307861c
 
07.08.11
17:07
(11) Процент я считаю через закладку ресурс где прописываю Сумма(ПлощадьПомещения) /(Сумма(ПлощадьЗдания)/100)
13 Axel2009
 
07.08.11
17:08
ВЫБРАТЬ
       КВП_Здания.Ссылка КАК Здание,
       ПлощадиЗданий.ПлощадьЗдания КАК ПлощадьЗдания,
       VKSOFT_ПомещенияЗданий.ПлощадьПомещения / ПлощадиЗданий.ПлощадьЗдания КАК Процент,
       VKSOFT_ПомещенияЗданий.Ссылка КАК Помещение,
       VKSOFT_ПомещенияЗданий.Площадь КАК ПлощадьПомещения
   ИЗ
       Справочник.КВП_Здания КАК КВП_Здания
           ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ VKSOFT_ПомещенияЗданий.Владелец КАК Здание, СУММА(VKSOFT_ПомещенияЗданий.Площадь) КАК ПлощадьЗдания ИЗ Справочник.VKSOFT_ПомещенияЗданий
ГДЕ
       VKSOFT_ПомещенияЗданий.Переданно = ЗНАЧЕНИЕ(Перечисление.ФактПередачи.Да)
СГРУППИРОВАТЬ ПО VKSOFT_ПомещенияЗданий.Владелец) КАК ПлощадиЗданий
ПО КВП_Здания.Ссылка = ПлощадиЗданий.Здание
           ЛЕВОЕ СОЕДИНЕНИЕ Справочник.VKSOFT_ПомещенияЗданий КАК VKSOFT_ПомещенияЗданий
           ПО КВП_Здания.Ссылка = VKSOFT_ПомещенияЗданий.Владелец
14 Axel2009
 
07.08.11
17:08
(10) значит бросьте это дело, писание запросов
15 2307861c
 
07.08.11
17:10
(13)Ну ваш запрос вобще с ошибкой
16 Axel2009
 
07.08.11
17:10
(12) на кошках сначала надо тренироваться, а не писать бизнес логику для вещей, которые потом на рынок выходят.
17 2307861c
 
07.08.11
17:10
(13)С елементарной
18 Axel2009
 
07.08.11
17:11
(17) т.е. у меня есть все все базульки, на которых я могу потренироваться?
у вас в голове даже элементарной логики нету. а пишите запросы.
19 Ritofc
 
07.08.11
17:13
(13) ну, вот... развлекуха закончена, я собирался до матча за Суперкубок потроллить в этой теме :(

(17) Исправь "елементарную" ошибку, поставь спел чекер, разберись с основами, у тебя логика в этом запросе как у сантехника-проктолога.
20 Axel2009
 
07.08.11
17:14
(19) да я думаю еще натроллишься с "елементарной" ошибкой. еще на 100постов
21 IronDemon
 
07.08.11
18:05
Сделай через временную таблицу и пакетный запрос.