Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
product:linq:gantt [13.11.2020 14:29] – создано maynproduct:linq:gantt [14.10.2025 10:28] (текущий) ekaterina.menkhuzina
Строка 1: Строка 1:
-===== Вывод полей из LINQ-запроса в Диаграмму Ганта ====== +====== Вывод полей из LINQ-запроса в Диаграмму Ганта ====== 
-<callout type="danger" icon="true"> +{{tag>Реализация:настройка}}  
-Статья в разработке!! + 
-</callout>+Вы можете настроить произвольные поля для вывода в диаграмме Ганта, которые будут наиболее точно отвечать вашим потребностям и бизнес-процессу.  \\   
 +По умолчанию все дополнительные поля, которые настроит администратор системы, у пользователя в интерфейсе Ганта будут скрыты, но при необходимости пользователь может: 
 +  - вывести их через стандартный инструмент отображения скрытых колонок в табличной части диаграммы, 
 +  - сохранить это представление для дальнейшей работы.  \\  <image shape="thumbnail">{{ :product:linq:gantt:linq_example_15.png?nolink |}}</image> 
 + 
 +<callout type="success">Для корректной работы функционала необходимо, чтобы запрос возвращал данные. </callout> 
 + 
 +Пример пошаговой настройки изложен здесь: "[[product/linq/gantt/example_1|Как вывести "Отклонение базового плана" и "Статус отклонения" в Диаграмму Ганта]]"
 + 
 +=====Доступные для вывода LINQ-запросы===== 
 + 
 +Вы можете настроить для отображения в [[product/objects/gant|диаграмме Ганта]] поля из любого настроенного [[product:linq:new|LINQ-запроса]], в котором: 
 +  * включена опция «Может использоваться в диаграмме Ганта»; 
 +  * есть поле ObjectId (т.е. запрос возвращает записи о данных по [[product:objects:object_tree|объектам дерева проектов]]). 
 + 
 +<callout type="primary" icon="true">Эта настройка -- сквозная для всей системы. Настроить разные LINQ-запросы для вывода в Диаграмме Ганта нельзя.</callout> 
 + 
 +Если в системе нет ни одного подходящего LINQ-запроса, то раздел содержит только текст «Нет ни одного источника данных с колонкой "ObjectId"». 
 + 
 +Выберите тот LINQ-запрос в выпадающем списке, поля из которого хотите вывести в Гант -> Настроить. 
 + 
 +<image shape="thumbnail">{{ :product:linq:gantt_settings_2.png |}}</image> 
 + 
 +===== Настройка полей из LINQ-запроса===== 
 + 
 +==== Какие поля выводить ==== 
 +Вы можете выводить поля из LINQ-запроса выборочно. Вы сами определяете, что именно нужно выводить в Ганте, отмечая чек-боксом в колонке {{:product:linq:gantt:linq_example_12.png?nolink}} те поля, которые должны появиться у пользователя в "Пользовательских колонках" в Ганте. 
 + 
 +По умолчанию все чек-боксы не активны. 
 + 
 +==== Название и Псевдоним ==== 
 +  * «Название поля» -- то название поля, который возвращает LINQ-запрос. 
 +    * Поле ObjectId настроить нельзя.  
 +  * «Псевдоним» -- то, как это поле будет отображаться в диаграмме Ганта в интерфейсе пользователя. По умолчанию название не указано. 
 + 
 +==== Тип поля ==== 
 +Поле «Тип» содержит выпадающий список с типами данных полей. 
  
