Имя: Пароль:
1C
1С v8
Виснет простой запрос в цикле 1с 8.2
,
0 nikolay_1987
 
11.07.12
18:01
Добрый день. Следующий код после непродолжительного выполнения вешает 1с
Как правило цикл успевает пройти 10-15 счетов после чего зависает. То есть он зависает не на каком то определенном счете. Самое интересное,  если поместить этот код в Нажатие какой либо кнопки формы, все работает отлично. Зависает если выполняется из "ПередОткрытием" или "ПриОткрытии" формы.  В чем может быть проблема?

   Пока Счета.Следующий() Цикл

       Сообщить(Счета.Код);
   
       ТекстЗапроса = "ВЫБРАТЬ
                      |      ХозрасчетныйОстаткиИОбороты.Счет,
                      |    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт,
                      |    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт,
                      |    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток,
                      |    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток,
                      |    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт,
                      |    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт,
                      |    ХозрасчетныйОстаткиИОбороты.СуммаОборот,
                      |    ХозрасчетныйОстаткиИОбороты.СуммаОборотДт,
                      |    ХозрасчетныйОстаткиИОбороты.СуммаОборотКт
                      |ИЗ
                      |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатНачало,&ДатКонец) КАК ХозрасчетныйОстаткиИОбороты
                      |ГДЕ
                      |     ХозрасчетныйОстаткиИОбороты.Счет = (&Счет)";

       Запрос.Текст = ТекстЗапроса;
                     
       Запрос.УстановитьПараметр("Счет",Счета.Ссылка);
       
       Запрос.УстановитьПараметр("ДатНачало",ДатаНачало);
       Запрос.УстановитьПараметр("ДатКонец",ДатаКонец);
       
       Выборка = Запрос.Выполнить();
   КонецЦикла;
1 andrewks
 
11.07.12
18:02
"запрос в цикле"  дальше читать не стал
2 nikolay_1987
 
11.07.12
18:03
Извиняюсь, плохо скопировал:
Счета = ПланыСчетов.Хозрасчетный.Выбрать();
3 hhhh
 
11.07.12
18:06
береги руки, Сеня (С) "Бриллиантовая рука"
4 ОбычныйЧеловек
 
11.07.12
18:07
(0) Убери цикл (и следовательно условие по счету) - потому как бред ведь полный. Сделай группировку по счету и бегай по этой выборке.
5 Reset
 
11.07.12
18:07
А почему в не обработке проведения?
6 ОбычныйЧеловек
 
11.07.12
18:08
Еще и условие по счету умудрился в ГДЕ поставить...
7 Нуф-Нуф
 
11.07.12
18:08
вроде и год 87, но видать эхо зацепило...
8 klikotold
 
11.07.12
18:08
А чего ж ему не виснуть... Нельзя делать запросы в цикле.
9 ОбычныйЧеловек
 
11.07.12
18:10
(5) там скорее всего того есть, но сначала надо решить проблему с открытием а потом с проведением.
10 nikolay_1987
 
11.07.12
18:11
(4) Спасибо Все заработало. До меня только сейчас дошло какой это был бред.
(8) Про запрос внутри цикла ничего не знал.  
Тему можно закрывать
11 tumpalgin
 
11.07.12
19:16
(10) Почитай Радченко, запросы в цикле - это не только плохой тон в программировании, но и черепашья скорость работы
12 Живой Ископаемый
 
11.07.12
19:21
2(11) кто бы говорил.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.