Как реализовать прогресс-бар в ячейке таблицы 1С:Предприятие?

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

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

Использование условного оформления для раскраски фона

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

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

  1. Создадим в ТаблицеЗначений колонку с процентом выполнения.
  2. В свойствах формы добавим Условное оформление.
  3. Настроим правило: если значение колонки попадает в определенный диапазон, окрашивать фон ячейки в соответствующий цвет (например, красный для низкого выполнения, зеленый для высокого).

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

Создание индикатора через несколько колонок

Если задача требует именно полосового индикатора, но использование ДиаграммыГанта избыточно, мы можем воспользоваться методом «сегментированного заполнения». Суть заключается в том, чтобы разбить визуальное пространство на несколько соседних ячеек.

Рассмотрим логику реализации:

  1. Добавим в таблицу набор колонок, которые будут имитировать сегменты прогресс-бара.
  2. Программно будем менять цвет фона каждой ячейки в зависимости от общего процента выполнения.

Для управления цветом фона в модуле формы можно использовать следующий подход:


Процедура ПриВыводеСтрокиНаСервере(СтрокаДанных, СтрокаТаблицы)
    Процент = СтрокаДанных.ПроцентВыполнения;
    // Окрашиваем колонки сегментов в зависимости от процента
    Если Процент >= 25 Тогда
        СтрокаТаблицы.Оформление.Ячейка1.ЦветФона = WebЦвета.Зеленый;
    КонецЕсли;
    Если Процент >= 50 Тогда
        СтрокаТаблицы.Оформление.Ячейка2.ЦветФона = WebЦвета.Зеленый;
    КонецЕсли;
КонецПроцедуры

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

Для создания «дизайнерского» вида мы рекомендуем использовать Картинки. Платформа 1С позволяет выводить в ячейку колонки картинку, которая может меняться динамически. Вы можете подготовить набор графических файлов: пустой бар, заполненный на 25%, 50%, 75% и 100%.

При выводе строки достаточно присвоить соответствующую картинку ячейке таблицы на основе вычисленного значения. Это выглядит эстетично и практически не нагружает систему при отрисовке списка.

Вставка HTML-документа для сложной визуализации

Если же вам необходим «настоящий» прогресс-бар с анимацией и градиентами, воспользуйтесь элементом формы ПолеHTMLДокумента. Внутри такого поля можно разместить полноценный HTML/CSS код, который будет отрисовывать любой прогресс-бар.

Проанализируем процесс интеграции:

  1. Подготовим шаблон HTML-кода с использованием CSS-стилей для отображения полосы прогресса.
  2. В коде 1С будем динамически подменять значение ширины (width) элемента div в зависимости от данных строки.
  3. Передадим сформированный HTML в элемент формы через свойство УстановитьТекст.

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

Заключение и рекомендации

При выборе метода визуализации прогресса важно соблюдать баланс между красотой и производительностью. Мы рекомендуем:

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

← На главную