Имя: Пароль:
1C
 
Запрос в цикле.
,
0 Nuobu
 
09.02.15
16:01
Доброго времени суток.
Хотел узнать, у кого какие случаи бывали при использовании запроса в цикле.
Тоесть я не хочу, в принципе, узнавать плохо это или нормально, использовать запрос в цикле, а узнать случаи из практики, где это реально потребовалось.
Ну и, естественно, разьяснить, почему именно так.
1 shuhard
 
09.02.15
16:04
(0) бывали у всех
запрет условный
если нужно чтобы работало сейчас - используй
2 John83
 
09.02.15
16:04
например при сложном алгоритме.
Можно было бы и в запросе сделать, но потом слишком сложно разобраться, что и зачем.
3 Nuobu
 
09.02.15
16:07
А можно, пожалуйста случаю, когда по-другому - ну просто никак.
Например: задача банкомата не решается без запроса в цикле.
4 Deon
 
09.02.15
16:09
Перепроведение документов - это цикл, в котором куча запросов )
5 kumena
 
09.02.15
16:10
вообще нельзя, но если очень хочется то можно! (с) народ
6 Nuobu
 
09.02.15
16:11
(5) А можно пример, где без запроса в цикле у Вас не получилось выполнить задачу.
7 shuhard
 
09.02.15
16:11
(3) тебе выписать от форума бумагу с печатью ?
8 Krabobor
 
09.02.15
16:12
(0) в принципе нет ситуации в которой нельзя было бы заменить запрос в цикле на другую конструкцию. но все иногда делают.

Делал при стартовом переносе куевой кучи данных. быстродействие было не важно, и сделать надо было быстро.
9 Garykom
 
гуру
09.02.15
16:12
(0) реально можно, но нежелательно ну или хотя бы порциями или сначала запрос, а потом обработка
10 Nuobu
 
09.02.15
16:14
(8) (9) А можно пример?
В моей практике это была задача про банкоматы.
Когда есть банкоматы, есть запрос на определённые суммы и есть остатки валют в банкоматах.
И без запроса в цикле я обойтись не смог.
11 shuhard
 
09.02.15
16:14
(8)[ в принципе нет ситуации в которой нельзя было бы заменить запрос в цикле на другую конструкцию]
сомнительное утверждение, крайне
12 Nuobu
 
09.02.15
16:14
(11) Согласен.
13 Garykom
 
гуру
09.02.15
16:17
(6) циклическое удаление объектов из базы, надо удалить один и чтобы он удалился так же надо удалить все которые его затрагивают

без запросов (для ускорения поиска ссылок) в цикле (сначала один объект, потом в список добавляются все связанные и идет проход по этому списку) нереально легко сделать и чтобы шустро работало без этого "поиска ссылок"

т.е. если ищем запросом то знаем что он вернет (какие типы объектов) и можно легко сделать обработку того что вернул запрос
14 Serg_1960
 
09.02.15
16:18
(0) Типовая УПП, заполнение в документах таблицы "Материалы" по списку таблицы "Продукция" с использование спецификаций - там запросов в цикле - вагон и маленькая тележка.

Хе, хе и там ещё круче есть - не просто запросы "в цикле", в цикле циклы с запросами :) (получение аналогов основных материалов спецификаций)
15 Heckfy
 
09.02.15
16:18
По сабжу у меня есть: Тонкий клиент. Для отображения хода выполнения в интерактивном режиме (заполнение индикатора на форме).
16 John83
 
09.02.15
16:29
(13) (14) можно просто было написать - рекурсия ;)
17 Garykom
 
гуру
09.02.15
16:31
(16) ну да, рекурсивный запрос это запрос в цикле ))
18 Лефмихалыч
 
09.02.15
16:40
(0) в общем случае это катастрофическое падение быстродействия и избыточный трафик. Но бывают случаи, когда иначе ни как. Но это редко.
19 Лефмихалыч
 
09.02.15
16:43
случаи из практики: некая обработка должна заполнить документ по данным из csv-файла. Обработку запустили, файл на полторы тысячи строк скормили, обработка тужилась пару часов и сдохла, обожравшись памятью.
После того, как ликвидировали запрос в цикле и прочий говнокод, тот же файл обработка успешно обмаслала за полминуты.
20 Nuobu
 
09.02.15
16:58
(19) Не, ну когда плохой код, это понятно.
Я сам против такого.
21 Лефмихалыч
 
09.02.15
17:03
(20) основное время там уходило на херову тучу Запрос.Выполнить() идущих ПОДРЯД ВНУТРИ цикла, остальное говнище вносило от силы 10% в общее уныние
22 Nuobu
 
09.02.15
17:04
(15) Есть возможность обойти это?
Чтобы что-то выполнялось на сервере, а процесс выполнения, не важно каким способом, отображался для пользователя?
23 боксер
 
09.02.15
17:05
(0)все типовые так работают
24 Heckfy
 
09.02.15
17:07
(22) Штатно нет. Можно извратиться конечно...
25 Лефмихалыч
 
09.02.15
17:10
(22) а надо ли это обходить? ведь по сути любая обработка ожидания - это запрос в цикле. Это штатный механизм и тут просто нужно кодить, воткнув голову в розетку с полным пониманием ,что ты делаешь и как это отражается на общей производительности системы
26 Nuobu
 
09.02.15
17:20
(25) А какой есть способ показать процесс выполнения?
27 H A D G E H O G s
 
09.02.15
17:23
(0)

Выборка порциями больших данных, обход родителей элемента справочника.

Во всех остальных случаях запроса в цикле быть не должно.
28 Ndochp
 
09.02.15
17:24
(26) А ты рассчитать его можешь, процесс этот? Или только 0% - 100%?
Квери аналайзер, блин, скулевый выводи со списком текущих запросов и расчетом плана выполнения. (или как там дебаггер у MSSQL называется?
29 Heckfy
 
09.02.15
17:32
Сам не тестил, но вот один из извратов: http://infostart.ru/public/200861/
30 ДемонМаксвелла
 
09.02.15
17:36
(0) вызов многих типовых функций в цикле  - например определение спецификации по умолчанию - это по сути запрос в цикле. В итоге старался всё оптимизировать до одного запроса.
31 Heckfy
 
09.02.15
17:36
(30) И?? Сервак упал по нехватке памяти? :)
32 ДемонМаксвелла
 
09.02.15
17:39
(31) нет. отчет вначале выполнялся пять минут, потом 20 секунд
33 igork1966
 
09.02.15
17:44
(0) Единственный раз столкнулся с падением запроса на 32битном сервере (недостаток памяти, очень большой результат запроса)... пришлось кусками выбирать данные...
34 GROOVY
 
09.02.15
17:58
Получение базы для произвольных видов расчета и произвольных приоритетов не сделать без запроса в цикле.
35 SUA
 
09.02.15
18:45
хитрое соединение подневной таблицы остатки и обороты (+ ТЧ документа) с собой (2ч - объем 60Кх60Кх14)
заменено на запрос в цикле по дням (15мин - объем 60К х14раз)
как-то так
36 SUA
 
09.02.15
18:46
точнее не 60К а (600-900К)даже
37 Адинэснег
 
09.02.15
18:48
(35) кривой запрос
38 SUA
 
09.02.15
18:54
(37)а надо
подневные остатки конечно можно и немного более "легким" методом вытащить, чем было реализовано, но по быстродействию примерно то же и выйдет
39 SUA
 
09.02.15
18:55
+ общее время рег.задания указал а не запроса, каюсь
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn