Имя: Пароль:
1C
1С v8
Запросы в цикле
0 mic_net
 
10.09.12
07:48
Доброго времени суток.
Одной из грубых ошибок конкурирования на платформе 1С является использования запросов в циклах. Например, перебирая в цикле контрагентов, выполняем запрос к остаткам из кредиторской задолженности. Как быть в следующей ситуации: например, пользователь желает, что бы в отчет попали все документы реализации за период, но выводились только итоговые суммы документов, рассчитанные по заданному им типам цен (т.е. вид цены номенклатуры указывалась им самим). И к тому, же значение цены могло меняться в течение периода (повышение/понижение). Каковы возможны методы решения таких задач?
1 Oleg_Kag
 
10.09.12
07:53
Указанная задача решается запросом БЕЗ цикла
2 SanGvin
 
10.09.12
07:54
Можно без цикла сделать. Во временную таблицу выбирается все из табл. части + ссылка на док. соединяется с таблицей цен = знаем цену , считаем сумму. агрегируем по документу = профит.
3 alextom81
 
10.09.12
08:02
Решается. Но когда надо сделать два запроса к периодическим регистрам сведений (например, ценыноменклатуры, и условияскидокконтрагентов), тогда быстрее отрабатывает запрос к одной таблице реализаций и цен, и потом через "СрезПоследних" - для каждой строки запроса - к реализациям. Не знаю почему, но отрабатывает быстрее
4 Defender aka LINN
 
10.09.12
08:10
(3) О каких размерах выборки идет речь?
5 alextom81
 
10.09.12
08:16
4. Около 1700 реализаций за месяц. Количество периодических регистров сведений с параметрами - 3 (ценыноменклатуры и ещё два добавленых регистра для финансистов: в одном - меняются коэффициенты распределения затрат на доставку по контрагентам - во втором - норма убыли по номенклатуре)
6 Defender aka LINN
 
10.09.12
08:21
(5) Есть мнение, что можно просто один запрос оптимизировать, и все нормально будет.
7 alextom81
 
10.09.12
08:28
(6) Пробовал. Сам по себе запрос к РС с для выбора МАКСИМУМА относительно текущей даты (как определение среза последних на каждую строку документа реализации) - достаточно долго выполняется. Но - 1РС - быстро ,2РС - терпимо. 3РС - уже неприемлимо долго. Возможно, я и не прав, дело было пол-года назад - сейчас если запрос такой сваяю, может и быстрее будет. Должно быть так: две таблицы - одна - со строками реализации - с учетом даты - вторая - с записями регистров сведений, которые мы выбираем во вложенном запросе второй таблицы. Сложность доставляли ВЫБОР КОГДА - при отсутствии записей в регистрах сведений
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн