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

Материал из largespace
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 7: Строка 7:
Чтобы задать вопрос программно, используется механизм ОписаниеОповещений.  
Чтобы задать вопрос программно, используется механизм ОписаниеОповещений.  


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


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

Версия от 10:47, 14 июля 2023

Вопрос:

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

Ответ:

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

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

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

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

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