Имя: Пароль:
1C
1C 7.7
v7: Как в цикле выполнять действие через определенное количество шаков цикла ??
0 raykom
 
03.11.14
11:46
Не отпускает. Гон продолжается ...

Сижу вот, кубатурю. Как красиво выполнить действие через заданное количество шагов цикла.

Но счетчиков нафигачить - понятно. Может кто что красивое подкинет ?
1 Скай
 
03.11.14
11:49
остаток от деления = 0
2 raykom
 
03.11.14
11:50
(1)А не четное количество ?
3 Скай
 
03.11.14
11:51
Сч%Шаг = 0
4 Мимохожий Однако
 
03.11.14
11:53
(0)Сразу задай нужное количество циклов
5 raykom
 
03.11.14
11:55
(3)Не соображу пока - что это )
(4)Ты смеешься ? ))
6 Мимохожий Однако
 
03.11.14
11:57
Я абсолютно серьёзен. Из СП:
Для <?> = <?> По <?>  Цикл
    
КонецЦикла;
Синтаксис:
Для <Имя_переменной>=<Выражение1> По <Выражение2> Цикл
    <операторы>
КонецЦикла;
Назначение:
оператор цикла с шагом.
Параметры:
<Имя_переменной> - идентификатор переменной (счетчик цикла);
<Выражение1> - начальное значение счетчика цикла;
<Выражение2> - конечное значение счетчика цикла;
<операторы> - последовательность исполняемых операторов.
Подробнее см. в документации, глава ''Управляющие операторы''
7 Мимохожий Однако
 
03.11.14
11:57
Смотри Выражение2
8 Абыр
 
03.11.14
11:58
ответ в (3)
9 raykom
 
03.11.14
12:00
(7)Ну так поставлю Выражение2=три и что ? А у меня в выборке 33 элемента и все их надо пройти одним циклом.
А через 3 или любое указанное количество шагов выполнять действо.

(8)Верю, просто не догоняю - как ...
10 raykom
 
03.11.14
12:02
Отойду.
11 Мимохожий Однако
 
03.11.14
12:04
(9)Что за выборка? По выходным телепатдлл выключен ))
12 raykom
 
03.11.14
12:05
(11)Извини. НУ цикл обхода по выборке ))
13 Мимохожий Однако
 
03.11.14
12:09
Да ладно...Если при обходе твоей выборки есть условие, не зависящая от счетчиков. Например, какое-то поле выборки. То после сравнения этого условия вставляй Прервать и всё.
ИМХО, возможно, я не все твои определения угадываю. Но помочь очень хочется. ))
14 raykom
 
03.11.14
12:12
Условие одно - определенное количество шагов цикла.
Но без кучи счетчиков как реализовать

Втыкаю вот в (8)
Там понятно что процент от количества. Тока тихо думаю, пока не соображу, как написать то по русски ...
15 Мимохожий Однако
 
03.11.14
12:13
(14)Только один счетчик. Откуда куча-то?
16 raykom
 
03.11.14
12:14
Ну СчетчикЦикла - раз.
А как следить да заданным количеством шагов СчетчикЦикла ?
17 raykom
 
03.11.14
12:15
да=за
18 Мимохожий Однако
 
03.11.14
12:17
(16)если перевести Сч%Шаг = 0
На твой пример:
Шаг = 17
при достижении СчетчикЦикла = 17
выражение
Если СчетчикЦикла%Шаг = 0 Тогда
Прервать://к чертовой матери
КонецЦикла;
..
19 raykom
 
03.11.14
12:25
(18)Блят ...
Я тупой, понятно ))

Но в СчетчикЦикла%Шаг - что такое % ??
Это процент или логическое выражение ??
20 Мигало
 
03.11.14
12:26
Остаток от деления
21 raykom
 
03.11.14
12:27
Ага. А в СП его нет. Может это от ДенисЧа СП ?
22 Мимохожий Однако
 
03.11.14
12:28
В ЖЖК есть в самом начале.
23 raykom
 
03.11.14
12:29
:DD
Ну, напрашивается вопрос - где ЖЖК
24 raykom
 
03.11.14
12:30
Ну вот тогда решение. Всем спасибо. МимохожийОднако за командную поддержку особенно ))
25 Мигало
 
03.11.14
12:30
(23) В английской палате мер и весов ;)
26 Мимохожий Однако
 
03.11.14
12:32
(23)В любой бухгалтерии в желтой коробке есть  "ненужные" книжки. Забери у них
27 raykom
 
03.11.14
12:34
Понял.
28 raykom
 
03.11.14
12:34
Поехал в Англию :DD
29 raykom
 
03.11.14
13:37
Какая то мазафака все равно.

    СчЦикл = 0;
    Пока Запрос.Группировка(1) = 1 Цикл
        СчЦикл = СчЦикл+1;
        Если СчЦикл%Шаг = 0 Тогда
            Сообщить(СчЦикл);
        КонецЕсли;


В целом работает, но если ШАг = 2, то первые две строки сообщения пустые, при чем, одна со значком сообщения (синенький треугольничек слева на табло), а вторая просто пустая.

А если Шаг = 3 то первая строка в сообщении - 129.36
Если Шаг = 4 то 313.90

Какие то нпонятные остатки от деления. И почему сообщение выдается, если СчЦикл = 313.90

о_О ??
30 alle68
 
03.11.14
15:09
(29) А ниже по коду что делаешь с "СчЦикл" и зачем?
31 Злопчинский
 
03.11.14
15:11
(1) бяка решение. остаток от деления веьсма тормозная операция. при больших циклах - будет небольшая, но всетаки лишняя нагрузка. вариант со счетчиком гораздо быстрее.
32 Злопчинский
 
03.11.14
15:14
Граница = 30;
Шаг = 1;
сч = 0;
Цикл чегототам
  
  сч = сч + Шаг;
  Если сч > Граница
  Тогда
    //чтотоделаем
    сч = 0;
  КонецЕсли;

КонецЦикла
33 raykom
 
03.11.14
15:37
(30)Это не суть. Главое - определить момент для действия.
(32)Да я вот тоже, решил забить и навертеть счетчиков.
Так примерно и запилил.

В самом то начале (0) спрашивал как без лишних счетчиков сделать.
Хрен с ними. Пусть будут
34 ivsher
 
04.11.14
11:35
Можно как то так пробовать.

Шаг=ЖелаемыйШаг-1
Для сч=Начало до Конца Цикл
    Сч=Сч+Шаг;
    Если Сч>Конца Тогда
       Прервать;
    КонецЕсли;
    Сообщить(Сч);
КонецЦикла
35 ivsher
 
04.11.14
11:39
Кстати подумав можно и условие убрать.
Шаг=ЖелаемыйШаг-1
Для сч=Начало до Конца-Шаг Цикл
    Сч=Сч+Шаг;
    Сообщить(Сч);
КонецЦикла
36 ivsher
 
04.11.14
11:45
в 35 можем потерять последнее значение :) Недодумал слегка. Надо проверить на кратность Конца/Шаг. Если делтся без остатка то Цикл дл Конца иначе до Конца-Шаг. Вроде так должно быть правильно и условия в теле цикла исключаем.
37 raykom
 
04.11.14
15:59
(36)Ну это уже высшая математика с прогрессией получается ...
38 herfis
 
04.11.14
16:24
% - удобнее и нагляднее всего. Экономить на нем имеет смысл только при десятках тысяч итераций, если не больше, и то если внутри чистая арифметика. В противном случае - бессмысленно.