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