-4.1. Изменения на странице администрирования. Механизм настройки отображения в диаграмме Ганта полей из LINQ-запроса 
-4.1.1. На странице «Администрирование» в разделе «Дополнительные сервисы» существующий пункт «Гостевые системы» заменить на новый пункт «Диаграмма Ганта».  
-4.1.2. Пункт «Гостевые системы» сохранить только в горизонтальном меню страницы «Администрирование» в разделе «Дополнительные сервисы». Последовательность пунктов сверху вниз: 
-4.1.2.1. Конструктор дашбордов. 
-4.1.2.2. Диаграмма Ганта. 
-4.1.2.3. Информация об отчетах. 
-4.1.2.4. Управление мотивацией. 
-4.1.2.5. Гостевые системы. 
-4.1.3. Пункт «Диаграмма Ганта» представляет собой новую отдельную страницу «Настройка диаграммы Ганта» с двумя разделами настроек диаграммы Ганта: 
-4.1.3.1. Настройка полей из LINQ-запроса. 
-4.1.3.2. Визуальные настройки (п. 4.2). 
-  
-4.1.4. Раздел «Настройка полей из LINQ-запроса» страницы «Настройка диаграммы Ганта»: 
-4.1.4.1. Содержит выпадающий список с названиями всех LINQ-запросов, созданных в Системе, в которых одновременно: 
-4.1.4.1.1. включена опция «Может использоваться в диаграмме Ганта» (см. п.п.4.6). 
-4.1.4.1.2. возвращается колонка ObjectId (в поле ObjectId должны содержаться ID объектов Системы). 
-4.1.4.2. Cодержит кнопку «Настроить» по нажатию на которую в одной и той же вкладке браузера открывается отдельная страница «Настройка полей из LINQ-запроса «Название_запроса»».  
-4.1.4.3. Если в системе нет ни 1 LINQ-запроса, удовлетворяющего п.п.4.1.4.1 ТЗ, то раздел содержит только текст «Нет ни одного источника данных с колонкой "ObjectId"» (без кавычек). 
-  
-4.1.5. Страница «Настройка полей из LINQ-запроса «Название_запроса»» содержит таблицу с колонками: 
-  
-4.1.5.1.   (Отображать в диаграмме Ганта). Содержит чекбокс, отвечающий за отображение соответствующего поля LINQ-запроса в диаграмме Ганта. Чекбокс по умолчанию выключен. 
-4.1.5.2. «Название поля». Содержит список названий полей, который возвращает LINQ-запрос. Поле ObjectId без возможности настройки (чекбокс «Отображать в диаграмме Ганта» неактивен). 
-4.1.5.3. «Псевдоним». Содержит строковое поле ввода для указания названия соответствующего поля LINQ-запроса, которое будет отображаться в диаграмме Ганта. По умолчанию название не указано. 
-4.1.5.4. «Тип». Содержит выпадающий список с типами данных полей. По умолчанию указан тип «Строка». 
 Поддерживаемые типы данных: Поддерживаемые типы данных:
