Глиф Учебники

Как вывести сообщение пользователю в 1С

Справочник · 1С:Предприятие · 1 минута чтения

Способ зависит от того, что нужно показать:

Сообщить — текст в окне сообщений

1С
Сообщить("Документ проведён");

Текст появляется в окне сообщений внизу формы. Сообщить работает и на клиенте, и на сервере: сообщения с сервера пользователь увидит, когда вызов вернётся на клиент. Для отладки и простых обработок этого достаточно.

СообщениеПользователю — с привязкой к полю

В формах документов и справочников сообщение лучше привязать к полю — тогда пользователь щёлкнет по сообщению и попадёт в поле, которое нужно исправить:

1С
&НаКлиенте
Процедура ПроверитьСклад(Команда)
    Если Не ЗначениеЗаполнено(Объект.Склад) Тогда
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Не указан склад";
        Сообщение.Поле = "Объект.Склад";
        Сообщение.Сообщить();
    КонецЕсли;
КонецПроцедуры

ПоказатьПредупреждение — окно с кнопкой «ОК»

1С
&НаКлиенте
Процедура Готово(Команда)
    ПоказатьПредупреждение(, "Загрузка закончена");
КонецПроцедуры

Первый параметр — что сделать после закрытия окна; если ничего не нужно, его оставляют пустым, но запятую ставят. Окно показывается только на клиенте.

Вопрос пользователю

Окно с кнопками «Да» и «Нет» показывает ПоказатьВопрос. Ответ приходит не сразу, а в отдельную процедуру, которую указывают через ОписаниеОповещения:

1С
&НаКлиенте
Процедура Очистить(Команда)
    Оповещение = Новый ОписаниеОповещения("ОчиститьЗавершение", ЭтотОбъект);
    ПоказатьВопрос(Оповещение, "Очистить список?", РежимДиалогаВопрос.ДаНет);
КонецПроцедуры

&НаКлиенте
Процедура ОчиститьЗавершение(Ответ, ДополнительныеПараметры) Экспорт
    Если Ответ = КодВозвратаДиалога.Да Тогда
        Сообщить("Список очищен");
    КонецЕсли;
КонецПроцедуры

Процедура-обработчик ответа обязательно с Экспорт — иначе платформа её не найдёт.

«Использование модальных окон в данном режиме запрещено»

Такую ошибку дают старые функции Предупреждение() и Вопрос(): они останавливали код до ответа пользователя (модальные окна). В современных конфигурациях модальность выключена, потому что её не поддерживает веб-клиент и мобильные устройства. Замените их:

БылоСтало
Предупреждение("Текст")ПоказатьПредупреждение(, "Текст")
Вопрос("Текст", РежимДиалогаВопрос.ДаНет)ПоказатьВопрос(Оповещение, "Текст", РежимДиалогаВопрос.ДаНет) и процедура для ответа

Режим работы с модальностью задаётся в свойствах конфигурации, но включать модальность обратно в современной конфигурации не стоит.