Различия

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

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

product:linq:about [24.08.2022 10:16] – ↷ Имя страницы product:linq:about изменено на product:linq:new anna.makhnevaproduct:linq:about [24.08.2022 10:24] (текущий) – создано anna.makhneva
Строка 1: Строка 1:
 +===== Зачем нужен LINQ =====
  
 +См. также: **[[product/linq/exaples|Примеры LINQ-запросов]]** \\
 +**[[https://docs.microsoft.com/ru-ru/dotnet/csharp/linq/|Официальная документация]]**
 +
 +В системе ADVANTA хранится множество данных, и чем больше система, больше настроек, больше пользователей, тем более информативные данные можно извлекать для анализа.
 +
 +Администратор Системы, зная особенности конкретной базы, может правильно построить нужный ему запрос, получив только те данные, которые ему нужны, не запрашивая доработку специализированного отчета в платформенном ПО, обходясь только настройками.
 +
 +[[product:reports|Типовые отчеты]] выбирают достаточно однородные данные. Чтобы их комбинировать, был сделан инструмент табличных отчетов -- [[product:reports:excel_table_report|отчёт "Электронная таблица"]]. Но для генерации «хитрых» отчетов приходится строить много отчетов источников, отчеты не знают ничего друг о друге и не меняют фильтры динамически, поэтому в табличных отчетах приходится строить источники с заведомо избыточными данными, которые может быть будут нужны для итогового отчета. \\ 
 +Формирование источников данных само по себе ресурсоемкая операция, а чем их для табличного отчета больше, тем хуже. Более того, полученные таким образом избыточные данные нужно формировать в итоговом листе формулами, отсекая ненужное.
 +
 +**Язык запросов LINQ решает эту задачу.** \\ 
 +**LINQ** -- (Language-Integrated Query) представляет простой язык запросов к источнику данных. Базовыми единицами данных в LINQ являются последовательности и элементы. 
 +  * Последовательность — любой объект, реализующий обобщенный интерфейс IEnumerable.
 +  * Элемент — каждая единица последовательности.
 +
 +С LINQ администратор может делать:
 +  * быстрые отчеты в системе;
 +  * гибко получать только тот набор данных, который нужен для обработки и/или для написании скриптов интеграции.
 +
 +<callout type="success" icon="true">Выборка данных выполняется в контексте пользователя, т.е. с учетом его прав.</callout>
 +===== Где найти LINQ =====
 +**Администрирование -> Дополнительные сервисы -> Источники LINQ**
 +
 +===== Особенности =====
 +Каждый созданный запрос имеет следующие свойства:
 +  * **Ключ** – это уникальное текстовое название запроса, для вызова из внешнего API и табличного отчета.
 +  * **Дата изменения** – дата последнего изменения запроса при его редактировании.
 +  * **Есть ошибки** – имеет значение «Да», в случае, если запрос не может быть скомпилирован. \\ Это удобный инструмент для обнаружения ошибок при изменении объектной модели в разделе администрирования и пересоздания контекста.
 +  * **Используется в диаграмме Ганта** – указывает на то, что данный запрос может быть использован для [[product/linq/gantt|настройки пользовательских колонок в диаграмме Ганта]].
 +
 +Каждый запрос имеет свой **UID**, видимый в окне редактирования. Данный UID может использоваться в методе API и как источник в табличных отчетах. \\
 +**Ключ** запроса является альтернативой использованию UID. 
 +
 +=== Ключ желательно оформлять по следующим правилам: ===
 +  * Используйте только латиницу
 +  * Допустимо использование цифр и символов "-", "_"
 +  * Не используйте пробелы