-4.1.5.4.1. Число. При указании данного типа правее отображается выпадающий список с указанием формата данных. Три значения с сортировкой сверху-вниз: «Число», «Денежный» и «Процент». По умолчанию указывается формат «Число». Использовать региональные настройки операционной системы. +  * **Строка**Без указания формата данныхЗначение по умолчанию. 
-  +  * **Число** \\  При указании данного типа правее отображается выпадающий список с указанием формата данных.  \\  Три значения с сортировкой сверху-вниз: «Число», «Денежный» и «Процент».  \\  По умолчанию указывается формат «Число».   \\  Используются региональные настройки операционной системы. 
-4.1.5.4.2. Дата. При указании данного типа правее отображается выпадающий список с указанием формата данных. Два значения с сортировкой сверху-вниз: «Дата» и «Дата и время». По умолчанию указывается формат «Дата». Использовать региональные настройки операционной системы. +  * **Дата**. При указании данного типа правее отображается выпадающий список с указанием формата данных. Два значения с сортировкой сверху-вниз: «Дата» и «Дата и время». По умолчанию указывается формат «Дата». Использовать региональные настройки операционной системы. 
-  +  * **Индикатор**
-4.1.5.4.3. Индикатор: +    При указании данного типа правее добавляется подсказка и кнопка «Добавить» для добавления нового индикатора.  
-При указании данного типа правее добавляется подсказка   и кнопка   «Добавить» для добавления нового индикатора.  +    При нажатии на кнопку «Добавить» добавляется индикатор соответствующего цвета.  
-При нажатии на кнопку   «Добавить» добавляется индикатор соответствующего цвета.  +      Цвет индикатора определяется на основе уже добавленных индикаторов по следующему алгоритму сверху вниз: 
-  +        Добавить индикатор с зеленым цветом (63D16F) по умолчанию, если его нет. 
-o Цвет индикатора определяется на основе уже добавленных индикаторов по следующему алгоритму сверху вниз: +        Добавить индикатор с оранжевым цветом (F6B40E) по умолчанию, если его нет. 
-Добавить индикатор с зеленым цветом (63D16F) по умолчанию, если его нет. +        Добавить индикатор с красным цветом (EE1927) по умолчанию, если его нет. 
-Добавить индикатор с оранжевым цветом (F6B40E) по умолчанию, если его нет. +        Если индикаторы со всеми тремя цветами выше присутствуют, то добавить индикатор с синим цветом (00C2FF) по умолчанию. 
-Добавить индикатор с красным цветом (EE1927) по умолчанию, если его нет. +      У каждого индикатора есть поле ввода для указания логического выражения. Поддерживаются числа и операторы сравнения (=, !=, >=, <=, >, <). 
-Если индикаторы со всеми тремя цветами выше присутствуют, то добавить индикатор с синим цветом (00C2FF) по умолчанию. +        Проверка на корректность составленного логического выражения не производится. 
- Все цвета индикаторов по умолчанию необходимо запоминать. +        Логика сопоставления значения конкретному индикатору осуществляется по принципу их расположения сверху вниз до первого выполнения условия. \\ К примеру, логическое выражение составлено так: <code> 
-o У каждого индикатора есть поле ввода для указания логического выражения. Поддерживаются числа и операторы сравнения (=, !=, >=, <=, >, <). +если А > 10, то зеленый индикатор 
-Проверка на корректность составленного логического выражения не производится. +если А > 20, то красный индикатор</code> то значению А = 25 будет присвоен зеленый индикатор, т.к. по порядку расположения индикаторов сверху вниз условие зеленого индикатора выполнилось первым и остальные не проверяются. 
-Логика сопоставления значения конкретному индикатору осуществляется по принципу их расположения сверху вниз до первого выполнения условия. К примеру, логическое выражение составлено так +        * Любой индикатор можно удалить. 
-если А > 10, то зеленый индикатор +        * Цвет каждого индикатора можно изменить через стандартную палитру.
-если А > 20, то красный индикатор,  +
-то значению А = 25 будет присвоен зеленый индикатор, т.к. по порядку расположения индикаторов сверху вниз условие зеленого индикатора выполнилось первым и остальные не проверяются. +
-o У каждого индикатора есть кнопка   для его удаления. +
-  +
-o У каждого индикатора есть возможность смены его цвета путем выбора цвета из имеющейся палитры, либо указанием в соответствующем поле ввода шестнадцатеричного кода цвета. +
-  +
-4.1.5.4.4. Строка. Без указания формата данных. Значение по умолчанию. +
-  +
-4.1.5.5. Содержит кнопки «Сохранить» и «Отмена»: +
-4.1.5.5.1. Кнопка «Сохранить» – сохраняет все изменения на странице «Настройка полей из LINQ-запроса «Название_запроса»»+
-4.1.5.5.2. Кнопка «Отмена» – отменяет не сохраненные изменения на странице «Настройка полей из LINQ-запроса «Название_запроса»». При этом страница закрывается и открывается страница «Настройка диаграммы Ганта». +
-4.1.5.5.3. По нажатию на кнопку «Сохранить» страница «Настройка полей из LINQ-запроса «Название_запроса»» закрывается. Открывается страница «Настройка диаграммы Ганта»: +
-• Если в колонке   (Отображать в диаграмме Ганта) страницы «Настройка полей из LINQ-запроса» активен чекбокс хотя бы у одного поля, то считается что LINQ-запрос привязан к диаграмме Ганта и в разделе «Настройка полей из LINQ-запроса» страницы «Настройка диаграммы Ганта»: +
-o Отображается таблица с 2 колонками (сортировка слева-направо) содержащая название поля (чекбокс в колонке   (Отображать в диаграмме Ганта) которого активен) и его тип, соответственно. Если у поля указан псевдоним, то отображается он. Если нет, то название поля из LINQ-запроса. +
-o Над таблицей отображается название настроенного LINQ-запроса. +
-o Правее кнопки «Настроить» появляется кнопка «Отвязать настройки». +
-  +
-• Если в колонке   (Отображать в диаграмме Ганта) страницы «Настройка полей из LINQ-запроса «Название_запроса»» не активен ни один чекбокс, то в разделе «Настройка полей из LINQ-запроса» страницы «Настройка диаграммы Ганта» отображается выпадающий список с LINQ-запросами (п.п. 4.1.4.1) и кнопкой «Настроить»: +
-  +
-o При этом настройки для раннее настраиваемого LINQ-запроса сохраняются, если снова выбрать его и нажать «Настроить». +
-4.1.5.5.4. По нажатию на кнопку «Отвязать настройки» выводить браузерное сообщение подтверждения действия с текстом формата: «Отвязать LINQ-запрос от диаграммы Ганта? Настройки будут сохранены», кнопками «Ок» и «Отмена»: +
-• При нажатии кнопки «Ок»: +
-o Происходит отвязка LINQ-запроса от диаграммы Ганта. +
-o Настройки для раннее настраиваемого LINQ-запроса сохраняются, но чекбоксы «Отображать в диаграмме Ганта» сбрасываются в значение по умолчанию (неактивны). +
-o Отображается выпадающий список с LINQ-запросами (п.п. 4.1.4.1) и кнопкой «Настроить». +
-  +
-• При нажатии кнопки «Отмена» браузерное сообщение подтверждения действия пропадает. Изменений не происходит.+
  
