Где может быть скрыто условное оформление в динамическом списке 1С?

Программист 1С v8.3 (Управляемые формы)
← На главную

При работе с управляемыми формами в 1С:Предприятие 8.3 разработчики часто сталкиваются с ситуацией, когда элементы динамического списка (строки или ячейки) окрашиваются или меняют шрифт, хотя в свойствах самой формы раздел Условное оформление пуст. Более того, глобальный поиск по коду не выдает результатов по ключевому слову УсловноеОформление. В этой статье мы подробно разберем, где именно может "прятаться" такая настройка, и проанализируем алгоритм поиска скрытого оформления.

Разберем структуру динамического списка

Прежде всего, нам необходимо понять важную архитектурную особенность управляемых форм. Динамический список — это сложный объект, который состоит из трех уровней, на каждом из которых может быть задано свое оформление:

  1. Уровень формы: общее оформление для всей формы.
  2. Уровень элемента формы: оформление конкретной таблицы, отображающей список.
  3. Уровень реквизита формы: оформление внутри настроек компоновки данных самого динамического списка.

Рассмотрим по шагам каждое из этих мест, а также дополнительные механизмы платформы.

Проверка свойств реквизита "Динамический список"

Чаще всего разработчики ищут оформление в свойствах формы, забывая, что динамический список базируется на системе компоновки данных (СКД). Выясним причину, заглянув в свойства самого реквизита.

Выполним следующие действия в конфигураторе:

  1. Откроем нужную управляемую форму.
  2. Перейдем на вкладку Реквизиты (обычно справа).
  3. Найдем реквизит с типом ДинамическийСписок (обычно он называется "Список").
  4. В окне свойств этого реквизита найдем гиперссылку Настройка списка (она находится рядом со свойством "Основная таблица" или "Произвольный запрос").
  5. В открывшемся окне "Настройка компоновки данных" перейдем на вкладку Условное оформление.

Именно здесь чаще всего скрываются настройки, которые применяются ко всем пользователям по умолчанию, так как они вшиты в саму структуру метаданных реквизита формы. Это оформление имеет приоритет и применяется автоматически при инициализации списка.

Анализ элемента формы (Таблицы)

Теперь рассмотрим ситуацию, когда оформление задано на уровне визуального элемента. Проанализируем свойства таблицы на форме. Хотя многие считают, что у списка нет своего отдельного оформления, это не так. У элемента формы типа "Таблица", связанного с динамическим списком, есть своя коллекция оформления.

Посмотрим на дерево элементов формы. Выделим таблицу списка и в окне свойств найдем пункт Условное оформление. Важно не путать его с аналогичным пунктом в свойствах корня формы. Оформление элемента формы удобно тем, что оно привязано конкретно к этому визуальному объекту и не затрагивает другие элементы на той же форме.

Программное создание оформления без явного поиска

Если визуальный поиск в конфигураторе не дал результатов, проанализируем программный код. Бывает так, что поиск по слову УсловноеОформление ничего не находит. Это случается, если разработчик использовал методы обхода или универсальные процедуры. Рассмотрим пример, как оформление может быть добавлено скрыто:


// Пример неявного обращения через структуру или массив
ЭлементНастройки = Список.КомпоновкаДанных.Настройки.УсловноеОформление.Элементы.Добавить();
// Или использование внешних функций из состава БСП
ОформлениеСписковКлиентСервер.УстановитьУсловноеОформление(ЭтаФорма, "Список", ПараметрыОформления);

В данном случае стандартный поиск может подвести. Попробуем выполнить поиск по фразе Настройки.УсловноеОформление или просто по имени реквизита (например, "Список"), чтобы отследить все манипуляции с ним в процедурах ПриСозданииНаСервере или ПриЧтенииНаСервере.

Использование подписок на события

Ситуация усложняется, если оформление добавляется централизованно для всей конфигурации. Выясним, нет ли в системе подписок на события. Проанализируем объект Подписки на события в дереве метаданных. Нас интересуют события ПриСозданииНаСервере, источником которых является УправляемаяФорма.

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

Влияние расширений конфигурации

Если вы работаете в типовой конфигурации или проекте с расширениями, обязательно проверьте их. Расширение может перехватывать метод ПриСозданииНаСервере и программно добавлять элементы в УсловноеОформление через аннотации &После или &Вместо.

Для проверки этого предположения откройте форму в режиме конфигуратора и воспользуйтесь командой Показать расширения формы. Также можно временно отключить расширения в базе, чтобы проверить, исчезнет ли оформление.

Хранилище настроек и настройки по умолчанию

Если оформление появляется даже у новых пользователей, это может означать, что в системе работает механизм копирования настроек. Проанализируем, не используются ли в конфигурации функции БСП для управления настройками пользователей. Иногда настройки формы (включая условное оформление, сделанное пользователем в режиме "1С:Предприятие") программно устанавливаются как "стандартные" при первом запуске системы пользователем через ХранилищеОбщихНастроек.

Резюме по поиску

Подводя итог, если вы столкнулись с "невидимым" условным оформлением, следуйте этому алгоритму:

  1. Проверьте вкладку Условное оформление в свойствах самой Формы.
  2. Проверьте ту же вкладку в свойствах Элемента формы (Таблицы).
  3. Зайдите в свойства Реквизита (Список), нажмите Настройка списка и проверьте оформление в СКД.
  4. Выполните поиск по коду не только слова УсловноеОформление, но и обращений к КомпоновкаДанных.Настройки.
  5. Проверьте Расширения и Подписки на события.

Использование этих шагов позволит вам найти источник оформления в 100% случаев, даже если оно реализовано не самым очевидным способом.

← На главную