Выводит на экран окно предупреждения, но не ожидает его закрытия.
Синтаксис
ПоказатьПредупреждение(<ОписаниеОповещенияОЗавершении>, <ТекстПредупреждения>, <Таймаут>, <Заголовок>)Примеры платформы
ПоказатьПредупреждение(,НСтр("ru = 'Выберите документ!'; en = 'Select a document!'"), 10);Полное описание, параметры и ограничения
Глобальный контекст.ПоказатьПредупреждение (Global context.ShowMessageBox)
Глобальный контекст (Global context)
ПоказатьПредупреждение (ShowMessageBox)
Доступен, начиная с версии 8.3.3.
Синтаксис:
ПоказатьПредупреждение(<ОписаниеОповещенияОЗавершении>, <ТекстПредупреждения>, <Таймаут>, <Заголовок>)
Параметры:
<ОписаниеОповещенияОЗавершении> (необязательный)
Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана после закрытия окна предупреждения со следующими параметрами:
<ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения.
Если параметр не указан, то по завершении никакая процедура вызвана не будет.
<ТекстПредупреждения> (обязательный)
Тип: Строка, ФорматированнаяСтрока.
Текст предупреждения.
<Таймаут> (необязательный)
Тип: Число.
Интервал времени в секундах, в течение которого система будет ожидать ответа пользователя. По истечении интервала окно предупреждения будет закрыто. Если параметр не указан, то время ожидания не ограничено.
Если параметр имеет отрицательное значение, будет сгенерировано исключение.
Значение по умолчанию: 0.
<Заголовок> (необязательный)
Тип: Строка.
Содержит заголовок окна предупреждения.
Если не установлен, то у диалога заголовок не отображается.
Описание:
Выводит на экран окно предупреждения, но не ожидает его закрытия.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).
Примечание:
Если после закрытия пользователем окна предупреждения должен быть выполнен какой-либо код, то его нужно разместить в отдельной процедуре модуля и описать ее в параметре <ОписаниеОповещенияОЗавершении>.
Ширина всех кнопок диалога одинакова и равна ширине самой широкой кнопки.
Ширина текста в диалоге ограничена 40 символами.
Пример:
ПоказатьПредупреждение(,НСтр("ru = 'Выберите документ!'; en = 'Select a document!'"), 10);
Использование в версии:
Доступен, начиная с версии 8.3.3.
Методическая информация
Практические примеры
Очистить учебную панель сообщений, не путая её с журналом регистрации
ОчиститьСообщения убирает сообщения клиентского сеанса, не строки базы и не журнал регистрации. Упражнение выполняется только в новом сеансе отдельной учебной базы.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
Создайте отдельную учебную внешнюю обработку с пустой управляемой основной формой. Каждую задачу запускайте в своей копии формы.
Не добавляйте вручную реквизит ЗначениеПримера, поле ПолеПримера и команду УчебноеДействие: их создаст код.
В свойствах формы → События свяжите ПриСозданииНаСервере с одноимённой процедурой. Вставьте весь модуль, включая клиентские и серверные процедуры.
Сохраните учебную EPF и откройте через Файл → Открыть в тонком или толстом клиенте Windows. Рабочие данные не читаются и не записываются.
Используйте новую пустую учебную базу и отдельную копию EPF для каждой задачи. Команды не должны обращаться к рабочим данным, внешним сервисам или процедурам записи.
Основной пример выполняется в тонком/толстом клиенте Windows. Доступность веб-клиента оговаривается отдельно; наличие Асинх в имени не гарантирует веб-доступность.
ОБЯЗАТЕЛЬНО новый сеанс отдельной пустой учебной базы. Очистка панели сообщений необратима для её старого содержимого.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Новые = Новый Массив;
ТипРеквизита = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(12, 2));
Новые.Добавить(Новый РеквизитФормы("ЗначениеПримера", ТипРеквизита));
ЭтаФорма.ИзменитьРеквизиты(Новые);
ЭтаФорма.ЗначениеПримера = 3;
Поле = Элементы.Добавить("ПолеПримера", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеВвода;
Поле.ПутьКДанным = "ЗначениеПримера";
Поле.Заголовок = "Учебное количество";
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Учебная очистка сообщений";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Сообщить("Первое собственное учебное сообщение");
Сообщить("Второе собственное учебное сообщение");
ПоказатьПредупреждение(Новый ОписаниеОповещения("ОчиститьУчебнуюПанель", ЭтаФорма),
"После закрытия будут очищены ВСЕ сообщения этого учебного сеанса.", 0, "Только отдельная учебная база");
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьУчебнуюПанель(ДополнительныеПараметры) Экспорт
ОчиститьСообщения();
Сообщить("Старая панель сообщений очищена; это новое собственное сообщение");
КонецПроцедуры
Разбор по шагам
Запускайте в новом сеансе собственной пустой базы, где нет нужных чужих диагностических сообщений.
Добавляем два собственных сообщения, чтобы результат очистки было видно.
После закрытия предупреждения одноаргументный callback очищает ВСЮ панель сеанса.
Затем добавляем новое сообщение: оно не удалено предшествующей очисткой.
Никаких методов ОчиститьЖурналРегистрации или удаления данных здесь нет.
Как проверить результат
До закрытия предупреждения видны два собственных сообщения, после — только новое сообщение об очистке.
Собственные документы/справочники не изменились; журнал регистрации не очищался.
Ожидаемый результат
На видимом результате разделены клиентские сообщения и постоянная диагностика базы.
На что обратить внимание
Метод не умеет очистить только сообщения одной формы: он затрагивает панель сообщений сеанса.
Не запускайте упражнение в рабочем сеансе: нужные сообщения исчезнут и не восстановятся этой командой.
Оповещения пользователя, журнал регистрации и сообщения панели — разные механизмы.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Подать один сигнал при неверном количестве и показать понятное сообщение
Звук зависит от устройства и настроек ОС. Правило проверки и визуальное предупреждение остаются необходимыми даже при отключённом звуке.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
Создайте отдельную учебную внешнюю обработку с пустой управляемой основной формой. Каждую задачу запускайте в своей копии формы.
Не добавляйте вручную реквизит ЗначениеПримера, поле ПолеПримера и команду УчебноеДействие: их создаст код.
В свойствах формы → События свяжите ПриСозданииНаСервере с одноимённой процедурой. Вставьте весь модуль, включая клиентские и серверные процедуры.
Сохраните учебную EPF и откройте через Файл → Открыть в тонком или толстом клиенте Windows. Рабочие данные не читаются и не записываются.
Используйте тонкий/толстый клиент Windows собственной учебной базы. Веб-клиент для Сигнал не указан в доступности этой версии.
Тип реквизита имеет 5 общих разрядов, 2 дробных и знак Любой: от -999.99 до 999.99. Он сохраняет 3, дробное 1.5 и недопустимые по правилу команды 0, -1, 101; запрет неверного диапазона выполняется кодом, не знаком числового типа.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Новые = Новый Массив;
ТипРеквизита = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(5, 2, ДопустимыйЗнак.Любой));
Новые.Добавить(Новый РеквизитФормы("ЗначениеПримера", ТипРеквизита));
ЭтаФорма.ИзменитьРеквизиты(Новые);
ЭтаФорма.ЗначениеПримера = 3;
Поле = Элементы.Добавить("ПолеПримера", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеВвода;
Поле.ПутьКДанным = "ЗначениеПримера";
Поле.Заголовок = "Учебное количество";
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Проверить количество со звуком";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Если ЗначениеПримера < 1 Или ЗначениеПримера > 100 Тогда
Сигнал();
ПоказатьПредупреждение(, "Количество должно быть от 1 до 100.", 0, "Учебная проверка");
Возврат;
КонецЕсли;
Сообщить("Количество допустимо; сумма только в памяти: " + Строка(ЗначениеПримера * 200));
КонецПроцедуры
Разбор по шагам
Количество проверяется условием, не фактом воспроизведения звука.
При ошибке вызываем один Сигнал и отдельное визуальное предупреждение.
Возврат завершает неверную ветку сразу: закрытие окна не запускает расчёт.
При допустимом 3 выполняется только вычисление 600 в памяти.
Правило проверяет диапазон 1–100, не целочисленность. Допустимое дробное 1.5 даёт 300; результат вычисления — отдельное локальное число, не содержимое реквизита с пятью разрядами.
Как проверить результат
При 0 показывается предупреждение, расчёт не выполняется; наличие звука зависит от ОС.
При 3 предупреждения и сигнала нет, сумма 600. Отключение звука не отменяет проверку диапазона.
Границы 1 и 100 дают 200 и 20000; 1.5 даёт 300. При -1 или 101 показывается предупреждение, вычисление не выполняется.
Ожидаемый результат
Разделены проверка данных, визуальное предупреждение и необязательная звуковая обратная связь.
На что обратить внимание
Сигнал не должен быть единственным способом объяснить ошибку пользователю.
Это не отправка звука другому участнику и не уведомление фонового сервиса.
В реальной системе серверная проверка нужна отдельно; клиентский звук ничего не гарантирует.
Этот учебный диапазон допускает дробные количества с двумя знаками. Не переносите его на целые штуки без отдельного бизнес-правила. Первоначальный текст большей точности здесь не проверяется: команда получает уже типизированное значение поля.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.