Вывод полей из LINQ-запроса в Диаграмму Ганта

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

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

Пример пошаговой настройки изложен здесь: "Как вывести "Отклонение базового плана" и "Статус отклонения" в Диаграмму Ганта".

Вы можете настроить для отображения в диаграмме Ганта поля из любого настроенного LINQ-запроса, в котором:

  • включена опция «Может использоваться в диаграмме Ганта»;
  • есть поле ObjectId (т.е. запрос возвращает записи о данных по объектам дерева проектов).
Эта настройка – сквозная для всей системы. Настроить разные LINQ-запросы для вывода в Диаграмме Ганта нельзя.

Если в системе нет ни одного подходящего LINQ-запроса, то раздел содержит только текст «Нет ни одного источника данных с колонкой "ObjectId"».

Выберите тот LINQ-запрос в выпадающем списке, поля из которого хотите вывести в Гант → Настроить.

Вы можете выводить поля из LINQ-запроса выборочно. Вы сами определяете, что именно нужно выводить в Ганте, отмечая чек-боксом в колонке те поля, которые должны появиться у пользователя в "Пользовательских колонках" в Ганте.

По умолчанию все чек-боксы не активны.

  • «Название поля» – то название поля, который возвращает LINQ-запрос.
    • Поле ObjectId настроить нельзя.
  • «Псевдоним» – то, как это поле будет отображаться в диаграмме Ганта в интерфейсе пользователя. По умолчанию название не указано.

Поле «Тип» содержит выпадающий список с типами данных полей.

Поддерживаемые типы данных:

  • Строка. Без указания формата данных. Значение по умолчанию.
  • Число.
    При указании данного типа правее отображается выпадающий список с указанием формата данных.
    Три значения с сортировкой сверху-вниз: «Число», «Денежный» и «Процент».
    По умолчанию указывается формат «Число».
    Используются региональные настройки операционной системы.
  • Дата. При указании данного типа правее отображается выпадающий список с указанием формата данных. Два значения с сортировкой сверху-вниз: «Дата» и «Дата и время». По умолчанию указывается формат «Дата». Использовать региональные настройки операционной системы.
  • Индикатор:
    • При указании данного типа правее добавляется подсказка и кнопка «Добавить» для добавления нового индикатора.
    • При нажатии на кнопку «Добавить» добавляется индикатор соответствующего цвета.
      • Цвет индикатора определяется на основе уже добавленных индикаторов по следующему алгоритму сверху вниз:
        • Добавить индикатор с зеленым цветом (63D16F) по умолчанию, если его нет.
        • Добавить индикатор с оранжевым цветом (F6B40E) по умолчанию, если его нет.
        • Добавить индикатор с красным цветом (EE1927) по умолчанию, если его нет.
        • Если индикаторы со всеми тремя цветами выше присутствуют, то добавить индикатор с синим цветом (00C2FF) по умолчанию.
      • У каждого индикатора есть поле ввода для указания логического выражения. Поддерживаются числа и операторы сравнения (=, !=, >=, ⇐, >, <).
        • Проверка на корректность составленного логического выражения не производится.
        • Логика сопоставления значения конкретному индикатору осуществляется по принципу их расположения сверху вниз до первого выполнения условия.
          К примеру, логическое выражение составлено так:
          если А > 10, то зеленый индикатор; 
          если А > 20, то красный индикатор

          то значению А = 25 будет присвоен зеленый индикатор, т.к. по порядку расположения индикаторов сверху вниз условие зеленого индикатора выполнилось первым и остальные не проверяются.

        • Любой индикатор можно удалить.
        • Цвет каждого индикатора можно изменить через стандартную палитру.

По нажатию на кнопку «Сохранить» страница «Настройка полей из LINQ-запроса…» закрывается. Открывается страница «Настройка диаграммы Ганта»:

Если настройка уже произведена, и поля для отображения выбраны, они выводятся на странице "Настройка диаграммы Ганта" в виде краткой таблицы, содержащей название включенного поля и его тип, соответственно.

  • Если у поля указан псевдоним, то отображается он.
  • Если нет, то название поля из LINQ-запроса.

Над таблицей отображается название настроенного LINQ-запроса.

Созданную настройку можно отвязать и создать новую – кнопка "Отвязать настройки".

Если в колонке (Отображать в диаграмме Ганта) страницы «Настройка полей из LINQ-запроса «Название_запроса» не активен ни один чекбокс, то в разделе «Настройка полей из LINQ-запроса» страницы «Настройка диаграммы Ганта» отображается выпадающий список с LINQ-запросами и кнопкой «Настроить».

При этом настройки для раннее настраиваемого LINQ-запроса сохраняются, если снова выбрать его и нажать «Настроить».

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

Доступные значения:

  • Загружать – данные пользовательских полей загружаются полностью: и при основной загрузке диаграммы, и после неё. Значение по умолчанию (прежнее поведение).
  • Только предзагрузка – LINQ-запрос выполняется один раз при основной загрузке диаграммы.
  • Только постзагрузка – LINQ-запрос выполняется после того, как диаграмма уже построена: диаграмма открывается быстрее, а значения пользовательских полей подгружаются позже.
  • Не загружать – LINQ-запрос за данными пользовательских полей не выполняется. Поля остаются настроенными, но их значения в диаграмме не отображаются.