-4.2. Изменения на странице администрирования. Опция выделения жирным шрифтом всех родительских задач в диаграмме Ганта +<image shape="thumbnail">{{ :product:linq:gantt:linq_example_11.png }}</image>
-4.2.1. Страница «Настройка диаграммы Ганта» содержит раздел «Визуальные настройки». +
-4.2.2. Раздел расположен под разделом «Настройка полей из LINQ-запроса». +
-  +
-4.2.3. Раздел «Визуальные настройки» содержит чекбокс «Выделять жирным шрифтом родительские объекты». По умолчанию чекбокс отмечен (опция включена).  +
-4.2.4. При изменении состояния чекбокса происходит автоматическое его сохранение. +
-4.2.5. При активации чекбокса «Выделять жирным шрифтом родительские объекты» в диаграмме Ганта ко всем названиям объектов, имеющих видимые конкретному пользователю дочерние объекты, применяется полужирное начертание к тексту. +
-4.2.6. Полужирное начертание к тексту применяется/отменяется динамически в процессе работы с диаграммой Ганта.+
  
-4.3. Изменения в диаграмме Ганта. Механизм отображения полей из LINQ-запроса  +По нажатию на кнопку «Сохранить» страница «Настройка полей из LINQ-запроса...» закрывается. Открывается страница «Настройка диаграммы Ганта»:
-4.3.1. Изменения одинаковы для диаграммы Ганта, открытой с уровня любого объекта Системы. +
-4.3.2. В выпадающем списке (у любой из колонок диаграммы Ганта) добавить новый пункт «Пользовательские столбцы». Расположить под пунктом «Столбцы». Пункт виден, когда настроен и привязан LINQ-запрос в портлете «Настройка полей из LINQ-запроса» страницы администрирования «Настойка диаграммы Ганта». +
-  +
-4.3.3. При наведении на пункт «Пользовательские столбцы» выводится список с названиями тех полей LINQ запроса, у которых активирован чекбокс в колонке   (Отображать в диаграмме Ганта). +
-4.3.4. Названия полей LINQ-запроса берутся из колонки «Псевдоним» (п.п. 4.1.5.3), если оно заполнено. Если не заполнено, то из колонки «Название» (п.п. 4.1.5.2). +
-4.3.5. Каждое поле имеет чекбокс. По умолчанию не отмечен.  +
-4.3.6. При активации чекбокса: +
-4.3.6.1. В таблицу диаграммы Ганта добавляется соответствующее поле LINQ-запроса с данными. +
-4.3.6.2. Запрос данных по полю LINQ-запроса происходит следующим образом: +
-4.3.6.2.1. LINQ-запросу передается идентификатор объекта, с карточки которого открыта диаграмма Ганта. +
-4.3.6.2.2. LINQ-запросом возвращается таблица с данными, включающая поля:  +
-• ObjectId – идентификаторы объекта (который был передан LINQ-запросу) и всех его дочерних объектов. +
-• Поле из п.п. 4.3.6.1. +
-4.3.6.2.3. Происходит сопоставление идентификаторов объектов, подгруженных в диаграмму Ганта, с идентификаторами объектов поля ObjectId и заполнение поля из п.п. 4.3.6.1 соответствующими данными. +
-4.3.6.2.4. Запрос данных по полю происходит разово. Данные сохраняются до обновления страницы с диаграммой Ганта. +
-4.3.7. Поля LINQ-запроса доступны только для просмотра. +
-4.3.8. Поля с типом «Индикатор»: +
-4.3.8.1. Содержат индикатор в форме круга, выровненный по центру ячейки поля.  +
-4.3.8.2. Цвет индикатора согласно настроенному логическому выражению п.п. 4.1.5.4.3.  +
-4.3.8.3. Размер индикатора вписан в высоту ячейки поля.  +
-4.3.8.4. Если данные ячейки поля не соответствуют ни одному заданному логическому выражению (или выражения составлены некорректно), то индикатор в ней не отображается, ячейка поля пустая. +
-4.3.9. При сохранении настроек отображения диаграммы Ганта (Опция «Сохранить настройки»), сохраняется видимость и порядок полей LINQ-запроса согласно выбранным настройкам. +
-4.3.10. При изменении настроек видимости полей на странице «Настройка полей из LINQ-запроса «Название_запроса»» изменяются и сохраненные настройки отображения диаграммы Ганта. К примеру, если у поля LINQ-запроса был деактивирован чекбокс в колонке   (Отображать в диаграмме Ганта), то из таблицы диаграммы Ганта данное поле пропадает, не смотря на то, что оно было отображено при сохранении настроек отображения диаграммы Ганта (Опция «Сохранить настройки»). +
-4.3.11. Диаграмма Ганта поддерживает те типы полей LINQ-запроса, которые содержатся в списке колонки «Тип» (п.п. 4.1.5.4) на странице «Настройка полей из LINQ-запроса «Название_запроса»». +
-4.3.12. Если у соответствующего объекта, загруженного в диаграмму Ганта, LINQ-запрос по соответствующему полю вернул пустое значение, то и в соответствующей строке этого поля отображать пустое значение. +
-4.3.13. Экспорт диаграммы Ганта в pdf и png должен поддерживать поля LINQ-запроса. +
-4.3.14. Экспорт диаграммы Ганта в xls не поддерживает поля LINQ-запроса. +
-4.4. Обработка ошибок  +
-4.4.1. Если тип у поля LINQ-запроса, у которого активен чекбокс в колонке   (Отображать в Диаграмме Ганта),  не может быть сконвертирован в тип, указанный в колонке «Тип», то в диаграмме Ганта данное поле отображает пустые данные. Никакой ошибки в диаграмме Ганта не выводится. +
-4.4.2. Если поле LINQ-запроса отображено в диаграмме Ганта, то при изменении типа поля в самом LINQ-запросе (когда возникает ситуация невозможности конвертации в тип, указанный в колонке «Тип»), поле отображает пустые данные. Никакой ошибки в диаграмме Ганта не выводится.  +
-4.4.3. Переименованное поле в LINQ-запросе расценивать, как новое поле. +
-4.4.4. Проверка на корректность составленного логического выражения у типа «Индикатор» не производится. В диаграмме Ганта у соответствующего поля с некорректно составленным логическим выражением отображать пустое значение.+
  
