Имя: Пароль:
1C
1С v8
Оптимизация запроса
0 Cmyk32
 
08.03.12
17:58
Добрый день!
Решила переписать запрос, используя пакеты.
При создании формы нового элемента вызывается процедура заполнения табличной части по принципу объединения данных из двух регистров:

Регистр 1:
СтатьяБюджета Номенклатура СуммаПоВнутреннемуБюджету

Регистр 2:
СтатьяБюджета Номенклатура СуммаПоВнешнемуБюджету

Табличная часть:
СтатьяБюджета Номенклатура СуммаПоВнутреннемуБюджету СуммаПоВнешнемуБюджету

Оптимален ли такой запрос? Или лучше использовать вложенные запросы?

И насколько "красиво" использовать EстьNULL в подобном контексте?

ВЫБРАТЬ
   ВнутреннийБюджетПроектаОбороты.СтатьяБюджета,
   ВнутреннийБюджетПроектаОбороты.Номенклатура,
   ВнутреннийБюджетПроектаОбороты.СуммаОборот
ПОМЕСТИТЬ ВнутреннийБюджетПроектаОбороты
ИЗ
   РегистрНакопления.ВнутреннийБюджетПроекта.Обороты(, &КонецПериода, , Проект = &Проект) КАК ВнутреннийБюджетПроектаОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВнешнийБюджетПроектаОбороты.СтатьяБюджета,
   ВнешнийБюджетПроектаОбороты.Номенклатура,
   ВнешнийБюджетПроектаОбороты.СуммаОборот
ПОМЕСТИТЬ ВнешнийБюджетПроектаОбороты
ИЗ
   РегистрНакопления.ВнешнийБюджетПроекта.Обороты(, &КонецПериода, , Проект = &Проект) КАК ВнешнийБюджетПроектаОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЕСТЬNULL(ВнутреннийБюджетПроектаОбороты.СтатьяБюджета, ВнешнийБюджетПроектаОбороты.СтатьяБюджета) КАК СтатьяБюджета,
   ЕСТЬNULL(ВнутреннийБюджетПроектаОбороты.Номенклатура, ВнешнийБюджетПроектаОбороты.Номенклатура) КАК Номенклатура,
   ВнутреннийБюджетПроектаОбороты.СуммаОборот КАК СуммаВнутреннегоБюджета,
   ВнешнийБюджетПроектаОбороты.СуммаОборот КАК СуммаВнешнегоБюджета
ИЗ
   ВнутреннийБюджетПроектаОбороты КАК ВнутреннийБюджетПроектаОбороты,
   ВнешнийБюджетПроектаОбороты КАК ВнешнийБюджетПроектаОбороты

СГРУППИРОВАТЬ ПО
   ВнутреннийБюджетПроектаОбороты.СуммаОборот,
   ЕСТЬNULL(ВнутреннийБюджетПроектаОбороты.СтатьяБюджета, ВнешнийБюджетПроектаОбороты.СтатьяБюджета),
   ЕСТЬNULL(ВнутреннийБюджетПроектаОбороты.Номенклатура, ВнешнийБюджетПроектаОбороты.Номенклатура),
   ВнешнийБюджетПроектаОбороты.СуммаОборот
1 Cmyk32
 
08.03.12
17:59
(0) + Сгруппировать не нужно было
2 zak555
 
08.03.12
18:02
> Решила переписать запрос...

все девочки сегодня решили напиться : с 8ым мартом !
3 Cmyk32
 
08.03.12
18:02
Вопрос снят! Туплю. Обойдусь одним запросом из одного соединения.
4 Cmyk32
 
08.03.12
18:02
(2) Еще не вечер)
5 pumbaEO
 
08.03.12
18:03
Вопрос можно? Обороты всегда будут от рождения Христа подгружаться?
6 Cmyk32
 
08.03.12
18:05
(5) В этом примере да. По проекту - все обороты.
7 Cmyk32
 
08.03.12
18:07
Я просто не на том примере решила пакетные запросы испробовать. Здесь достаточно одного соединения.
8 Cmyk32
 
08.03.12
18:17
Есть у кого содержательная статья по пакетным запросам? Только не эта: http://chistov.spb.ru/publ/5-1-0-13
9 zak555
 
09.03.12
10:19
(0) такой код работать не будет
10 zak555
 
09.03.12
10:19
вернее не вернёт нужного результата
11 catena
 
09.03.12
10:48
(8)А чем Чистов не устраивает?
12 Cmyk32
 
09.03.12
11:49
(11) Мало
13 catena
 
09.03.12
12:45
(12)Хм... Но это всё... :)
14 МихаилМ
 
09.03.12
17:05
советую не перемножать множества (фактов)
а складывать.

те используйте UNION вместо перемножения.  и не нужны будут карявости ЕСТЬNULL()


полное перемножение - опасная
и редкая операция.


также можно проиндексировать временные таблицы
Основная теорема систематики: Новые системы плодят новые проблемы.