|
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
твой способ оказался в моем случае самый быстрый.
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший