Разработка и Конфигурация · 9 мин
Как построить диаграмму Ганта в 1С
Пошаговая инструкция по построению диаграммы Ганта в 1С: объект ДиаграммаГанта, программное заполнение точками, интервалами и связями, типичные ошибки и FAQ.
Диаграмма Ганта в 1С — это специализированный объект, предназначенный для визуализации задач, этапов и событий во времени. Он применяется в планировании производства, управлении проектами, диспетчеризации транспорта и в любых задачах, где нужно показать, какая работа когда начинается, сколько длится и от чего зависит. В типовых конфигурациях (например, в решениях для планирования производства) диаграмма уже встроена, но разработчик может создать её и в собственной конфигурации.
Объект ДиаграммаГанта работает по той же модели, что и обычная диаграмма: данные задаются через точки (строки плана), серии (группировку) и значения. Специфика в том, что значением выступает не число, а интервал — пара «начало/конец», плюс поддерживаются связи между интервалами, которые отображаются стрелками зависимостей. Заполнять диаграмму можно программно из запроса, таблицы значений или вручную в режиме предприятия.
Ниже разобраны два практических пути: использование готовой диаграммы в типовой конфигурации и построение собственной с нуля в конфигураторе. Отдельно рассмотрены заполнение связями, настройка отображения, проверка результата и типичные ошибки, из-за которых диаграмма выглядит пустой или «ломается».
Что понадобится и как выбрать подход
Прежде чем строить диаграмму, определите, какой сценарий вам подходит. Если вы работаете в типовом решении с модулем планирования (например, производственное планирование или планирование задач), диаграмма Ганта, скорее всего, уже есть — её нужно только найти в интерфейсе и настроить отбор. Это самый быстрый путь, не требующий правок конфигурации.
Если типовой диаграммы нет или она не покрывает ваши данные, потребуется доработка: доступ в конфигуратор, права на изменение конфигурации (или расширение), а также источник данных — документы или регистры, где хранятся задачи с датами начала и окончания. Без структурированных дат (отдельных полей «ДатаНачала» и «ДатаОкончания») построить корректную диаграмму не получится: сначала нужно привести данные в порядок.
Как выбрать действие
Использование готовой диаграммы в типовой конфигурации
В типовых решениях диаграмма Ганта обычно находится в разделах планирования: план производства, график работ, план задач проекта. Откройте соответствующий отчёт или рабочее место, задайте период планирования и при необходимости отборы по подразделению, исполнителю или заказу. Диаграмма перестроится автоматически по данным информационной базы.
Обратите внимание на интерактивные возможности: во многих типовых решениях интервалы можно перетаскивать мышью, меняя сроки задач, а изменения записываются обратно в документы. Перед таким редактированием убедитесь, что понимаете, какие документы будут перезаписаны, и что у вас есть резервная копия или возможность отменить изменение.
Создание диаграммы на форме в конфигураторе
Для собственной диаграммы создайте обработку или откройте форму нужного объекта. Добавьте реквизит формы типа ДиаграммаГанта и перетащите его в дерево элементов формы — платформа создаст поле диаграммы. Установите свойства: автоопределение периода, отображение легенды, шкалу времени (часы, дни, недели) в зависимости от горизонта планирования.
Если диаграмма должна быть интерактивной, включите свойство, разрешающее изменение значений, и напишите обработчики событий окончания редактирования интервала. Для диаграммы «только просмотр» эти свойства лучше отключить, чтобы пользователь случайно не сдвинул данные.
Программное заполнение точками и интервалами
Логика заполнения строится в три шага: очистить диаграмму, создать точки (строки плана — например, исполнителей или заказы), затем для каждой точки добавить интервалы с датами. Точки могут быть иерархическими: родительская точка «Проект» с подчинёнными точками «Этап» даёт сворачиваемую структуру.
Типовой фрагмент кода заполнения выглядит так:
Диаграмма.Очистить();
Диаграмма.Обновление = Ложь;
Точка = Диаграмма.УстановитьТочку("Заказ1");
Точка.Текст = "Заказ № 101";
Серия = Диаграмма.УстановитьСерию("Работы");
Значение = Диаграмма.ПолучитьЗначение(Точка, Серия);
Интервал = Значение.Добавить();
Интервал.Начало = ДатаНачала;
Интервал.Конец = ДатаОкончания;
Интервал.Текст = "Сборка";
Диаграмма.Обновление = Истина;
Отключение обновления (Обновление = Ложь) на время заполнения существенно ускоряет построение при большом количестве точек и интервалов: диаграмма не перерисовывается после каждого добавления. Не забудьте вернуть Обновление = Истина в конце, иначе пользователь увидит пустую диаграмму.
- 1Создайте реквизит формы типа ДиаграммаГанта и разместите его на форме
- 2Очистите диаграмму и отключите обновление на время заполнения
- 3Создайте точки по строкам плана (исполнители, заказы, этапы)
- 4Для каждой точки добавьте интервалы с датами начала и окончания из запроса
- 5Добавьте связи между интервалами, если нужны зависимости
- 6Включите обновление и проверьте отображение на форме
Связи между интервалами и настройка отображения
Зависимости «финиш-старт» и другие типы связей добавляются через коллекцию связей значения диаграммы: указывается интервал-источник, интервал-приёмник и тип связи. Связи отображаются стрелками и позволяют показать критический путь проекта. Учтите, что большое число связей перегружает картинку — имеет смысл выводить только ключевые зависимости.
Для читаемости настройте цвета интервалов (например, по статусу задачи), подписи точек и формат шкалы времени. Цвет интервала задаётся через свойство Цвет, текст — через Текст. Полезно также настроить всплывающую подсказку с расшифровкой: исполнитель, процент выполнения, длительность.
Проверка результата и производительность
После построения сверьте диаграмму с источником: количество строк должно совпадать с числом точек, даты интервалов — с датами в документах. Проверьте граничные случаи: задачи, попадающие на границу периода, задачи без даты окончания, пустые точки. Для больших объёмов данных ограничивайте выборку периодом и отборами — вывод тысяч интервалов заметно тормозит отрисовку формы.
Как проверить результат
Совпадает с количеством точек из источника данных
Строк больше (дубли) или меньше (потеряны точки)
Совпадают с датами в документах, конец позже начала
Интервалы сдвинуты, обрезаны или отсутствуют
Диаграмма открывается за приемлемое время на типовом объёме
Форма подвисает — нужно ограничить период и отборы
Стрелки соединяют правильные интервалы
Связи указывают не туда или отсутствуют
FAQ
Можно ли построить диаграмму Ганта без изменения конфигурации?
Да, если в типовом решении есть встроенный механизм планирования с диаграммой. Также можно создать внешнюю обработку с диаграммой — конфигурация при этом не изменяется, обработка подключается через «Дополнительные отчеты и обработки» или открывается файлом.
Чем диаграмма Ганта отличается от обычной диаграммы в 1С?
Обычная диаграмма отображает числовые значения (столбики, графики, круговые), а диаграмма Ганта — интервалы времени с датами начала и окончания, плюс связи между ними. Модель «точки и серии» у них общая, но тип значения и назначение разные.
Почему диаграмма пустая, хотя код заполнения выполняется без ошибок?
Чаще всего не возвращено свойство Обновление = Истина после заполнения либо данные запроса пустые из-за отборов. Также проверьте, что даты начала и окончания действительно заполнены и конец позже начала.
Можно ли редактировать сроки задач прямо на диаграмме?
Да, при включённом интерактивном редактировании интервалы перетаскиваются мышью. Чтобы изменения сохранялись, нужно написать обработчик события окончания редактирования и записать новые даты в документы или регистры.
Как показать иерархию «проект — этапы — задачи»?
Создавайте точки с указанием родителя: метод установки точки принимает родительскую точку как параметр. Платформа отобразит дерево со сворачиванием, а по родительской точке можно выводить суммарный интервал.
Что важно запомнить
Диаграмма Ганта в 1С строится объектом ДиаграммаГанта: точки задают строки плана, интервалы — сроки работ, связи — зависимости. Отключайте обновление на время заполнения и возвращайте его после, проверяйте корректность дат, ограничивайте объём данных периодом. В типовых конфигурациях сначала ищите готовый механизм планирования, прежде чем разрабатывать свой.