Имя: Пароль:
1C
1C 7.7
v7: Отбор Справочника-в-Справочнике.
,
0 Damash
 
03.05.12
13:14
1С: 7.7 SQL (компонента БУ)
Есть СпрАвтор и есть СпрКнига
У СпрКнига есть Реквизит=СпрАвтор.
Как можно максимально быстро определить количество Книг определенного Автора на складах.

Вариант такой медленный - не устраивает!!!

Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса = "
   |Обрабатывать НеПомеченныеНаУдаление;
   |Книга = Справочник.Книга.ТекущийЭлемент;
   |Группировка Книга без Групп;
   |Условие(Книга.Автор=Автор);
   |";
   Если Запрос.Выполнить(ТекстЗапроса) = 1 Тогда
       Остаток=0;
       Пока Запрос.Группировка("Книга")=1 Цикл
           Остаток=Остаток+БухИтоги.СКД("40.1","К",,Запрос.Книга,Склад);    
       КонецЦикла;    
   КонецЕсли;
1 Ёпрст
 
03.05.12
13:19
|Обрабатывать НеПомеченныеНаУдаление;
   |Автор = Книга.Автор;
   |Книга = Справочник.Книга.ТекущийЭлемент;
   |Группировка Книга без Групп;
   |Условие(Автор = ВыбАвтор);
2 Ёпрст
 
03.05.12
13:20
+1
   |Автор = Справочник.Книга.Автор;
3 ДенисЧ
 
03.05.12
13:20
ТекстЗапроса = "
   |Обрабатывать НеПомеченныеНаУдаление;
   |Книга = Справочник.Книга.ТекущийЭлемент;
|_Автор = Справочник.Книга.Автор;
   |Группировка Книга без Групп;
   |Условие(_Автор=Автор);
   |";

Так быстрее будет.

А запрос вообще можно один раз сделать...
4 Ёпрст
 
03.05.12
13:20
Хотя, для этой цели запрос чорный не нужен, всё и так есть в БИ
5 Damash
 
03.05.12
13:22
от цикла - я так понимаю никак не уйти, да?
6 Ёпрст
 
03.05.12
13:22
(5) еще как уйти.
7 Damash
 
03.05.12
13:27
(6) и как? через БухИтоги.Запрос?
8 Ёпрст
 
03.05.12
13:29
(7) вестимо + пихать список значений в субконто
9 Ёпрст
 
03.05.12
13:29
для фильтра
10 Damash
 
03.05.12
13:32
(9) хм
сейчас попробую
11 Damash
 
03.05.12
13:37
а не увеличит ли это время работы?
Запрос + Выгрузка ТЗ + Выгрузка СЗ + БухИт.Запрос
12 viktor_vv
 
03.05.12
13:40
(11) А ты думаешь БухИтоги.СКД() в цикле это быстрее будет ? Сомневаюсь.
13 viktor_vv
 
03.05.12
13:45
Можешь еще попробовать поставить отбор на реквизите Автор и через ВыбратьЭлементыПоРеквизиту заполнять СЗ. Может быстрее будет.
14 Damash
 
03.05.12
19:08
Спасибо, Viktor_vv
твой способ оказался в моем случае самый быстрый.
Независимо от того, куда вы едете — это в гору и против ветра!