-4.5. Требования к написанию корректного LINQ-запроса +==== Проверка настройки ==== 
-4.5.1. С целью фильтрации возвращаемых данных LINQ-запрос должен учитывать передаваемый диаграммой Ганта идентификатор объекта (RootProjectId) с карточки которого она открыта. Требование не обязательное и необходимо для оптимизации запроса. Для оптимизации запроса добавьте в него следующую строку: +Если настройка уже произведенаи поля для отображения выбраны, они выводятся на странице "Настройка диаграммы Ганта" в виде краткой таблицы, содержащей название включенного поля и его тип, соответственно.
-var objectID = parameters.GetValueOrDefault<Guid>("RootProjectId", new Guid("daba2cbb-a4a9-4708-9366-5dd3ead1f172")); +
-где  +
-RootProjectId – передаваемый диаграммой Ганта идентификатор объекта+
-new Guid("daba2cbb-a4a9-4708-9366-5dd3ead1f172") – идентификатор любого объекта системы, необходимый для отладки запроса+
-4.5.2. LINQ-запрос должен обязательно возвращать поле ObjectId – идентификаторы объекта (который был передан LINQ-запросу диаграммой Ганта) и всех его дочерних объектов. В противном случае данный запрос не будет виден в списке (п.п. 4.1.4.1) для привязки к диаграмме Ганта.+
  