Настройка «Режим загрузки» – сквозная для всей системы: одно значение действует для всех пользователей и всех диаграмм Ганта.

Настройка предназначена для управления производительностью: выполнение LINQ-запроса за пользовательскими полями может быть ресурсоёмким, поэтому «Режим загрузки» позволяет отложить этот запрос (постзагрузка) или полностью отключить его (не загружать), ускоряя открытие диаграммы Ганта.

Изменения одинаковы для диаграммы Ганта, открытой с уровня любого объекта Системы.

В выпадающем списке (у любой из колонок диаграммы Ганта) выводится новый пункт «Пользовательские столбцы». Пункт виден, только если к Ганту настроен и привязан LINQ-запрос.

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

Названия полей LINQ-запроса берутся из колонки «Псевдоним», если оно заполнено. Если не заполнено, то из колонки «Название».

Каждое поле имеет чекбокс. По умолчанию не отмечен.

При активации чекбокса:

  • В таблицу диаграммы Ганта добавляется соответствующее поле LINQ-запроса с данными.
  • Запрос данных по полю LINQ-запроса происходит следующим образом:
    • LINQ-запросу передается идентификатор объекта, с карточки которого открыта диаграмма Ганта.
    • LINQ-запросом возвращается таблица с данными, включающая поля:
    • ObjectId – идентификаторы объекта (который был передан LINQ-запросу) и всех его дочерних объектов.

Происходит сопоставление идентификаторов объектов, подгруженных в диаграмму Ганта, с идентификаторами объектов поля ObjectId и заполнение поля соответствующими данными.

Запрос данных по полю происходит разово. Данные сохраняются до обновления страницы с диаграммой Ганта.

Поля LINQ-запроса доступны только для просмотра.

Поля с типом «Индикатор»:

  • Содержат индикатор в форме круга, выровненный по центру ячейки поля.
  • Цвет индикатора согласно настроенному логическому выражению.
  • Размер индикатора вписан в высоту ячейки поля.

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

При сохранении настроек отображения диаграммы Ганта (Опция «Сохранить настройки»), сохраняется видимость и порядок полей LINQ-запроса согласно выбранным настройкам.

При изменении настроек видимости полей на странице «Настройка полей из LINQ-запроса «Название_запроса»» изменяются и сохраненные настройки отображения диаграммы Ганта.
Например, если у поля LINQ-запроса был деактивирован чекбокс в колонке (Отображать в диаграмме Ганта), то из таблицы диаграммы Ганта данное поле пропадает, несмотря на то, что оно было отображено при сохранении настроек отображения диаграммы Ганта (Опция «Сохранить настройки»).

Если у соответствующего объекта, загруженного в диаграмму Ганта, LINQ-запрос по соответствующему полю вернул пустое значение, то и в соответствующей строке этого поля отображается пустое значение.

Начиная с версии 3.29 появилась возможность фильтровать строки в табличной части по значениям пользовательских полей - данных, включенных в Гант из привязанного LINQ-запроса.

Фильтрация доступна по текстовым значениям столбцов, а также по столбцам с типом «Индикатор».


Фильтры по по пользовательским полям работают по аналогии с фильтрами для системных полей - для всех фильтров работает возможность множественной фильтрации.

  • При выборе нескольких значений для одного фильтра выборка формируется с использованием логического «ИЛИ» – общая выборка увеличивается.
  • При фильтрации по нескольким фильтрам выборка формируется с использованием логического «И» – общая выборка уменьшается.

Экспорт диаграммы Ганта:

  • в .pdf и .png поддерживает поля LINQ-запроса;
  • в .xls не поддерживает поля LINQ-запроса.

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

Если поле LINQ-запроса отображено в диаграмме Ганта, то при изменении типа поля в самом LINQ-запросе (когда возникает ситуация невозможности конвертации в тип, указанный в колонке «Тип»), поле отображает пустые данные. Ошибка в диаграмме Ганта не выводится.

Переименованное поле в LINQ-запросе расценивается, как новое поле.

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

С целью фильтрации возвращаемых данных LINQ-запрос должен учитывать передаваемый диаграммой Ганта идентификатор объекта (RootProjectId) с карточки которого она открыта. Требование не обязательное и необходимо для оптимизации запроса. Для оптимизации запроса добавьте в него следующую строку:

var objectID = parameters.GetValueOrDefault<Guid>("RootProjectId", new Guid("daba2cbb-a4a9-4708-9366-5dd3ead1f172"));

где

  • RootProjectId – передаваемый диаграммой Ганта идентификатор объекта,
  • new Guid("daba2cbb-a4a9-4708-9366-5dd3ead1f172") – идентификатор любого объекта системы, необходимый для отладки запроса.

LINQ-запрос должен обязательно возвращать поле ObjectId – идентификаторы объекта (который был передан LINQ-запросу диаграммой Ганта) и всех его дочерних объектов.
В противном случае данный запрос не будет виден в списке для привязки к диаграмме Ганта.