Сообщить() — просто показать информацию
Самый простой способ показать пользователю любую информацию.
Базовое использование
bsl&НаКлиенте Процедура ПоказатьПростоеСообщение(Кнопка) Сообщить("Документ успешно проведен!"); // Появится маленькое окошко в правом нижнем углу КонецПроцедуры
Сообщение с заголовком
bsl&НаКлиенте Процедура ПоказатьСообщениеСЗаголовком(Кнопка) Сообщить("Не все обязательные поля заполнены!", "Проверка заполнения"); // Заголовок окна КонецПроцедуры
Разные статусы сообщений
bsl&НаКлиенте Процедура ПоказатьРазныеТипыСообщений(Кнопка) // Обычное сообщение Сообщить("Все хорошо", Статус: СтатусСообщения.Обычное); // Предупреждение (желтое) Сообщить("Что-то пошло не так", Статус: СтатусСообщения.Предупреждение); // Важное сообщение (красное) Сообщить("Критическая ошибка!", Статус: СтатусСообщения.Важное); КонецПроцедуры
Вопрос() — спросить "Да" или "Нет"
Используется, когда нужно получить подтверждение от пользователя.
Простое подтверждение
bsl&НаКлиенте Процедура СпроситьПодтверждение(Кнопка) Ответ = Вопрос("Вы действительно хотите удалить документ?", "Подтверждение удаления", РежимДиалогаВопрос.ДаНет); Если Ответ = КодВозвратаДиалога.Да Тогда // Пользователь нажал "Да" УдалитьДокумент(); Иначе // Пользователь нажал "Нет" или закрыл окно Сообщить("Удаление отменено"); КонецЕсли; КонецПроцедуры
Разные типы вопросов
bsl&НаКлиенте Процедура РазныеТипыВопросов(Кнопка) // Да/Нет Ответ1 = Вопрос("Сохранить изменения?", , РежимДиалогаВопрос.ДаНет); // ОК/Отмена Ответ2 = Вопрос("Продолжить выполнение?", , РежимДиалогаВопрос.ОК); // Да/Нет/Отмена Ответ3 = Вопрос("Что делаем с файлом?", , РежимДиалогаВопрос.ДаНетОтмена); КонецПроцедуры
Обработка разных ответов
bsl&НаКлиенте Процедура ОбработатьСложныйОтвет(Кнопка) Ответ = Вопрос("Сохранить документ перед закрытием?", "Сохранение документа", РежимДиалогаВопрос.ДаНетОтмена); Выбор Когда Ответ = КодВозвратаДиалога.Да: СохранитьДокумент(); ЗакрытьОкно(); Когда Ответ = КодВозвратаДиалога.Нет: ЗакрытьОкно(); // Без сохранения Когда Ответ = КодВозвратаДиалога.Отмена: // Ничего не делаем - остаемся в форме Возврат; КонецВыбора; КонецПроцедуры
ВвестиЗначение() — попросить ввести данные
Используется, когда нужно получить от пользователя конкретные данные.
Ввод строки
bsl&НаКлиенте Процедура ВвестиСтроку(Кнопка) ВведенноеЗначение = ""; Успех = ВвестиЗначение(ВведенноеЗначение, "Введите наименование товара", "Создание нового товара"); Если Успех Тогда // Пользователь нажал ОК и ввел значение СоздатьНовыйТовар(ВведенноеЗначение); Иначе // Пользователь нажал Отмена Сообщить("Ввод отменен"); КонецЕсли; КонецПроцедуры
Ввод числа
bsl&НаКлиенте Процедура ВвестиЧисло(Кнопка) ВведенноеЧисло = 0; Успех = ВвестиЗначение(ВведенноеЧисло, "Введите количество", "Заказ товара"); Если Успех Тогда Если ВведенноеЧисло > 0 Тогда УстановитьКоличество(ВведенноеЧисло); Иначе Сообщить("Количество должно быть больше нуля!"); КонецЕсли; КонецЕсли; КонецПроцедуры
Ввод даты
bsl&НаКлиенте Процедура ВвестиДату(Кнопка) ВведеннаяДата = Дата(); Успех = ВвестиЗначение(ВведеннаяДата, "Введите дату отгрузки", "Формирование отгрузки"); Если Успех Тогда Если ВведеннаяДата >= Дата() Тогда УстановитьДатуОтгрузки(ВведеннаяДата); Иначе Сообщить("Дата не может быть в прошлом!"); КонецЕсли; КонецЕсли; КонецПроцедуры
Практические примеры
Пример 1: Комплексный диалог
bsl&НаКлиенте Процедура КомплексныйДиалог(Кнопка) // 1. Спрашиваем подтверждение Ответ = Вопрос("Создать новый документ?", "Новый документ", РежимДиалогаВопрос.ДаНет); Если Ответ <> КодВозвратаДиалога.Да Тогда Возврат; КонецЕсли; // 2. Запрашиваем данные Наименование = ""; Если Не ВвестиЗначение(Наименование, "Введите наименование документа", "Создание") Тогда Сообщить("Создание отменено"); Возврат; КонецЕсли; // 3. Создаем документ СоздатьДокумент(Наименование); // 4. Показываем результат Сообщить("Документ """ + Наименование + """ успешно создан!"); КонецПроцедуры
Пример 2: Ввод с проверкой
bsl&НаКлиенте Процедура ВвестиEmailСПроверкой(Кнопка) Email = ""; // Повторяем пока пользователь не введет корректный email или не отменит Пока Истина Цикл Если Не ВвестиЗначение(Email, "Введите email адрес", "Регистрация") Тогда Возврат; // Пользователь отменил КонецЕсли; // Простая проверка email Если СтрНайти(Email, "@") > 0 Тогда Прервать; // Email корректен КонецЕсли; Сообщить("Некорректный email адрес! Попробуйте еще раз."); КонецЦикла; СохранитьEmail(Email); КонецПроцедуры
Сравнительная таблица
| Инструмент | Назначение | Возвращаемое значение | Когда использовать |
|---|---|---|---|
| Сообщить() | Показать информацию | Нет | Уведомления, результаты операций |
| Вопрос() | Спросить Да/Нет | КодВозвратаДиалога | Подтверждения, выбор действия |
| ВвестиЗначение() | Получить данные | Булево (успех) | Ввод произвольных данных |
Частые ошибки
Ошибка 1: Неправильная обработка ответа
bsl// НЕПРАВИЛЬНО Ответ = Вопрос("Сохранить?", , РежимДиалогаВопрос.ДаНет); Если Ответ = Истина Тогда ... // Так не работает! // ПРАВИЛЬНО Ответ = Вопрос("Сохранить?", , РежимДиалогаВопрос.ДаНет); Если Ответ = КодВозвратаДиалога.Да Тогда ...
Ошибка 2: Использование ВвестиЗначение без проверки
bsl// НЕПРАВИЛЬНО ВвестиЗначение(Имя, "Введите имя"); СоздатьЗапись(Имя); // Если отмена - Имя будет пустым! // ПРАВИЛЬНО Если ВвестиЗначение(Имя, "Введите имя") Тогда СоздатьЗапись(Имя); // Только если не отмена КонецЕсли;
Полезные советы
-
Для простых уведомлений используйте
Сообщить() -
Для подтверждения действий используйте
Вопрос() -
Для ввода данных используйте
ВвестиЗначение() -
Всегда проверяйте не нажал ли пользователь "Отмена"
-
Используйте понятные тексты — пользователь должен точно понимать, что от него хотят
Запомните: Хороший диалог с пользователем — это когда программа задает понятные вопросы и дает четкие ответы!
