Найти тему
Блог 1С программиста

Диалог с пользователем

Оглавление

Вопрос пользователю при выполнении команды

Если в свойствах конфигурации РежимИспользованияМодальности установлен как “Не использовать”, то конструкция Ответ = Вопрос() приведет к ошибке “Использование модальных окон в данном режиме запрещено“.

В таком случаи вопрос можно задать через асинхронные методы:

  1. ВопросАсинх() – более современный асинхронный метод (через “обещание”, доступный с версии платформы 8.3.18)
  2. ПоказатьВопрос() – асинхронный метод (через “обратный вызов”).

Например, при выполнении команды “Заполнить квартальную премию” предупредим пользователя, что табличная часть будет очищена и получим подтверждение на выполнение. Реализуем задачу обоими способами:

Способ 1. ВопросАсинх()

&НаКлиенте

Асинх Процедура ЗаполнитьКвартальнуюПремию(Команда)

Ответ = Ждать ВопросАсинх(НСтр("ru = 'Табличная часть будет очищена. Продолжить?'"), РежимДиалогаВопрос.ДаНет);

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

Возврат;

КонецЕсли;

Объект.Начисления.Очистить();

//ЗаполнитьКвартальнуюПремиюНаСервере();

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

Способ 2. ПоказатьВопрос()

&НаКлиенте

Процедура ЗаполнитьКвартальнуюПремию(Команда)

Оповещение = Новый ОписаниеОповещения("ОчиститьЗавершение", ЭтотОбъект);

ТекстВопроса = НСтр("ru = 'Табличная часть будет очищена. Продолжить?'");

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

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

&НаКлиенте

Процедура ОчиститьЗавершение(Ответ, ДополнительныеПараметры) Экспорт

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

Возврат;

КонецЕсли;

Объект.Начисления.Очистить();

//ЗаполнитьКвартальнуюПремиюНаСервере();

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

Вопрос пользователю при редактировании элемента

Для того чтобы запросить подтверждение от пользователя при редактировании элемента формы, необходимо у нужного элемента установить свойство ОтображениеПредупрежденияПриРедактировании как “Отображать” и заполнить свой текст при необходимости.

-2