#0
by Ksandr
Сегодня, наконец, понял для чего в типовых такая конструкция. Она отлично помогает выделить блок, который нужно выполнить, если на каком то участке блока необходимо выйти из блока, например: Пока Истина Цикл Произвольный_Код .............. Есть ли у кого-нибудь аргументы за и против использования такого подхода?
#6
by Ksandr
т.к. одним из минусов меток является то, что можно долго ломать голову над тем как же выполнение кода оказалось именно в этом месте - тут такого вопроса не возникает
#8
by Ksandr
допустим есть 5 вариантов поиска элемента. Писать: Если НеНашли Тогда ПроизвольныйКод КонецЕсли Если НеНашли Тогда ПроизвольныйКод КонецЕсли Если НеНашли Тогда ПроизвольныйКод КонецЕсли Если НеНашли Тогда ПроизвольныйКод КонецЕсли Если НеНашли Тогда ПроизвольныйКод КонецЕсли Это достаточно простой пример, в реальности он может быть куда сложнее.
#9
by Ksandr
Согласен. Этим подходом и пользуюсь, просто сегодня понял, зачем в типовых делают однопроходный цикл вида - Пока Истина Цикл, чтобы выйти из него на произвольном участке кода.
#11
by Anempadest
Обычно в таких случаях я пишу внешнюю функцию, внутри которой проверяю значение, а функция уже возвращает "Удовлетворяет или не удовлетворяет". И если говорить об удобстве разбора кода, то мой вариант также претендует на удобство и красоту. Например: ... ... КонецПроцедуры
#14
by Шапокляк
Ну да, классно. Запустил юзверя с именем "ДятелОповещатель" и при запуске поставил обработку с этим циклом, в котором задал условие БоссОткрылБазу. Ждем босса - цикл крутится. Босс зашел в базу - всем письмо с текстом "Атас! Начальство на месте" и выход из цикла.
#17
by GoldenDawn
нужно ещё обсосать компиляцию интерпретацию и не помню где забыл как с этой точки зрения называется платформа и посаться обязательно
#18
by wade25
Уф, минут 5 смотрел и не вдуплял, пока не увидел, что "Пока Истина Цикл" входит в код =)
#20
by Fragster
цикл с заранее неизвестным количеством итераций. хотя его все равно лучше заменить на Пока НужноПродолжать Цикл...
#21
by Кириллка
Применимость, например, для такого случая: 0. В таком бесконечном цикле.. 1. Спросить пользователя о чем-то; 2. Проверить введенное значение; 3. Если значение неверное, то повторно попросить его ввести значение или отказать от дальнейшего ввода; 4. В зависимости от того, что он выберет (ввести новое корректное значение или прекратить ввод вообще) выходить из цикла; Главное здесь предусмотреть возможность пользователю прекратить эту феерию :) Короче, это же азы.
#26
by Rie
О goto ещё не вспоминали? :-) Блок кода - помогает видеть. А вот условие, по которому выходят из цикла, - его придётся поискать. Причём опытный кодер всегда сумеет запрятать это условие куда поглубже и сделать его максимально неудобочитаемым :-) А так - конструкция как конструкция. Если возникает потребность именно в ней - используй. Если можно обойтись другими - лучше использовать другие.
#27
by jsmith
Видимо, ты испытал просветление. Могу предположить, ты имеешь в виду давнюю дискуссию между сторонниками меток и его противниками. Первые говорят, что такой код опасен (современные компиляторы даже выдают предупреждения). В принципе считаю это дело вкуса, от всех ошибок не застрахуешься, а при правильном мышлении ты можешь изощряться как хочешь.
#30
by Sk0rp
У меня где-то в коде есть: О чем думал когда писал не помню, но уже исправлять не буду.
#33
by zak555
ещё пойми следущее, что Пока Условие = Истина Цикл конецЦикла; идёт две операции, поэтому пищут просто Пока Условие Цикл
#37
by Morphius
А матчасть почитать не пробовал? Таким образом люди реализуют do..while , которого нет в 1с. То бишь когда нужно условное выражение проверять в конце каждой итерации, а не в начале
#41
by Anempadest
Чё вы набросились на автора? Он вам ничего не предлагает. Человек просто озадачился однажды, а теперь наконец понял, почему в типовых конфигурациях код выглядит так, а не иначе.
#45
by vmv
я тоже так пишу, вот вариант &НаКлиенте Функция ДанныеФормыДеревоПолучитьУровеньЭлемента(ДФЭлементДерева) работает без всякого ухода. в 8.2. для деревоколлекця нет метода Урувень, увы
#50
by Stim213
и стараться не надо. Число итераций должно быть всегда жестко определено, иначе условия выхода из цикла может не сработать и цикл будет бесконечным.
#52
by Stim213
запросто. Конкретный пример - создаю pdf-файл через отправку табличного документа на виртуальный pdf-принтер - ком-объект. Команда Напечатать отправилась, код 1С шагнул в следующую строку, а файл еще создается. В цикле проверяем размер файла(что это не пустой файл), если размер больше 1кб - то Прервать; Но Если по каким-то причинам файл так и не создался, то цикл будет крутится бесконечно. Поэтому ставится счетчик итераций ~10000 и внутри них проверяется наличие заполненного файла
#53
by Stim213
Если после 100000 итераций размер файла так и не увеличился - значит, он не увеличится уже никогда
#56
by Stim213
чукча писатель? Если бы я писал цикл по , мне пришлось бы писать Или ты совсем не видишь разницы?
#62
by Stim213
блин, не тупи же! Твой оператор - это цикл с постусловием, он к сабжу не имеет отношения, в сабже цикл с предусловием: Перестань уже позориться своим непрофессионализмом
#65
by Guk
так а что ты хрень то какую-то несешь ;) тебе русским по белому намекают, что вся суть конструкции в условии выхода из цикла. но ты почему-то напрочь этого не понимаешь. то ли дурака включил, то ли не включал ;)...
#68
by Песец
Если религия (корпоративная или личная) не позволяет юзать гоуту, а юзать надо, то самое оно.
#70
by zak555
можно сделать два условия проверки =) Пока Истина Цикл Если УсловиеОстановаИстина Тогда
#71
by popcorn
О, прикольно! Сразу не понял смысла, но потом понял. Тоже буду использовать такую идею.
#72
by Песец
(69+) Не удивлюсь, если выяснится, что подобная хрень генерируется автоматически обработкой-"препроцессором", компилирующим исходный код с гоуту в код без оператора, попавшего в опалу корпоративного стандарта.
#73
by Morphius
Кстати, т.к. в 7.7 типа "Булево" не было, встречал такую конструкцию(и сам потом использовал): Пока 1=1 Цикл .... .... КонецЦикла;
#74
by vladenoff
Использую: // Пока Истина Цикл .... использую, когда условие повторного повторения (вхождение в цикл) должно проверяться в конце алгоритма самого цикла. Это обеспечит их выполнения хотя бы раз. В паскале были конструкции "While do..." и "reaped until", вот второй конструкции у 1С нету. Её заменяю "Пока Истина Цикл ...." заменить можно, но наверное гемора больше. Пришлось бы, наверное, указывать булевую переменную, типа "ПрошлоРазЦикл".
#77
by Torquader
Ну не сделали в 1С цикл с условием в конце - видимо - не умеют. "Бесконечный" цикл используется, если хочется выполнить повторение кода с начала при неудаче на каком-то участке кода, а также для "корректного" выхода из ситуации, когда код выполняться не может.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Как в запросе поставить условие Док.Проведен = истина. А то "истина" получ
- v7: Цикл Forall в 1С или как реализовать Пока ... Цикл для прочтения динамическ
- ЗавершитьРаботуСистемы(Истина, Истина) Запустить под новым пользователем
- 8.2 как преобразовать Истина в "Истина"?
- 1С8.3 При применении отбора в СКД сильно тормозит вывод в Табличный документ
В этой группе 1С
- ЗУП учет депонентов
- Длину наменования "Номенклатуры" (не полного наименования) до 150 знаков.
- v7: сохранение картинки из библиотеки на диск. Программно.
- v7: 1С++ прямой запрос по периодом все
- подскажите как вызвать экспортную процедуру из модуля внешней обработки
- Обмен данных между УТ и БУХ 8.2 (дата запрета редактирования)
- ЗУП 2.5.38. Проблемы с НДФЛ при режиме за первую половину месяца
- СКД повторять при печати строки
- как перепрограммировать Opticon OPR-3201на сом-порт
- Счет 205.31
- v8: Обработка проведения: определить интерактивность
- ProgID класса COM "Excel.Sheet" и "Excel.Application"
- Зарплата 8.2. Расчетная ведомость. Конечное сальдо
- Показатели работы менеджеров
- 1с 8.2.14 не создается риб
- Сеанс отсутствует или удален
- ЗУП. Прохождение повышения квалификации с отрывом от производства.
- Где в комплексной автоматизации учетная политика??
- Отображение колонки ТабПоля типа СписокЗначений
- ЗУП - виртуальная таблица БазаБУОсновныеНачисления