Почему гистограмма в 1С теряет цвет при обновлении и как это исправить?

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

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

Анализ причины проблемы

Данная ситуация чаще всего возникает, когда диаграмма размещена в табличном поле или на форме как отдельный элемент управления. Когда пользователь кликает по области диаграммы, компонент переходит в состояние интерактивного выделения. В этом режиме визуальный движок 1С автоматически подсвечивает выбранный элемент, а остальные данные делает «блеклыми», чтобы сфокусировать внимание пользователя на конкретной точке или серии.

Проблема заключается в том, что при программном обновлении содержимого диаграммы (вызове метода очистки или перерисовки) состояние выделения не всегда сбрасывается корректно. В результате визуальный стиль «затемнения», примененный к фоновым данным, сохраняется, и вся диаграмма выглядит выцветшей. Обычные команды обновления формы или самого поля диаграммы, такие как Обновить(), в данном случае оказываются бессильны, так как они не затрагивают внутреннее состояние фокуса графического контрола.

Решение проблемы через изменение свойств диаграммы

Наиболее эффективным и простым способом решения данной задачи является принудительное отключение механизма интерактивного выделения. Если ваша задача — отображение аналитической информации без необходимости взаимодействия пользователя с элементами диаграммы (например, без открытия расшифровок по клику), то этот метод подойдет идеально.

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

Разберем по шагам

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

Посмотрим на пример кода, который необходимо вставить в соответствующий обработчик события:


// Предположим, что Диаг — это объект Диаграмма, размещенный на форме
Диаг.РежимВыделения = РежимВыделенияДиаграммы.Нет;

После применения этой настройки диаграмма перестанет реагировать на клики в плане изменения цветовой гаммы. Она будет вести себя как чисто визуальный (статичный) объект. Это значит, что при любом программном обновлении данных (будь то полное перестроение или частичное изменение серий) визуальные настройки цветов будут сохраняться в первоначальном, ярком виде.

Дополнительные рекомендации по управлению диаграммами

Если же по логике вашего отчета интерактивность все-таки необходима, и вы хотите сохранить возможность кликать по диаграмме, но при этом избежать эффекта «блеклости», вы можете использовать другой подход. Он заключается в программном сбросе текущего выделения непосредственно перед или сразу после процедуры обновления данных.

Выясним, какие свойства позволяют это сделать. Вы можете принудительно обнулить текущую выбранную точку или серию:


// Программный сброс выделения после обновления данных
Диаг.ТекущаяТочка = Неопределено;
Диаг.ТекущаяСерия = Неопределено;

Таким образом, мы проанализировали ситуацию, выяснили, что причиной является механизм выделения графического компонента 1С в обычных формах, и нашли два пути решения: полное отключение интерактивности через свойство РежимВыделения или принудительный сброс выделения программным методом. Выбирайте тот способ, который лучше всего соответствует задачам вашего отчета.

← На главную