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