Содержание

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


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

По умолчанию все дополнительные поля, которые настроит Администратор Системы, у пользователя в интерфейсе Ганта будут скрыты, но при необходимости пользователь может:

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

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

Доступные для вывода LINQ-запросы

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

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

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

Настройка полей из LINQ-запроса

Какие поля выводить

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

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

Название и Псевдоним

Тип поля

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

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

если А > 10, то зеленый индикатор;
если А > 20, то красный индикатор

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

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

Проверка настройки

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

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

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

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

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

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

Механизм отображения полей из LINQ-запроса

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

Как пользователю вывести поля в Ганте

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

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

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

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

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

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

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

Правила отображения Индикатора

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

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

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

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

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

Фильтр по пользовательским полям

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

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

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

Экспорт

Обработка ошибок

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

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

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

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

Требования к написанию корректного LINQ-запроса

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

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

где:

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