Имя: Пароль:
1C
1С v8
Как задать вопрос в процессе выполнения команды ? Обработчик ожидания?
0 Юзер123
 
naïve
03.10.22
15:35
Добрй день.
Подскажите пож-та.
На форме документа есть кнопка рассчитать скидку. Как мне после нажатия на эту кнопку задать вопрос пользователю при определенных условиях,чтобы при  этом команду остановила свое выполнение?.

Делаю так.

Если.... Тогда
ПодключитьОбработчикОжидания("ЗадатьВопрос",120,истина);

КонецЕсли;

....

Процедура ЗадатьВопрос() Экспорт

Тут вопрос вывожу ...
.....

КонецПроцедуры;

Вопрос выводится,но ответа не дожидается и дальше выполняется команда рассчитать скидки.
1 Гипервизор
 
03.10.22
15:40
Ничего не понял, расчёт скидки через обработчик ожидания? Для чего? А вообще обработчик при необходимости можно и отключить, а затем подключить снова.
2 Юзер123
 
naïve
03.10.22
15:43
(1) Нажимают рассчитать скидку.   Дальше идет проверка перед расчетом скидки.  И при определенных условиях мне надо задать вопрос пользователю.
3 Гипервизор
 
03.10.22
15:48
(2) Так и в чём проблема-то? Зачем для вопроса обработчик ожидания? Вопрос, ПоказатьВопрос, ВопросАсинх. Смотря что там у вас за конфигурация.
4 Юзер123
 
naïve
03.10.22
15:49
(3) Комплексная.  Обработчик впилил ,потому что  вопрос показывается но дальше все рассчитывается.
5 Kassern
 
03.10.22
15:54
(0) Чутка перестройте код и все будет норм. При нажатии на кнопку рассчитать скидку, у вас должна пройти проверка и если нужен вопрос, то он задается. В его оповещении уже при нужном результате, рассчитываете скидку.
6 Смотрящий
 
03.10.22
15:55
(4) Через повторный вызов процедуры расчета скидок с флажком ВопросЗададан = Истина
7 Юзер123
 
naïve
03.10.22
15:58
(5) Я делаю в расширении "Перед" .  И если  выполняется условие для вопроса , то возврат  делаю. Однако дальнший расчет идет.
8 Гипервизор
 
03.10.22
16:01
(4) Как в этой конфе обстоят дела с отказом от модальности? Как реализован вопрос? Через ПоказатьВопрос()?
После открытия блокирующего окна не должно быть кода. Иначе код будет выполнен, не дожидаясь ответа пользователя. Разделите алгоритм на 2 части. Одна часть открывает блокирующее окно, вторая - обрабатывает реакцию пользователя.
9 Kassern
 
03.10.22
16:03
(7) значит как-то коряво делаете)
10 Юзер123
 
naïve
03.10.22
16:05
(9) (8)  Хорошо спасибо
11 Kassern
 
03.10.22
16:06
Замените вообще выполнение кода по этой процедуре расчета скидок и воткните ее выполнение в уже в расширении. Вы либо сразу запускаете этот кусок кода, либо задаете вопрос и уже в оповещении вопроса запускаете кусок кода со скидками.
12 rudnitskij
 
03.10.22
20:09
(0) нажали кнопку - запустилась проверка каких-то расчетов - по ее результатам показываем или не показываем вопрос...
Мне одному трудно представить, зачем в этой схеме обработчик ожидания?