Имя: Пароль:
1C
1С v8
запрос в цикле
0 wwwqwert2014
 
26.06.13
12:49
Есть цикл:
Для Каждого ТекСтрокаПроекты Из Проекты Цикл
       Движение = Движения.Взаиморасчеты.Добавить();
       Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
       Движение.Период = Дата;
       Движение.Накладная= Документы.ПриходнаяНакладная.ПустаяСсылка();
       Движение.Сумма = Сумма;
   КонецЦикла;

Насколько я знаю, обращение через точку с использованием объектной модели доступа к данным эквивалентно запросу и такие вещи нельзя в цикле делать из-за тормозов.
Движение.Накладная= Документы.ПриходнаяНакладная.ПустаяСсылка();
Здесь тоже запрос будет? Как оптимизировать? И надо ли? вынести за цикл СсылкаНаДокумент = Документы.ПриходнаяНакладная.ПустаяСсылка(); и внутри уже с этой переменной работать?
1 1Cv8_accepted
 
26.06.13
12:55
(0) В SQL-варианте всё делается запросами. Разница только - кладёшь ли ты данные в базу или берёшь их оттуда. В данном случае код вполне себе нормальный. Относительно. Ну можно ещё оптимизировать таблицей движений, как в типовых.
2 Xatori
 
26.06.13
12:55
Выносить нужно всё что возможно за рамки цикла, зачем n-раз получать какое то значение, если оно не изменится.
3 H A D G E H O G s
 
26.06.13
12:56
(0) Нет, не запрос.
4 H A D G E H O G s
 
26.06.13
12:56
(0) Выносить имеет смысл только в COM соединении.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.