Вывод полей из LINQ-запроса в Диаграмму Ганта
Вы можете настроить произвольные поля для вывода в диаграмме Ганта, которые будут наиболее точно отвечать вашим потребностям и бизнес-процессу.
По умолчанию все дополнительные поля, которые настроит Администратор Системы, у пользователя в интерфейсе Ганта будут скрыты, но при необходимости пользователь может:
- Вывести их через стандартный инструмент отображения скрытых колонок в табличной части диаграммы.
- Сохранить это представление для дальнейшей работы.
Пример пошаговой настройки изложен здесь: "Как вывести "Отклонение базового плана" и "Статус отклонения" в Диаграмму Ганта".
Доступные для вывода LINQ-запросы
Вы можете настроить для отображения в диаграмме Ганта поля из любого настроенного LINQ-запроса, в котором:
- включена опция «Может использоваться в диаграмме Ганта»;
- есть поле
ObjectId(т.е. запрос возвращает записи о данных по объектам Дерева проектов).
Если в Системе нет ни одного подходящего LINQ-запроса, то раздел содержит только текст «Нет ни одного источника данных с колонкой ObjectId».
Выберите тот LINQ-запрос в выпадающем списке, поля из которого хотите вывести в Гант → Настроить.
Настройка полей из LINQ-запроса
Какие поля выводить
Вы можете выводить поля из LINQ-запроса выборочно. Вы сами определяете, что именно нужно выводить в Ганте, отмечая чек-боксом в колонке
те поля, которые должны появиться у пользователя в «Пользовательских колонках» в Ганте.
По умолчанию все чек-боксы не активны.
Название и Псевдоним
- «Название поля» - то название поля, который возвращает LINQ-запрос. Поле
ObjectIdнастроить нельзя. - «Псевдоним» - то, как это поле будет отображаться в диаграмме Ганта в интерфейсе пользователя. По умолчанию название не указано.
Тип поля
Поле «Тип» содержит выпадающий список с типами данных полей.
Поддерживаемые типы данных:
- Строка - без указания формата данных. Значение по умолчанию;
- Число - при указании данного типа правее отображается выпадающий список с указанием формата данных. Три значения с сортировкой сверху-вниз: «Число», «Денежный» и «Процент». По умолчанию указывается формат «Число». Используются региональные настройки операционной Системы;
- Дата - при указании данного типа правее отображается выпадающий список с указанием формата данных. Два значения с сортировкой сверху-вниз: «Дата» и «Дата и время». По умолчанию указывается формат «Дата». Использовать региональные настройки операционной Системы.
- Индикатор:
- при указании данного типа правее добавляется подсказка и кнопка «Добавить» для добавления нового индикатора;
- при нажатии на кнопку «Добавить» добавляется индикатор соответствующего цвета. Цвет индикатора определяется на основе уже добавленных индикаторов по следующему алгоритму сверху вниз:
- добавить индикатор с зеленым цветом (63D16F) по умолчанию, если его нет;
- добавить индикатор с оранжевым цветом (F6B40E) по умолчанию, если его нет;
- добавить индикатор с красным цветом (EE1927) по умолчанию, если его нет;
- если индикаторы со всеми тремя цветами выше присутствуют, то добавить индикатор с синим цветом (00C2FF) по умолчанию.
- у каждого индикатора есть поле ввода для указания логического выражения. Поддерживаются числа и операторы сравнения (=, !=, >=, ⇐, >, <):
- проверка на корректность составленного логического выражения не производится;
- логика сопоставления значения конкретному индикатору осуществляется по принципу их расположения сверху вниз до первого выполнения условия. К примеру, логическое выражение составлено так:
если А > 10, то зеленый индикатор; если А > 20, то красный индикатор
то значению А = 25 будет присвоен зеленый индикатор, т.к. по порядку расположения индикаторов сверху вниз условие зеленого индикатора выполнилось первым и остальные не проверяются;
- любой индикатор можно удалить;
- цвет каждого индикатора можно изменить через стандартную палитру.
По нажатию на кнопку «Сохранить» страница «Настройка полей из LINQ-запроса…» закрывается. Открывается страница «Настройка диаграммы Ганта».
Проверка настройки
Если настройка уже произведена, и поля для отображения выбраны, они выводятся на странице «Настройка диаграммы Ганта» в виде краткой таблицы, содержащей название включенного поля и его тип соответственно.
Если у поля указан псевдоним, то отображается он. Если нет, то название поля из LINQ-запроса.
Над таблицей отображается название настроенного LINQ-запроса.
Созданную настройку можно отвязать и создать новую - кнопка «Отвязать настройки».
Если в колонке
(Отображать в диаграмме Ганта) страницы «Настройка полей из LINQ-запроса «Название_запроса» не активен ни один чекбокс, то в разделе «Настройка полей из LINQ-запроса» страницы «Настройка диаграммы Ганта» отображается выпадающий список с LINQ-запросами и кнопкой «Настроить».
При этом настройки для раннее настраиваемого LINQ-запроса сохраняются, если снова выбрать его и нажать «Настроить».
Механизм отображения полей из LINQ-запроса
Изменения одинаковы для диаграммы Ганта, открытой с уровня любого объекта Системы.
Как пользователю вывести поля в Ганте
В выпадающем списке (у любой из колонок диаграммы Ганта) выводится новый пункт «Пользовательские столбцы». Пункт виден, только если к Ганту настроен и привязан LINQ-запрос.
При наведении на пункт «Пользовательские столбцы» выводится список с названиями тех полей LINQ запроса, у которых активирован чекбокс в колонке
(Отображать в диаграмме Ганта).
Названия полей LINQ-запроса берутся из колонки «Псевдоним», если оно заполнено. Если не заполнено, то из колонки «Название».
Каждое поле имеет чекбокс. По умолчанию не отмечен.
При активации чекбокса:
- в таблицу диаграммы Ганта добавляется соответствующее поле LINQ-запроса с данными;
- запрос данных по полю LINQ-запроса происходит следующим образом:
- LINQ-запросу передается идентификатор объекта, с карточки которого открыта диаграмма Ганта;
- LINQ-запросом возвращается таблица с данными, включающая поля:
ObjectId– идентификаторы объекта (который был передан LINQ-запросу) и всех его дочерних объектов.
Происходит сопоставление идентификаторов объектов, подгруженных в диаграмму Ганта, с идентификаторами объектов поля ObjectId и заполнение поля соответствующими данными.
Запрос данных по полю происходит разово. Данные сохраняются до обновления страницы с диаграммой Ганта.
Правила отображения Индикатора
Поля с типом «Индикатор»:
- содержат индикатор в форме круга, выровненный по центру ячейки поля;
- цвет индикатора согласно настроенному логическому выражению;
- размер индикатора вписан в высоту ячейки поля.
Если данные ячейки поля не соответствуют ни одному заданному логическому выражению (или выражения составлены некорректно), то индикатор в ней не отображается, ячейка поля пустая.
При сохранении настроек отображения диаграммы Ганта (Опция «Сохранить настройки»), сохраняется видимость и порядок полей LINQ-запроса согласно выбранным настройкам.
При изменении настроек видимости полей на странице «Настройка полей из LINQ-запроса «Название_запроса»» изменяются и сохраненные настройки отображения диаграммы Ганта. Например, если у поля LINQ-запроса был деактивирован чекбокс в колонке
(Отображать в диаграмме Ганта), то из таблицы диаграммы Ганта данное поле пропадает, несмотря на то, что оно было отображено при сохранении настроек отображения диаграммы Ганта (Опция «Сохранить настройки»).
Если у соответствующего объекта, загруженного в диаграмму Ганта, LINQ-запрос по соответствующему полю вернул пустое значение, то и в соответствующей строке этого поля отображается пустое значение.
Фильтр по пользовательским полям
Начиная с версии Системы 3.29 появилась возможность фильтровать строки в табличной части по значениям пользовательских полей - данных, включенных в Гант из привязанного LINQ-запроса.
Фильтрация доступна по текстовым значениям столбцов, а также по столбцам с типом «Индикатор».
Фильтры по по пользовательским полям работают по аналогии с фильтрами для системных полей - для всех фильтров работает возможность множественной фильтрации.
- При выборе нескольких значений для одного фильтра выборка формируется с использованием логического «ИЛИ» – общая выборка увеличивается.
- При фильтрации по нескольким фильтрам выборка формируется с использованием логического «И» – общая выборка уменьшается.
Экспорт
- в .pdf и .png поддерживает поля LINQ-запроса;
- в .xls не поддерживает поля LINQ-запроса.
Обработка ошибок
Если тип у включенного для отображения
поля 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-запросу диаграммой Ганта) и всех его дочерних объектов. В противном случае данный запрос не будет виден в списке для привязки к диаграмме Ганта.




