В обработке мне нужно, чтобы пользователь прочел модальное предупреждение, а он, обычно, не читая, нажимает Enter.

Я хотел бы написать это в виде вопроса:

Ответ = Вопрос("Текст предупреждения", РежимДиалогаВопрос.ДаНетОтмена,,КодВозвратаДиалога.Нет, "Предупреждение");

Если Ответ = КодВозвратаДиалога.Нет Тогда

Снова задавать этот вопрос-предупреждение, пока пользователь не прочтет текст и не нажмет кнопку "Да"
("Нет" нажмется в ответ на скидывание вопроса Enter'ом)

Оператора безусловного перехода нет и непонятно, как зациклить вопрос?
---
ответ = нет
Пока Ответ = Нет цикл
ответ = вопрос
конеццикла
?
---
ответ = нет
Пока Ответ = Нет цикл
ответ = вопрос
конеццикла

До использования оператора Вопрос() разве можно использовать Ответ = КодВозвратаДиалога.Нет ?
---
Использовать не вопрос, а предупреждение, например. Там всего одна кнопка ОК. Вас же это устроит?
---
Использовать не вопрос, а предупреждение, например. Там всего одна кнопка ОК. Вас же это устроит?

В случае предупреждения как раз пользователь его не читает и нажимает Enter.
Там его не заставить нажать другую кнопку.
---
Ну нажмет он кнопку Да, после того как не получится нажать Нет - что это изменит? Вы можете гарантировать, что он действительно прочитал текст предупреждения? Нет. Я уверен, что точно так же лично вы читаете всякого рода пользовательские соглашения и ставите галочку "Согласен".

А решение простое. Нажал Да - делаем. Нажал Нет - не делаем.
А вот своим принуждением к нажатию кнопки Да повторными вопросами - ломаете логику.

Вот скажите, а если человек хочет отказаться от действия, он не согласен, и он передумал - какую кнопку он должен нажать? Да или Нет? Подумайте на досуге.
И если вы не даете ему возможности нормально нажать кнопку Нет - то и не показывайте ему эту кнопку. Оставьте только Да. И это называется предупреждением, а не вопросом.

PS. Вы еще сделайте, чтобы при наведении курсора на кнопку Нет - она перемещалась в другое место экрана. Был такой прикол в свое время с вопросом "Вас устраивает ваша зарплата?"...
---
Ну нажмет он кнопку Да, после того как не получится нажать Нет - что это изменит? Вы можете гарантировать, что он действительно прочитал текст предупреждения? Нет. Я уверен, что точно так же лично вы читаете всякого рода пользовательские соглашения и ставите галочку "Согласен".

Если уточнить мою задачу, то "нажатие" кнопки в предупреждении у пользователя происходит автоматически, когда он как автомат сканирует сотни штрихкодов с завершающим суффиксом Enter у сканера.
А ему надо обязательно остановиться на том штрихкоде, который вызвал предупреждение, чтобы его отметить вручную.
---
ответ = нет
Пока Ответ = Нет цикл
ответ = вопрос
конеццикла
?
---
ответ = нет
Пока Ответ = Нет цикл
ответ = вопрос
конеццикла

До использования оператора Вопрос() разве можно использовать Ответ = КодВозвратаДиалога.Нет ?
---
Конечно
---
Как-то так, примерно,

```1c
    &НаКлиенте
    Процедура ПоказатьВопросНаКлиенте()
    ОписаниеОповещения = Новый ОписаниеОповещения("ВыполнитьПослеПоказаВопроса", ЭтотОбъект);
    ПоказатьВопрос(ОписаниеОповещения, "Вы поняли вопрос?", РежимДиалогаВопрос.ДаНетОтмена, 120,, "Внимание!");
    КонецПроцедуры // ПоказатьВопросНаКлиенте()

    &НаКлиенте
    Процедура ЗадатьВопрос(Команда)
    ПоказатьВопросНаКлиенте();
    КонецПроцедуры

    &НаКлиенте
    Процедура ВыполнитьПослеПоказаВопроса(Результат, Параметры) Экспорт
    Если Результат = КодВозвратаДиалога.Нет Тогда
    ПоказатьВопросНаКлиенте();
    КонецЕсли;
    КонецПроцедуры // ВыполнитьПослеПоказаВопроса()
```
---
По сути можно и закрыть окно предупреждений, тогда цикл не сработает. А так вариант грамотный.
---
Ну, да, вариант выхода: либо нажать "Да", либо крестик
---
Можно еще сравнивать с неопределено. Уже детали.
---
Как-то так, примерно,

Это, к сожалению, для УФ, а не для ОФ, сложно для понимания
 120 - это код ответа Да, а мне надо Нет В случае УФ, наверно, работает, если поставить вместо 120 код "Нет"

В ОФ непонятно, куда в обработке вставлять процедуру ВыполнитьПослеПоказаВопроса и как она будет вызываться, с какими параметрами.
---
Ну, в вопросе не было указания на каких формах необходимо выводить предупреждение, а так как я, по большей части, работаю на управляемых формах, то и пример, соответственно, предложил на УФ
---
Спасибо Вам за ответ в УФ. Только для меня в ОФ ответ 3 короче, разумеется.
Непонятно, про 120 в Вашем ответе.
---
Не за что =)
120 - это тайм аут - время, через которое будет закрыто окно вопроса.
ПоказатьВопрос(<ОписаниеОповещенияОЗавершении>, <ТекстВопроса>, <Кнопки>, <Таймаут>, <КнопкаПоУмолчанию>, <Заголовок>, <КнопкаТаймаута>)
---
Этот вариант работает и для обычных форм, только вместо ЭтотОбъект нужно использовать ЭтаФорма.
---
Да, попробовал на ОФ. Как ни странно работает!
---
Модифицировал вариант

```1c
    &НаКлиенте
    Процедура ВыполнитьПослеПоказаВопроса(Результат, Параметры) Экспорт
    Если Результат = КодВозвратаДиалога.Нет Тогда
    ПоказатьВопросНаКлиенте();
    ИначеЕсли ЭтотОбъект.ЗакрыватьПриЗакрытииВладельца = Ложь Тогда
    ПоказатьВопросНаКлиенте();
    КонецЕсли;
    КонецПроцедуры // ВыполнитьПослеПоказаВопроса()
```
---
Теперь просто так окно не закрыть)))
---
нужно для подтверждения привести (показать) "интригальную" функцию и чтоб правильный ответ написал. Вот тогда он не только прочитает...