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