Глобальный контекст.ПредупреждениеАсинх

Методы · DoMessageBoxAsync

Асинхронная функция. Выводит на экран окно предупреждения, но не ожидает его закрытия.

Синтаксис

ПредупреждениеАсинх(<ТекстПредупреждения>, <Таймаут>, <Заголовок>)
Полное описание, параметры и ограничения

Глобальный контекст.ПредупреждениеАсинх (Global context.DoMessageBoxAsync)

Глобальный контекст (Global context)

ПредупреждениеАсинх (DoMessageBoxAsync)

Доступен, начиная с версии 8.3.18.

Синтаксис:
ПредупреждениеАсинх(<ТекстПредупреждения>, <Таймаут>, <Заголовок>)
Параметры:

<ТекстПредупреждения> (обязательный)
Тип: Строка, ФорматированнаяСтрока.
Текст предупреждения.

<Таймаут> (необязательный)
Тип: Число.
Интервал времени в секундах, в течение которого система будет ожидать ответа пользователя. По истечении интервала окно предупреждения будет закрыто. Если параметр не указан, то время ожидания не ограничено.
Если параметр имеет отрицательное значение, будет сгенерировано исключение.
Значение по умолчанию: 0.

<Заголовок> (необязательный)
Тип: Строка.
Содержит заголовок окна предупреждения.
Если не установлен, то у диалога заголовок не отображается.
Возвращаемое значение:
Тип: Обещание.
Результат выполнения обещания - Неопределено.
Описание:

Асинхронная функция. Выводит на экран окно предупреждения, но не ожидает его закрытия.

Доступность:

Тонкий клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).

См. также:
Глобальный контекст, метод ПоказатьПредупреждение
Глобальный контекст, метод Предупреждение

Использование в версии:

Доступен, начиная с версии 8.3.18.

Методическая информация

Практические примеры

Дождаться предупреждения о неверном количестве и не продолжить расчёт

В учебной форме количество должно быть от 1 до 100. После закрытия предупреждения ошибочная ветка обязательно заканчивается Возврат, а не продолжает расчёт.

Где и как запускать

Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.

Подготовка

  1. Создайте отдельную учебную внешнюю обработку с пустой управляемой основной формой. Каждую задачу запускайте в своей копии формы.

  2. Не добавляйте вручную реквизит ЗначениеПримера, поле ПолеПримера и команду УчебноеДействие: их создаст код.

  3. В свойствах формы → События свяжите ПриСозданииНаСервере с одноимённой процедурой. Вставьте весь модуль, включая клиентские и серверные процедуры.

  4. Сохраните учебную EPF и откройте через Файл → Открыть в тонком или толстом клиенте Windows. Рабочие данные не читаются и не записываются.

  5. Используйте новую пустую учебную базу и отдельную копию EPF для каждой задачи. Команды не должны обращаться к рабочим данным, внешним сервисам или процедурам записи.

  6. Основной пример выполняется в тонком/толстом клиенте Windows. Доступность веб-клиента оговаривается отдельно; наличие Асинх в имени не гарантирует веб-доступность.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Новые = Новый Массив;
    ТипРеквизита = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(12, 2));
    Новые.Добавить(Новый РеквизитФормы("ЗначениеПримера", ТипРеквизита));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    ЭтаФорма.ЗначениеПримера = 3;
    Поле = Элементы.Добавить("ПолеПримера", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеВвода;
    Поле.ПутьКДанным = "ЗначениеПримера";
    Поле.Заголовок = "Учебное количество";


    КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
    КомандаДействия.Действие = "УчебноеДействие";
    КомандаДействия.Заголовок = "Проверить учебное количество";
    КомандаДействия.Подсказка = "Действие только над данными учебной формы";
    КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
    Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
    Кнопка.ИмяКоманды = КомандаДействия.Имя;
    Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры

&НаКлиенте
Асинх Процедура УчебноеДействие(Команда)
    Если ЗначениеПримера < 1 Или ЗначениеПримера > 100 Тогда
        Элементы.КнопкаУчебноеДействие.Доступность = Ложь;
        Попытка
            Ждать ПредупреждениеАсинх("Введите количество от 1 до 100.", 0, "Учебная проверка");
        Исключение
            Элементы.КнопкаУчебноеДействие.Доступность = Истина;
            ВызватьИсключение;
        КонецПопытки;
        Элементы.КнопкаУчебноеДействие.Доступность = Истина;
        Возврат;
    КонецЕсли;
    УчебнаяСумма = ЗначениеПримера * 200;
    Сообщить("Сумма только в памяти: " + Формат(УчебнаяСумма, "ЧДЦ=2"));
КонецПроцедуры

Разбор по шагам

  1. Задаём диапазон отдельной проверкой данных: визуальная отметка поля не заменяет условие.

  2. ПредупреждениеАсинх возвращает Обещание. Ждать разрешено внутри Асинх Процедура; результат предупреждения — Неопределено, не Да/Нет.

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

  4. После предупреждения выполняется Возврат: неверное количество не попадает в расчёт.

  5. При допустимом количестве вычисляем сумму по вымышленной цене 200, не записываем документ.

Как проверить результат

  1. Введите 0: появляется предупреждение, после закрытия сообщения о сумме нет, кнопка снова доступна.

  2. Введите 3: предупреждения нет, сумма 600. Введите 101: снова предупреждение без расчёта.

Ожидаемый результат

Показана законченная ветка проверки с ожиданием и обязательным выходом после ошибки.

На что обратить внимание

  1. Предупреждение не является подтверждением бизнес-действия и не возвращает КодВозвратаДиалога.Да.

  2. ПредупреждениеАсинх по справке этой платформы не доступно в веб-клиенте; там выбирайте подходящий callback-API.

  3. Для реальной записи диапазон нужно повторно проверить на сервере.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.