-4.6. Изменения на странице написания LINQ-запроса +<image shape="thumbnail">{{ :product:linq:gantt:linq_example_14.png?nolink |}}</image>
-4.6.1. На странице создания LINQ-запроса добавить опцию «Может использоваться в диаграмме Ганта». +
-  +
-4.6.2. При активации чекбокса кнопка «Сохранить» заменяется на «Сделать запрос и сохранить». При нажатии кнопки «Сделать запрос и сохранить» запрос выполняется и сохраняется. +
-4.6.3. При деактивации чекбокса кнопка «Сделать запрос и сохранить» заменяется на «Сохранить». При нажатии кнопки «Сохранить» запрос сохраняется без выполнения. +
-4.6.4. На странице со списком всех созданных в Системе запросов добавить новую колонку «Используется в диаграмме Ганта». Поле содержит значения «Да» и «Нет» в зависимости включена или нет опция «Может использоваться в диаграмме Ганта» у соответствующих запросов. +
- +
  
-4.7. Перспективы развития +  * Если у поля указан псевдоним, то отображается он.  
-4.7.1. Предусмотреть возможность привязки к диаграмме Ганта созданного в Системе OLAP куба с загрузкой его показателей. +  * Если нет, то название поля из LINQ-запроса. 
-4.7.2. Реализовать механизм при котором данные в LINQ-колонках обновляются при сохранении диаграммы Ганта (по нажатию на кнопку «Сохранить» или автоматическом сохранении диаграммы Ганта при создании БП).+Над таблицей отображается название настроенного LINQ-запроса.
  
