Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Отрицательное значение в условии цикла

Отрицательное значение в условии цикла
Я
   ХДС
 
27.12.21 - 14:39
Для Счетчик2 = 0 По РезультатЗапроса[Счетчик].КонтактнаяИнформация.Количество() - 1 Цикл

Как отработает такое условие при Количество = 0, и почему?
   polosov
 
1 - 27.12.21 - 14:41
Ошибка в  РезультатЗапроса[Счетчик] ?
   ДенисЧ
 
2 - 27.12.21 - 14:42
(0) цикл не выполнится
   polosov
 
3 - 27.12.21 - 14:43
(0) А, понял. Нормально должно отработать. Там же обычное сравнение.
   lodger
 
4 - 27.12.21 - 14:45
(0) зачем делать _такие_ конструкты там, где это совершенно не требуется?
   lEvGl
 
5 - 27.12.21 - 14:45
надо думать что не попадет в цикл или ошибку даст, что правая часть не может быть меньше нуля
   Kassern
 
6 - 27.12.21 - 14:46
(0) никак не отработает. Просто дальше код пойдет выполняться минуя цикл
   Kassern
 
7 - 27.12.21 - 14:47
аналогично для конструкции Для Каждого ТекСтрока Из ТЗ Цикл, где ТЗ пустая таблица
   Aleksey
 
8 - 27.12.21 - 14:48
(7) не совсем. У него цикл от 0 до -1. Но ответ правильный. Дальше пойдет
   ДенисЧ
 
9 - 27.12.21 - 14:49
Попробуй
для сч = 0 по -1 Цикл
  сообщить("Мы в цикле");
КонецЦикла;
   mistеr
 
10 - 27.12.21 - 14:50
(8) Там столько обращений к объектам, что вполне может быть и ошибка.

(4) +1
   TheRoofIsOnFire
 
11 - 27.12.21 - 14:52
а что одинэс умеет step -1? Я не знал.
   Мультук
 
12 - 27.12.21 - 14:53
(11)
Он и не умеет, да здесь (в этом примере) оно и не нужно
   TheRoofIsOnFire
 
13 - 27.12.21 - 14:53
(12) Как отработает такое условие при Количество = 0, и почему? - никак оно не отработает, цикл бля в 1С не умеет считать назад. Цикл Пока - может.
   dubolom
 
14 - 27.12.21 - 14:58
(13) зачетная опечатка
   Мультук
 
15 - 27.12.21 - 14:58
(13)

Очевидно, что цикл
для сч = 0 по -1 Цикл
  сообщить("Мы в цикле");
КонецЦикла;

выполнется
как

сч = 0;
Пока сч <= -1 Цикл

КонецЦикла;

Будет ли проинициализирована "сч" -- не знаю.
   lEvGl
 
16 - 27.12.21 - 14:59
(13) новогоднее настроение!! та ра та ра та ра тата та ра та ра та раааа))
   ХДС
 
17 - 27.12.21 - 15:11
Натурные испытания показали что условие не выполняется.
А вот почему?
   Kassern
 
18 - 27.12.21 - 15:16
(17) поэтому что это обычное условие, которое равно Ложь, поэтому в цикл и не заходит
   Serg_1960
 
19 - 27.12.21 - 15:20
Строго говоря, автор не спрашивал про количество итераций цикла - вопрос был "Как отработает такое условие при Количество = 0?".
Отвечаю: результат условия = -1. Ваш КО.
   mistеr
 
20 - 27.12.21 - 15:24
(17) Условие проверяется ПЕРЕД выполнением тела цикла.
   Serg_1960
 
21 - 27.12.21 - 15:26
(17) "Натурные испытания показали что условие не выполняется" - Вы всё напутали: условие - выполняется, а цикл с предусловием - не выполняется.
   ХДС
 
22 - 27.12.21 - 15:34
(21) Не выполняются ни условие, ни цикл?
   Serg_1960
 
23 - 27.12.21 - 15:49
(22) "Максимальное значение счетчика цикла... вычисляется однократно перед началом цикла и не может быть изменено внутри цикла"(Синтакс-помощник)
   Fragster
 
24 - 27.12.21 - 15:51
вот на партнерском хороший кусок из типовых https://partners.v8.1c.ru/forum/topic/1862941
   Fragster
 
25 - 27.12.21 - 15:53
для тех, у кого нет доступа: https://i.imgur.com/8MFfxQT.png
   Fragster
 
26 - 27.12.21 - 15:54
правда про то, что присвоение происходит до вычисления правой части,  не написано
   Serg_1960
 
27 - 27.12.21 - 16:06
(26) Левые и правые части условия рассчитываются и присваиваются автономно и независимо друг от друга до проверки условия цикла :)
"Л-логика"(с)
   Serg_1960
 
28 - 27.12.21 - 16:11
Пример для наглядности вышесказанного:
    Для i = -2 По -1 Цикл
        Сообщить(i);
    КонецЦикла;
    Сообщить(i);


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.