Как вывести сообщение пользователю в 1С
Способ зависит от того, что нужно показать:
- ход работы, отладка, итог обработки —
Сообщить; - ошибка заполнения формы —
СообщениеПользователюс полем; - важное, что нельзя пропустить, —
ПоказатьПредупреждение; - нужен выбор пользователя —
ПоказатьВопрос.
Сообщить — текст в окне сообщений
Сообщить("Документ проведён");Текст появляется в окне сообщений внизу формы. Сообщить работает и на клиенте, и на сервере: сообщения с сервера пользователь увидит, когда вызов вернётся на клиент. Для отладки и простых обработок этого достаточно.
СообщениеПользователю — с привязкой к полю
В формах документов и справочников сообщение лучше привязать к полю — тогда пользователь щёлкнет по сообщению и попадёт в поле, которое нужно исправить:
&НаКлиенте
Процедура ПроверитьСклад(Команда)
Если Не ЗначениеЗаполнено(Объект.Склад) Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не указан склад";
Сообщение.Поле = "Объект.Склад";
Сообщение.Сообщить();
КонецЕсли;
КонецПроцедурыТекст— что показать;Поле— путь к реквизиту формы, у основного реквизита формы —Объект.Имя;ЗначениеЗаполненовозвращаетЛожьдля пустой ссылки, нуля, пустой строки и пустой даты.
ПоказатьПредупреждение — окно с кнопкой «ОК»
&НаКлиенте
Процедура Готово(Команда)
ПоказатьПредупреждение(, "Загрузка закончена");
КонецПроцедурыПервый параметр — что сделать после закрытия окна; если ничего не нужно, его оставляют пустым, но запятую ставят. Окно показывается только на клиенте.
Вопрос пользователю
Окно с кнопками «Да» и «Нет» показывает ПоказатьВопрос. Ответ приходит не сразу, а в отдельную процедуру, которую указывают через ОписаниеОповещения:
&НаКлиенте
Процедура Очистить(Команда)
Оповещение = Новый ОписаниеОповещения("ОчиститьЗавершение", ЭтотОбъект);
ПоказатьВопрос(Оповещение, "Очистить список?", РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Сообщить("Список очищен");
КонецЕсли;
КонецПроцедурыПроцедура-обработчик ответа обязательно с Экспорт — иначе платформа её не найдёт.
«Использование модальных окон в данном режиме запрещено»
Такую ошибку дают старые функции Предупреждение() и Вопрос(): они останавливали код до ответа пользователя (модальные окна). В современных конфигурациях модальность выключена, потому что её не поддерживает веб-клиент и мобильные устройства. Замените их:
| Было | Стало |
|---|---|
Предупреждение("Текст") | ПоказатьПредупреждение(, "Текст") |
Вопрос("Текст", РежимДиалогаВопрос.ДаНет) | ПоказатьВопрос(Оповещение, "Текст", РежимДиалогаВопрос.ДаНет) и процедура для ответа |
Режим работы с модальностью задаётся в свойствах конфигурации, но включать модальность обратно в современной конфигурации не стоит.