При работе с визуализацией данных в 1С, особенно при построении графиков и планов проектов, часто используется объект ДиаграммаГанта. Это мощный инструмент для отображения задач и их длительности на временной шкале. Однако разработчики сталкиваются с ограничением: по умолчанию для одной точки (задачи) и одной серии можно отобразить только один временной интервал. Попытка добавить новое событие на ту же дату для той же точки просто затирает предыдущее.
Проанализируем ситуацию, с которой столкнулся автор вопроса: необходимо для одной задачи (например, «Подготовить решение ЦЗК о единственном поставщике») в один и тот же день (например, 08.09) отобразить несколько событий (например, создание нескольких документов «Закупочная процедура»). Как это сделать, если диаграмма Ганта заменяет одно событие другим?
Рассмотрим основные подходы к решению этой задачи, их преимущества и недостатки.
Этот способ, несмотря на кажущуюся «костыльность», является основным и наиболее функциональным решением в рамках стандартного объекта ДиаграммаГанта. Суть метода заключается в том, чтобы программно обходить ограничение «один интервал на одну точку в одной серии».
Логика ограничения: Диаграмма Ганта идентифицирует уникальный интервал по комбинации Точка + Серия. Если для существующей комбинации добавить новый интервал, старый будет перезаписан.
Как обойти: Чтобы показать несколько интервалов, относящихся к одной точке, нужно сделать так, чтобы для каждого интервала комбинация «Точка + Серия» была уникальной. Поскольку точка у нас одна и та же, уникальность достигается за счет создания новой серии для каждого нового события.
Разберем по шагам, как это реализовать:
Точка в диаграмме Ганта.Точке, но к своей, только что созданной, уникальной Серии.В результате такого подхода диаграмма отобразит несколько полос-интервалов, расположенных друг под другом. Все они будут относиться к одной задаче.
Улучшение визуального представления:
Чтобы такое представление не выглядело как набор разрозненных задач, а четко ассоциировалось с одной родительской точкой, можно применить небольшой визуальный трюк. Если ваша диаграмма отображает наименования точек в левой колонке, можно программно объединить ячейки с названием точки по вертикали. Таким образом, одно название задачи будет охватывать все строки с ее событиями, делая вид диаграммы логичным и аккуратным.
Этот метод является компромиссом между возможностями стандартного инструмента и требованиями задачи. Он полностью сохраняет интерактивность диаграммы Ганта, но требует дополнительной логики при формировании данных для нее.
Если интерактивность диаграммы (перетаскивание интервалов, всплывающие подсказки и т.д.) не является критическим требованием для заказчика, отличной альтернативой может стать формирование отчета в виде ТабличногоДокумента.
Преимущества:
Недостатки:
Этот вариант идеально подходит для печатных форм отчетов или для вывода информации, которая не требует дальнейшего оперативного редактирования пользователем.
В ходе обсуждения были упомянуты и другие варианты, которые стоит рассмотреть.
Проанализировав задачу, можно сделать следующий вывод: стандартный объект ДиаграммаГанта в 1С не предназначен для отображения нескольких интервалов в рамках одной точки и одной серии. Наиболее правильным и рабочим решением, сохраняющим интерактивность, является создание отдельной серии для каждого события, с последующим визуальным объединением строк для родительской задачи.
Если же интерактивность не важна, а в приоритете стоит гибкость отображения, то лучшим выбором будет самостоятельное формирование графика в ТабличномДокументе.