Как задать вопрос пользователю перед выполнением кода?: различия между версиями
Перейти к навигации
Перейти к поиску
Irit (обсуждение | вклад) Нет описания правки |
Irit (обсуждение | вклад) Нет описания правки Метки: ручная отмена визуальный редактор отключён |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 8: | Строка 8: | ||
Для формирования вопроса необходимо добавить кнопку и определить у нее команду. Затем заполнить по примеру ниже: | Для формирования вопроса необходимо добавить кнопку и определить у нее команду. Затем заполнить по примеру ниже: | ||
< | <syntaxhighlight> | ||
&НаКлиенте | &НаКлиенте | ||
Процедура МояКнопка(Команда) | Процедура МояКнопка(Команда) | ||
Если ВыполняетсяУсловие Тогда | |||
Оповещение = Новый ОписаниеОповещения("МояКнопкаЗавершение", ЭтаФорма); | |||
ПоказатьВопрос(Оповещение, "Мой вопрос. Ответишь?", РежимДиалогаВопрос.ДаНет); | |||
Иначе | |||
МояКнопкаЗавершение(КодВозвратаДиалога.Да, Неопределено); | |||
КонецЕсли; | |||
КонецПроцедуры | КонецПроцедуры | ||
&НаКлиенте | &НаКлиенте | ||
Процедура МояКнопкаЗавершение(Результат, ДополнительныеПараметры) Экспорт | Процедура МояКнопкаЗавершение(Результат, ДополнительныеПараметры) Экспорт | ||
Если Результат = КодВозвратаДиалога.Да Тогда | |||
ДальнейшееДействие(); | |||
КонецЕсли; | |||
КонецПроцедуры | КонецПроцедуры | ||
</ | </syntaxhighlight>Такой метод формирования вопроса не блокирует интерфейс пользователя, код после выполнения процедуры "ПоказатьВопрос" продолжает выполняться дальше, если необходимо. После нажатия на кнопку управление перейдет к процедуре "МояКнопкаЗавершение", где в поле "Результат" будет указан ответ пользователя. |
Текущая версия от 11:32, 14 июля 2023
Вопрос:
Как задать вопрос пользователю программно перед выполнением кода, например когда нужно предупредить о наличии данных перед очисткой и заполнением?
Ответ:
Чтобы задать вопрос программно, используется механизм ОписаниеОповещений.
Для формирования вопроса необходимо добавить кнопку и определить у нее команду. Затем заполнить по примеру ниже:
&НаКлиенте
Процедура МояКнопка(Команда)
Если ВыполняетсяУсловие Тогда
Оповещение = Новый ОписаниеОповещения("МояКнопкаЗавершение", ЭтаФорма);
ПоказатьВопрос(Оповещение, "Мой вопрос. Ответишь?", РежимДиалогаВопрос.ДаНет);
Иначе
МояКнопкаЗавершение(КодВозвратаДиалога.Да, Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МояКнопкаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
ДальнейшееДействие();
КонецЕсли;
КонецПроцедуры
Такой метод формирования вопроса не блокирует интерфейс пользователя, код после выполнения процедуры "ПоказатьВопрос" продолжает выполняться дальше, если необходимо. После нажатия на кнопку управление перейдет к процедуре "МояКнопкаЗавершение", где в поле "Результат" будет указан ответ пользователя.