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