Как визуализировать загрузку сотрудников в виде временного графика с расшифровкой в 1С?

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

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

Вариант 1. Использование стандартного объекта Диаграмма Ганта

Этот инструмент является классическим решением для отображения временных шкал. Диаграмма Ганта позволяет сопоставить объекты (точки) с их состояниями во времени (интервалы).

Проанализируем структуру данных, которая потребуется для построения. Вам не нужно «переворачивать» или транспонировать исходную таблицу из регистра. Система сама распределит данные, если вы правильно определите три ключевые составляющие:

Рассмотрим пример программного заполнения диаграммы Ганта:


// Создаем объект Диаграмма Ганта на форме
НовыйИнтервал = Диаграмма.УстановитьЗначение(ТекущаяТочка, ТекущаяСерия);
НовыйИнтервал.Начало = Выборка.ДатаНачала;
НовыйИнтервал.Конец = Выборка.ДатаОкончания;
НовыйИнтервал.Текст = "Загрузка: " + Выборка.НомерДокумента;
НовыйИнтервал.Расшифровка = Выборка.Регистратор;

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

Вариант 2. Специализированная Диаграмма планирования

Если вы работаете на современной платформе 1С 8.3, рекомендуем обратить внимание на объект ДиаграммаПланирования. Она во многом схожа с диаграммой Ганта, но обладает рядом преимуществ для решения прикладных задач планирования ресурсов.

Выясним основные отличия:

  1. Гибкая шкала времени: Вы можете легко настроить детализацию — от месяцев до пятиминутных интервалов.
  2. Интерактивность: Она лучше поддерживает перетаскивание (Drag-and-drop) элементов, если пользователю нужно не только смотреть, но и оперативно менять время загрузки.
  3. Отображение ресурсов: Изначально спроектирована под задачи «кто, когда и чем занят».

Вариант 3. Визуализация через Табличный документ

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

Разберем этот метод по шагам:

Для реализации расшифровки в ячейку или область записывается параметр Расшифровка. Посмотрите на пример кода:


Область = Макет.ПолучитьОбласть("Строка|Интервал");
Область.Параметры.ТекстИнтервала = "Сотрудник А: Загружен";
Область.Параметры.Расшифровка = СсылкаНаРегистратор;
// Устанавливаем цвет и границы для имитации прямоугольника
Область.ТекущаяОбласть.ЦветФона = ЦветаСтиля.ОсобоеБронирование;
ТабДок.Вывести(Область);

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

Вариант 4. Система компоновки данных (СКД)

Самый быстрый способ без написания кода — использование встроенных возможностей СКД. В настройках структуры отчета вы можете выбрать тип Диаграмма, а в типе диаграммы указать Диаграмма Ганта.

Проанализируем настройку в СКД:

  1. В поле Ресурсы добавьте ваши даты (минимум даты начала и максимум даты окончания).
  2. В Группировках точек укажите сотрудника или регистратор.
  3. В Группировках серий укажите вид деятельности.
  4. Чтобы добавить цифры и буквы внутрь «прямоугольников», используйте вкладку Макеты в СКД для переопределения макета поля или группировки.

Вариант 5. Использование Поля HTML-документа

Если требования к дизайну выходят за рамки возможностей платформы (например, нужны градиенты, анимация или специфические шрифты), можно использовать ПолеHTMLДокумента. В этом случае данные из 1С передаются в формате JSON внутрь HTML-контейнера, а отрисовка выполняется с помощью JavaScript-библиотек (например, Google Charts или D3.js).

Это наиболее трудоемкий путь, однако он позволяет создать интерфейс уровня современных веб-приложений. Взаимодействие с 1С (расшифровка) при этом реализуется через процедуру ПриНажатии в поле HTML, которая может вызвать экспортную процедуру модуля формы 1С.

Резюме и рекомендации

Подводя итог, можно сказать следующее: для быстрого результата и стандартных задач планирования лучше всего подходит Диаграмма Ганта через СКД или программно. Если важна высокая степень кастомизации текста внутри блоков — используйте Табличный документ. Если требуется современный интерфейс с возможностью ручного управления интервалами — выбирайте Диаграмму планирования.

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

← На главную