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