#0
by Legj
Коллеги, помогите придумать красивый алгоритм. Задача простая: нужно, чтобы пользователь вводил данные в диалог вввода строки до тех пор, пока не введет что-нибудь либо пока не откажется от ввода. Не могу придумать как обойтись без дублирования кода: получается либо ВвестиСтроку нужно два раза написать, либо два раза проверить на пустую строку. Например, вот такая какашка:
#4
by Fragster
Пока Не ВвестиСтроку(НомерЗаказа, "Номер накладной") ИЛИ ПустаяСтрока(НомерЗаказа) Цикл; КонецЦикла;
#5
by Fragster
Пока Не ВвестиСтроку(НомерЗаказа, "Номер накладной") ИЛИ ПустаяСтрока(НомерЗаказа) Цикл; КонецЦикла; Если ПустаяСтрока(НомерЗаказа) Тогда Возврат КонецЕсли;
#7
by Fragster
Пока Не ВвестиСтроку(НомерЗаказа, "Номер накладной") И ПустаяСтрока(НомерЗаказа) Цикл; КонецЦикла; Если ПустаяСтрока(НомерЗаказа) Тогда Возврат КонецЕсли;
#22
by Legj
(2, 3) Строка и так сначала пустая. Предупреждение после проверки в моем примере кода ничего не меняет. Бесконечный цикл – да, это идея. Уже лучше получится, но всё-таки не то.
#26
by Legj
Пока вот такой вариант. Существенно элегантней, но не то. Слишком заумный, логически сложный алгоритм получился для такой простой задачи. Без подробного комментария читателю кода будет очень сложно въехать, что имел в виду писатель: НомерЗаказа = "";
#27
by Reset
В смысле "не то"? НомерЗаказа=""; Пока ВвестиСтроку(НомерЗаказа) И ПустаяСтрока(НомерЗаказа) Цикл КонецЦикла;
#28
by Legj
А как выглядит решение целиком ? Если начать его додумывать, и пробовать, то окажется, что не так всё просто. Иначе бы я тему не создал.
#31
by Legj
Предупреждение не обязательно. Но и без того ваше решение не рабочее. Что будет, если пользователь нажмет "Отмену"? Исполнение кода продолжится дальше, а нужно, чтобы прервалось (Возврат).
#39
by Legj
Красиво, да. Но очень академично. В 1с как-то принято рекурсию использовать только тогда, когда это действительно единственное решение (деревья с условно бесконечным уровнем вложенности). Т.к. язык беден, нет вложенных функций. А вынос подобных алгоритмов в полновесную функцию сильно утяжеляет код.
#46
by Reset
Имхо: По моему, нужно быть сильным идиотом, если видеть перед собой окно с предложением ввода, которое не исчезает, если ничего не вводить и не понимать что от тебя требуют
#47
by Legj
Юзабилити такого решения – это другой вопрос. Но если хочется сделать именно с предупреждением, существует ли простой алгоритм, без рекурсии, без бесконечного цикла? Я вот не смог придумать, как голову не ломал, вот и полез на мисту. Возможно, таки не решаемая задача.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Выбор даты в ячейке табличного документа
- v8: Как вывести колонтитул на всех страницах кроме посленей?
- v8: Конвертация данных 2.1: Не выгружаются единицы измерения номенклатуры через ПКС
- RLS, ограничение по номенклатуре
- v7: PDF Creator обрезает имя файла
- Разрыв COM-Соединения C# - 1С
- Управление автотранспортом от РАРУС (Помогите)
- Критерии отбора в динамическом запросе.
- Как получить из _IDRRef из SQL в таком формате как в 1с
- Не пускает в 1С
- Как узнать иерархический ли справочник по виду?
- Платежные терминалы и УТ11
- Генератор радиосигнала + пеленгатор (Лавинный датчик)
- СКД: передача ВТ или Тз в СКД
- Пробитие чека ККМ через эмулятор в Управление торговлей 11
- в бгу не закрывается 109.61
- БП 2.0 Как идёт расчет армотизации ОС ? И как изменить НУ сумму.
- Конфигуратор. Удаление разрыва страниц (не получается)
- Windows 8 обрезанная
- Конвертация данных 2.1: Как перенести номенклатуру одну группу?