Содержание

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

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

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

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

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

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

Эта настройка – сквозная для всей системы. Настроить разные LINQ-запросы для вывода в Диаграмме Ганта нельзя.

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

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

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

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

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

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

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

Тип поля

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

При сохранении настроек отображения диаграммы Ганта (Опция «Сохранить настройки»), сохраняется видимость и порядок полей 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-запросу диаграммой Ганта) и всех его дочерних объектов.
В противном случае данный запрос не будет виден в списке для привязки к диаграмме Ганта.