Имя: Пароль:
1C
1C 7.7
v7: Условие на Вид Цикла
0 DmitriyDI
 
18.12.13
11:20
Вот есть у нас условие и в зависимости от него либо по справочнику цикл либо СЗ, вот такая конструкция вполне бы подошла, но понятно почему я ей не могу воспользоваться, как просто это реализовать без описания двух циклов ?

Если ФлагПоСписку = 0 Тогда
    Пока Спр.ПолучитьЭлемент()=1 Цикл
Иначе
    Для а =1 По Список.РазмерСписка() Цикл
КонецЕсли;
1 ДенисЧ
 
18.12.13
11:21
Какой феерический бред...
2 DmitriyDI
 
18.12.13
11:21
(1) почему ?(
3 mikecool
 
18.12.13
11:22
Разрешаю написать так
Если ФлагПоСписку = 0 Тогда
    Пока Спр.ПолучитьЭлемент()=1 Цикл
         ...
    КонецЦикла
Иначе
    Для а =1 По Список.РазмерСписка() Цикл
         ...
    КонецЦикла
КонецЕсли;
4 mikecool
 
18.12.13
11:22
а ваще - по условию готовишь список, и по нему уже цикл
5 mikecool
 
18.12.13
11:22
+4 или как в (3) - толь ... меняешь на вызов функции
6 Wobland
 
18.12.13
11:23
(3) без описания двух циклов велено.
иначе возврат
7 DmitriyDI
 
18.12.13
11:23
(3) ды очень смешно, так я и сам могу написать, просто цикл ну вообще одинаковый получается, вынесу тогда внутренность в процедуру, но все равно жалко, что нельзя, как я хочу так сделать
8 mikecool
 
18.12.13
11:24
(6) ну раз так, то синтаксис должен быть такой:
Если ФлагПоСписку = 0 Повелеваю
    Пока Спр.ПолучитьЭлемент()=1 Цикл
Иначе
    Для а =1 По Список.РазмерСписка() Цикл
КонецЕсли;
9 Ненавижу 1С
 
гуру
18.12.13
11:24
нет в 1С универсальных итераторов, даже в 8
10 mikecool
 
18.12.13
11:24
(7) ты так жалеешь будто в каком то языке так можно делать, а 1с падлюка не может
11 DmitriyDI
 
18.12.13
11:25
(10) а вдруг
12 КонецЦикла
 
18.12.13
11:33
(8) Хм... 1С ругается: Ожидается выражение КонецПовелеваю
13 2S
 
18.12.13
11:38
(0) в таких случаях все делается через СЗ, который формируется в зависимости от условий. Любой типовой отчет в ЗиК, например, по списку сотрудников
14 Chum
 
18.12.13
11:46
Смешно
15 1Сергей
 
18.12.13
12:28
УсловиеЦикла = 1;
а = 0;
Пока УсловиеЦикла = 1 Цикл
    Если ФлагПоСписку = 0 Тогда
        УсловиеЦикла = Спр.ПолучитьЭлемент();
    Иначе
        а = а + 1;
        УсловиеЦикла = ?(Список.РазмерСписка()>=а, 1, 0);
    КонецЕсли;
    ...
КонецЦикла;