Имя: Пароль:
1C
 
Как повторить выборку не вызывая ее дважды
0 Boroda444
 
22.01.10
10:03
Есть строка
ВыбДокументы = Документы[ИмяДокумента].Выбрать(Начало,Конец);
Как перебрать ВыбДокументы дважды. Сначала узнать кво выбраных документов а потом используя эту же выборку заново перебрать все эти доки по циклу?
1 MRAK
 
22.01.10
10:05
выбирай запросом
2 Boroda444
 
22.01.10
10:06
не хочу - массив за год
3 Boroda444
 
22.01.10
10:06
слишком много будет запросом - хочу дважды выбрать. такое вообще возможно?
типа выборака.Вначало?
4 AndrewKiev
 
22.01.10
10:07
(3) таких методов нету у такой выборки. У выборки с результата запроса есть...
5 MRAK
 
22.01.10
10:08
(3) запрос будет быстрее
6 Boroda444
 
22.01.10
10:09
ок. спасибо за помощь. сделаю запросом
7 AndrewKiev
 
22.01.10
10:09
(0) получай количество запросом
8 Boroda444
 
22.01.10
10:09
типа кво запросом а потом выборка?
9 Boroda444
 
22.01.10
10:09
:) по моему это даже лаконичнее.
10 73
 
22.01.10
10:10
(3) К тому же выборка как в (0) динамическая, и не факт, что не изменится...
11 Boroda444
 
22.01.10
10:10
выборака же не тащит все ссылки в память... а кво я просто получу как выбрать различные. Так?
12 MRAK
 
22.01.10
10:10
(8) это изврат))))
13 Boroda444
 
22.01.10
10:10
это свретка - пользователей нет
14 Boroda444
 
22.01.10
10:11
ладно... просто я думаю что если не собирать все 55000 доков в запрос а просто из перебрать будет быстрее
15 Pasha
 
22.01.10
10:12
(2) Разработчики рекомендуют все делать через запрос и нефиг тут выпендриваться
16 H A D G E H O G s
 
22.01.10
10:17
Запрос=новый запрос;
   запрос.Текст=
   "ВЫБРАТЬ ПЕРВЫЕ 1000
   |    Тестирование.Номер,
   |    Тестирование.Ссылка
   |ИЗ
   |    Документ.Тестирование КАК Тестирование
   |ГДЕ
   |    (НЕ Тестирование.Ссылка В (&СписокСсылок))";
   списокссылок=новый СписокЗначений;
   пока истина цикл
       Запрос.УстановитьПараметр("СписокСсылок",СписокСсылок);
       Выборка=Запрос.Выполнить().Выбрать();
       пока Выборка.Следующий() Цикл
           списокссылок.Добавить(Выборка.Ссылка);
       КонецЦикла;
   КонецЦикла;
17 H A D G E H O G s
 
22.01.10
10:17
Даже вот так:

   Запрос=новый запрос;
   запрос.Текст=
   "ВЫБРАТЬ ПЕРВЫЕ 1000
   |    Тестирование.Номер,
   |    Тестирование.Ссылка
   |ИЗ
   |    Документ.Тестирование КАК Тестирование
   |ГДЕ
   |    (НЕ Тестирование.Ссылка В (&СписокСсылок))";
   списокссылок=новый СписокЗначений;
   пока истина цикл
       Запрос.УстановитьПараметр("СписокСсылок",СписокСсылок);
       Выборка=Запрос.Выполнить().Выбрать();
       Если Выборка.Количество()=0 Тогда
           Прервать;
       КонецЕсли;
       
       пока Выборка.Следующий() Цикл
           списокссылок.Добавить(Выборка.Ссылка);
       КонецЦикла;
   КонецЦикла;
18 Mitriy
 
22.01.10
10:19
(0) Выборка.Сбросить()
19 Mitriy
 
22.01.10
10:23
(18) млин... пардон за невнимательность...
20 H A D G E H O G s
 
22.01.10
10:23
(0) Узнать количество:
   |    СУММА(1) КАК КоличествоДокументов
   |ИЗ
   |    Документ.Тестирование КАК Тестирование"
21 mikecool
 
22.01.10
10:29
(20) тогда уж может лучше
   |    СУММА(*) КАК КоличествоДокументов
   |ИЗ
   |    Документ.Тестирование КАК Тестирование"
? или однобоко?
22 MRAK
 
22.01.10
10:30
(17) это ты так издеваешься?
23 H A D G E H O G s
 
22.01.10
10:42
(22)
Ни капли.
Поясни.
24 H A D G E H O G s
 
22.01.10
10:42
(21) Нет
25 Mitriy
 
22.01.10
10:44
(23) у тебя спискоссылок за циклом создается...
26 H A D G E H O G s
 
22.01.10
10:46
(25) И?
27 AndrewKiev
 
22.01.10
10:46
(23) и (25) если количество элементов в выобрке будет не ноль - она будет вечна. а список правильно создавать за циклом, так как циклом он его наполняет
28 Mitriy
 
22.01.10
10:47
(26) катавасия какая-то получатся...
29 H A D G E H O G s
 
22.01.10
10:48
(27) <<она будет вечна.>>

Прикалываешься?
30 H A D G E H O G s
 
22.01.10
10:48
(28) Где?
31 Mitriy
 
22.01.10
10:50
(30) мля... все сработает,  мои извинения ))
32 H A D G E H O G s
 
22.01.10
10:50
ППЦ, народ, вы че курите?

Мне даже пришлось проверить, работает алгоритм или нет. Нагнали на меня сомнения...
33 Mitriy
 
22.01.10
10:51
(32) :))
34 AndrewKiev
 
22.01.10
10:52
(32) и (29) сразу не понял глубину мысли, извини ;)
35 agarych
 
22.01.10
10:54
(0) чтобы количество получить просто используй функцию

Выборка.Количество()
36 AndrewKiev
 
22.01.10
10:54
(35) это только для выборки с запроса
37 agarych
 
22.01.10
10:57
(36) ну собственно, я предупредил автора, а то вдруг он два запроса сделает. один для обхода, а второй для получения количества документов.
38 H A D G E H O G s
 
22.01.10
11:00
(37) Так и надо
39 H A D G E H O G s
 
22.01.10
11:00
В случае "псевдодинамической" выборки.
40 Mitriy
 
22.01.10
11:02
(37) третьим будешь...
41 Mitriy
 
22.01.10
11:03
(40)* даже четвертым )
42 Boroda444
 
22.01.10
12:34
а я сделал в конце концов так
Выбрать
док.Ссылка,
Количество(Док.Ссылка)
из Документ.БлаблА как Док
Где Док = блабла
Сгруппировать по
Док.Ссылка
Итоги ПО
Общие
И первую строку в выборке пропускаю - беру из нее количество доков а все остальные строки - то що доктор прописал
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн