Как задать вопрос пользователю перед выполнением кода?: различия между версиями

Материал из largespace
Перейти к навигации Перейти к поиску
(Новая страница: «'''Вопрос''': ''Как задать вопрос пользователю программно перед выполнением кода, например когда нужно предупредить о наличии данных перед очисткой и заполнением?'' '''Ответ''': Чтобы задать вопрос программно, используется механизм ОписаниеОповещений. Д...»)
 
Нет описания правки
Строка 12: Строка 12:
Процедура МояКнопка(Команда)
Процедура МояКнопка(Команда)
Если ВыполняетсяУсловие Тогда
  Если ВыполняетсяУсловие Тогда
Оповещение = Новый ОписаниеОповещения("МояКнопкаЗавершение", ЭтаФорма);
    Оповещение = Новый ОписаниеОповещения("МояКнопкаЗавершение", ЭтаФорма);
ПоказатьВопрос(Оповещение, "Мой вопрос. Ответишь?", РежимДиалогаВопрос.ДаНет);
    ПоказатьВопрос(Оповещение, "Мой вопрос. Ответишь?", РежимДиалогаВопрос.ДаНет);
Иначе
  Иначе
МояКнопкаЗавершение(КодВозвратаДиалога.Да, Неопределено);
    МояКнопкаЗавершение(КодВозвратаДиалога.Да, Неопределено);
КонецЕсли;
  КонецЕсли;
КонецПроцедуры  
КонецПроцедуры  
Строка 24: Строка 24:
Процедура МояКнопкаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Процедура МояКнопкаЗавершение(Результат, ДополнительныеПараметры) Экспорт


Если Результат = КодВозвратаДиалога.Да Тогда
  Если Результат = КодВозвратаДиалога.Да Тогда
ДальнейшееДействие();
    ДальнейшееДействие();
КонецЕсли;
  КонецЕсли;
КонецПроцедуры
КонецПроцедуры
</pre>
</pre>Такой метод формирования вопроса не блокирует интерфейс пользователя, код после выполнения процедуры "ПоказатьВопрос" продолжает выполняться дальше, если необходимо. После нажатия на кнопку управление перейдет к процедуре "МояКнопкаЗавершение", где в поле "Результат" будет указан ответ пользователя.

Версия от 12:23, 3 марта 2023

Вопрос:

Как задать вопрос пользователю программно перед выполнением кода, например когда нужно предупредить о наличии данных перед очисткой и заполнением?

Ответ:

Чтобы задать вопрос программно, используется механизм ОписаниеОповещений.

Для формирования вопроса необходимо добавить кнопку и определить у нее команду. Затем заполнить по примеру ниже:

&НаКлиенте
Процедура МояКнопка(Команда)
	
  Если ВыполняетсяУсловие Тогда
    Оповещение = Новый ОписаниеОповещения("МояКнопкаЗавершение", ЭтаФорма);
    ПоказатьВопрос(Оповещение, "Мой вопрос. Ответишь?", РежимДиалогаВопрос.ДаНет);
  Иначе
    МояКнопкаЗавершение(КодВозвратаДиалога.Да, Неопределено);	
  КонецЕсли;
	
КонецПроцедуры 

&НаКлиенте
Процедура МояКнопкаЗавершение(Результат, ДополнительныеПараметры) Экспорт

  Если Результат = КодВозвратаДиалога.Да Тогда
    ДальнейшееДействие();
  КонецЕсли;
	
КонецПроцедуры

Такой метод формирования вопроса не блокирует интерфейс пользователя, код после выполнения процедуры "ПоказатьВопрос" продолжает выполняться дальше, если необходимо. После нажатия на кнопку управление перейдет к процедуре "МояКнопкаЗавершение", где в поле "Результат" будет указан ответ пользователя.