-5. Настройка функционала для Заказчика +Созданную настройку можно отвязать и создать новую -- кнопка "Отвязать настройки".
-5.1. Для автоматической настройки решения под Заказчика реализовать скрипт, который: +
-5.1.1. На странице написания LINQ-запросов создаст LINQ-запрос с названием «Расчет отклонения от базового плана». С целью фильтрации возвращаемых данных LINQ-запрос должен учитывать передаваемый диаграммой Ганта идентификатор объекта (RootProjectId) с карточки которого она открыта. И должен возвращать таблицу с колонками: +
-5.1.1.1. Обязательное поле ObjectId – идентификаторы всех дочерних объектов, включая родительский объект, с карточки которого открывается диаграмма Ганта и идентификатор которого передается LINQ-запросу при отображении его полей в табличной части диаграммы Ганта. +
-5.1.1.2. Поле №1 с отклонением от БП. Тип: Число. Содержит разницу (отклонение) в рабочих днях между соответствующими плановой или фактической датой окончания (ПДО или ФДО соответственно) и утвержденной датой окончания (УДО) по последней версии БП. Логика расчета для каждого соответствующего объекта п.п. 5.1.1.1: +
-5.1.1.2.1. Если у объекта есть УДО и ФДО, то отклонение = ФДО – УДО. +
-5.1.1.2.2. Если у объекта есть УДО, но нет ФДО, то отклонение = ПДО – УДО. +
-5.1.1.2.3. Если у объекта нет УДО, то расчет не производится. В соответствующей ячейке поля содержится пустое значение (не 0, а именно пустое значение). +
-5.1.1.2.4. Положительные значения говорят о просрочке, отрицательные – об опережении утвержденного срока в БП. +
-5.1.1.3. Поле №2 с числовым значением индикатора отклонения от БП. Тип: Число. Логика расчета для каждого соответствующего объекта п.п.5.1.1.1: +
-5.1.1.3.1. Если значение поля №1 в диапазоне (-∞; 7], то в поле №2 записывается значение = 1. +
-5.1.1.3.2. Если значение поля №1 в диапазоне (7; 14], то в поле №2 записывается значение = 2. +
-5.1.1.3.3. Если значение поля №1 в диапазоне (14; +∞], то в поле №2 записывается значение = 3. +
-5.1.1.3.4. Если значение поля №1 пустое, то в поле №2 ничего не записывается (остается пустое значение). +
-5.1.2. На странице «Настройка полей из LINQ-запроса «Расчет отклонения от базового плана»» произведет следующие настройки: +
-5.1.2.1. Поле №1 с отклонением от БП: +
-5.1.2.1.1.   (Отображать в Диаграмме Ганта): чекбокс отмечен. +
-5.1.2.1.2. Псевдоним: Отклонение от БП. +
-5.1.2.1.3. Тип: Число. +
-5.1.2.1.4. Формат: Число. +
-5.1.2.2. Поле №2 с числовым значением индикатора отклонения от БП: +
-5.1.2.2.1.   (Отображать в Диаграмме Ганта): чекбокс отмечен. +
-5.1.2.2.2. Псевдоним: Статус отклонения. +
-5.1.2.2.3. Тип: Индикатор. +
-• Для зеленого индикатора указать логическое выражение «=1» (без кавычек). +
-• Для оранжевого индикатора указать логическое выражение «=2» (без кавычек). +
-• Для красного индикатора указать логическое выражение «=3» (без кавычек). +
-5.1.2.3. Сохранит произведенные настройки+
-5.2. Настройка должна быть одинакова для диаграммы Ганта, открытой с уровня любого объекта Системы. Запрос должен быть реализован так, что для вновь добавленных типов объектов (на странице «Администрирование») будет действовать логика расчета, заложенная в нем (в запросе указывать не конкретный тип объекта, а обобщенный тип). +
-5.3. По итогу выполнения скрипта в диаграмме Ганта: +
-5.3.1. В выпадающем списке (у любой из колонок диаграммы Ганта) при наведении на пункт «Пользовательские столбцы» отображаются два поля «Отклонение от БП» и «Статус отклонения», соответственно.  +
-  +
-5.3.2. Поля можно добавить в таблицу диаграммы Ганта. Поля содержат данные согласно написанному LINQ-запросу: +
-5.3.2.1. «Отклонение от БП» – число, отображающее отклонение от БП. +
-5.3.2.2. «Статус отклонения» – цветовой индикатор, отображающий статус отклонения от БП. Если у объекта нет УДО, то индикатор не отображается. +
-  +
-5.3.3. Настройка (п.п. 5.3.1-5.3.2) одинакова для диаграммы Ганта, открытой с уровня любого объекта Системы.+
  
 +Если в колонке {{:product:linq:gantt:linq_example_12.png?nolink}} (Отображать в диаграмме Ганта) страницы «Настройка полей из LINQ-запроса «Название_запроса» не активен ни один чекбокс, то в разделе «Настройка полей из LINQ-запроса» страницы «Настройка диаграммы Ганта» отображается выпадающий список с LINQ-запросами  и кнопкой «Настроить».
  
 +При этом настройки для раннее настраиваемого LINQ-запроса сохраняются, если снова выбрать его и нажать «Настроить».
  
 +=====Механизм отображения полей из LINQ-запроса =====
  
 +Изменения одинаковы для диаграммы Ганта, открытой с уровня любого объекта Системы.
 +
 +==== Как пользователю вывести поля в Ганте ====
 +В выпадающем списке (у любой из колонок диаграммы Ганта) выводится новый пункт «Пользовательские столбцы». Пункт виден, только если к Ганту настроен и привязан LINQ-запрос.
 +
 +При наведении на пункт «Пользовательские столбцы» выводится список с названиями тех полей LINQ запроса, у которых активирован чекбокс в колонке {{:product:linq:gantt:linq_example_12.png?nolink}} (Отображать в диаграмме Ганта).
 +
 +<image shape="thumbnail">{{ :product:linq:gantt:linq_example_15.png?nolink |}}</image>
 +
 +Названия полей LINQ-запроса берутся из колонки «Псевдоним», если оно заполнено. Если не заполнено, то из колонки «Название».
 +
 +Каждое поле имеет чекбокс. По умолчанию не отмечен. 
 +
 +При активации чекбокса:
 +  * В таблицу диаграммы Ганта добавляется соответствующее поле LINQ-запроса с данными.
 +  * Запрос данных по полю LINQ-запроса происходит следующим образом:
 +    * LINQ-запросу передается идентификатор объекта, с карточки которого открыта диаграмма Ганта.
 +    * LINQ-запросом возвращается таблица с данными, включающая поля: 
 +    * ObjectId – идентификаторы объекта (который был передан LINQ-запросу) и всех его дочерних объектов.
 +
 +Происходит сопоставление идентификаторов объектов, подгруженных в диаграмму Ганта, с идентификаторами объектов поля ObjectId и заполнение поля соответствующими данными.
 +
 +Запрос данных по полю происходит разово. Данные сохраняются до обновления страницы с диаграммой Ганта.
 +
 +<callout type="primary">Поля LINQ-запроса доступны только для просмотра.</callout>
 +
 +==== Правила отображение Индикатора ====
 +Поля с типом «Индикатор»:
 +  * Содержат индикатор в форме круга, выровненный по центру ячейки поля. 
 +  * Цвет индикатора согласно настроенному логическому выражению.
 +  * Размер индикатора вписан в высоту ячейки поля. 
 +
 +Если данные ячейки поля не соответствуют ни одному заданному логическому выражению (или выражения составлены некорректно), то индикатор в ней не отображается, ячейка поля пустая.
 +
 +При сохранении настроек отображения диаграммы Ганта (Опция «Сохранить настройки»), сохраняется видимость и порядок полей LINQ-запроса согласно выбранным настройкам.
 +
 +При изменении настроек видимости полей на странице «Настройка полей из LINQ-запроса «Название_запроса»» изменяются и сохраненные настройки отображения диаграммы Ганта.  \\
 +//Например, если у поля LINQ-запроса был деактивирован чекбокс в колонке {{:product:linq:gantt:linq_example_12.png?nolink}} (Отображать в диаграмме Ганта), то из таблицы диаграммы Ганта данное поле пропадает, несмотря на то, что оно было отображено при сохранении настроек отображения диаграммы Ганта (Опция «Сохранить настройки»).//
 +
 +Если у соответствующего объекта, загруженного в диаграмму Ганта, LINQ-запрос по соответствующему полю вернул пустое значение, то и в соответствующей строке этого поля отображается пустое значение.
 +
 +==== Фильтр по пользовательским полям ====
 +''Начиная с версии 3.29'' появилась возможность фильтровать строки в табличной части по значениям пользовательских полей - данных, включенных в Гант из привязанного LINQ-запроса. 
 +
 +Фильтрация доступна по текстовым значениям столбцов, а также по столбцам с типом «Индикатор».
 +\\
 +<image shape="thumbnail">{{ releases:3_29:gant_user_filter.png |}}</image>
 +\\
 +Фильтры по по пользовательским полям работают по аналогии с [[product:objects:gant:interface#фильтры1|фильтрами для системных полей]] - для всех фильтров работает возможность множественной фильтрации.
 +  * При выборе нескольких значений для одного фильтра выборка формируется с использованием логического «ИЛИ» – общая выборка увеличивается.
 +  * При фильтрации по нескольким фильтрам выборка формируется с использованием логического «И» – общая выборка уменьшается.
 +==== Экспорт ====
 +Экспорт диаграммы Ганта: 
 +  * в .pdf и .png **поддерживает** поля LINQ-запроса;
 +  * в .xls **не поддерживает** поля LINQ-запроса.
 +
 +=====Обработка ошибок =====
 +
 +Если тип у включенного для отображения {{:product:linq:gantt:linq_example_12.png?nolink}} поля LINQ-запроса не может быть сконвертирован в тип, указанный в колонке «Тип», то в диаграмме Ганта данное поле отображает пустые данные. Ошибка в диаграмме Ганта не выводится.
 +
 +Если поле LINQ-запроса отображено в диаграмме Ганта, то при изменении типа поля в самом LINQ-запросе (когда возникает ситуация невозможности конвертации в тип, указанный в колонке «Тип»), поле отображает пустые данные. Ошибка в диаграмме Ганта не выводится.
 +
 +Переименованное поле в LINQ-запросе расценивается, как новое поле.
 +
 +Проверка на корректность составленного логического выражения у типа «Индикатор» не производится. В диаграмме Ганта у соответствующего поля с некорректно составленным логическим выражением отображается пустое значение.
 +
 +=====Требования к написанию корректного LINQ-запроса=====
 +
 +С целью фильтрации возвращаемых данных LINQ-запрос должен учитывать передаваемый диаграммой Ганта идентификатор объекта (RootProjectId) с карточки которого она открыта. Требование не обязательное и необходимо для оптимизации запроса. Для оптимизации запроса добавьте в него следующую строку:
 +<code csharp>var objectID = parameters.GetValueOrDefault<Guid>("RootProjectId", new Guid("daba2cbb-a4a9-4708-9366-5dd3ead1f172"));</code>
 +где 
 +  * ''RootProjectId'' – передаваемый диаграммой Ганта идентификатор объекта,
 +  * ''new Guid("daba2cbb-a4a9-4708-9366-5dd3ead1f172")'' – идентификатор любого объекта системы, необходимый для отладки запроса.
  
 +LINQ-запрос должен обязательно возвращать поле ObjectId – идентификаторы объекта (который был передан LINQ-запросу диаграммой Ганта) и всех его дочерних объектов. \\ 
 +В противном случае данный запрос не будет виден в списке для привязки к диаграмме Ганта.