Имя: Пароль:
1C
1С v8
Как оптимальнее написать запрос
0 yabes
 
21.06.12
12:07
Конфигурация Бухгалтерия КОРП. Подскажите, необходимо выводить обороты по всем филиалам за исключением головной организации. Я сделал это через пакетные запросы, наложив для виртуальной таблицы условие по организации. Как делать оптимально?
ВЫБРАТЬ
   Организации.Ссылка КАК Филиал
ПОМЕСТИТЬ Филиалы
ИЗ
   Справочник.Организации КАК Организации
ГДЕ
   Организации.Код <> "000000001"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ХозрасчетныйОбороты.Организация,
   ХозрасчетныйОбороты.СуммаОборот
ИЗ
   РегистрБухгалтерии.Хозрасчетный.Обороты(
           &НачалоПериода,
           &КонецПериода,
           ,
           Счет В ИЕРАРХИИ (&Счет),
           ,
           Организация В
               (ВЫБРАТЬ
                   Филиалы.Филиал
               ИЗ
                   Филиалы КАК Филиалы),
           ,
           ) КАК ХозрасчетныйОбороты
1 Cube
 
21.06.12
12:09
А что, отборы положить сразу не модно?

ВЫБРАТЬ
   ХозрасчетныйОбороты.Организация,
   ХозрасчетныйОбороты.СуммаОборот
ИЗ
   РегистрБухгалтерии.Хозрасчетный.Обороты(
           &НачалоПериода,
           &КонецПериода,
           ,
           Счет В ИЕРАРХИИ (&Счет),
           ,
           Организация.Код <> "000000001",
           ,
           ) КАК ХозрасчетныйОбороты
2 Maxus43
 
21.06.12
12:10
(1) так точно не модно)
(0) ссылку в запрос (1) передавайц
3 Yea-Yea
 
21.06.12
12:10
имхо разбиение на два запроса тут неоправданно. ставь условие <> в виртуальной таблице.
З.Ы. и как минимум нужно было проиндексировать реультат в первом запросе
4 yabes
 
21.06.12
12:11
(1)(2)(3), Да, что-то я загнул!))))))) Спасибо!
5 Азазелло
 
21.06.12
12:12
(1) Обращение внутри виртуальной таблицы к реквизитам измерений - мало того, что не модно, так еще и очень просаживает быстродействие. Вариант в (0) вполне оптимален.
6 yabes
 
21.06.12
12:12
(5) ну так как в итоге лучше?)
7 Maxus43
 
21.06.12
12:13
лучше (1) но сравнение НЕ Организация = &орг
8 Yea-Yea
 
21.06.12
12:13
(5) использование реквизита в качестве условия в принципе не оптимально. использовать сразу виртуальную и передавать туда ссылку в качестве параметра
9 PR
 
21.06.12
12:14
(5) Тогда уж
ВЫБРАТЬ
   Организации.Ссылка КАК Филиал
ПОМЕСТИТЬ Филиалы
ИЗ
   Справочник.Организации КАК Организации
ГДЕ
   Организации.Код = "000000001"
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
   ХозрасчетныйОбороты.Организация,
   ХозрасчетныйОбороты.СуммаОборот
ИЗ
   РегистрБухгалтерии.Хозрасчетный.Обороты(
           &НачалоПериода,
           &КонецПериода,
           ,
           Счет В ИЕРАРХИИ (&Счет),
           ,
           НЕ Организация В
               (ВЫБРАТЬ
                   Филиалы.Филиал
               ИЗ
                   Филиалы КАК Филиалы),
           ,
           ) КАК ХозрасчетныйОбороты

А еще лучше не выпендриваться и передать организацию параметром :))
10 Yea-Yea
 
21.06.12
12:15
(9) кстати одна из рекомендаций при подготовке к эксперту - не использовать НЕ в условиях
11 Cube
 
21.06.12
12:16
(2), (5) - у, налетели!!!)) Я показал ПРИМЕР с минимальными отличиями от исходника, чтобы выделить ГЛАВНОЕ! А то началось тут... :)
12 Maxus43
 
21.06.12
12:16
(10) <> юзать? надо кстати на досуге на план посмотреть
13 Maxus43
 
21.06.12
12:16
(11) не ожидал чтоле?)
14 Yea-Yea
 
21.06.12
12:16
(12) типа того
15 yabes
 
21.06.12
12:20
Ну а если бы список организаций брался, например, из табличной части документа? Тогда через пакетный запрос?
16 Maxus43
 
21.06.12
12:21
(15) или соединением, от конкретной ситуации зависит, но скорей всего да, пакетным
17 Yea-Yea
 
21.06.12
12:22
(15) да. и не забывай индексирование
18 yabes
 
21.06.12
12:28
(17) Поясни, пожалуйста!
19 Maxus43
 
21.06.12
12:29
если дело касается организаций - не факт что будет профит от индексирования. их как правило мало
20 yabes
 
21.06.12
12:54
А как индексирование делать?
21 Yea-Yea
 
21.06.12
13:21
(19) согласен
(20) в конструкторе запросов закладка индексирование
22 Buster007
 
21.06.12
13:24
(10) у тебя есть эксперт?
23 Азазелло
 
21.06.12
13:31
(10) а как тогда проверять на то, что ссылка не является NULL ом?
24 HEKPOH
 
21.06.12
14:05
(23) приводить к строке и использовать <> )))))))))))
25 Азазелло
 
21.06.12
14:08
(24) бгг :))))