| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
| product:linq:new [17.10.2024 08:27] – [WebAPI] ekaterina.menkhuzina | product:linq:new [01.11.2025 06:43] (текущий) – [Пересоздание контекста] ekaterina.menkhuzina |
|---|
| Первый шаг -- **пересоздать контекст**. | Первый шаг -- **пересоздать контекст**. |
| |
| Операция должна выполняется для обновления внутреннего словаря объектов и их свойств, для использования в запросах изменений в настройках объектной модели системы. В противном случае новые объекты, реквизиты и изменение ранее созданных не будут доступны для запросов. | Данная операция должна выполняться для обновления внутреннего словаря объектов и их свойств -- для использования в запросах изменений в настройках объектной модели системы. В противном случае новые объекты, реквизиты и изменение ранее созданных не будут доступны для запросов. |
| |
| Если контекст еще никогда не создавался, то необходимо его пересоздать обязательно, иначе во внутреннем словаре данные об объектах системы будут полностью отсутствовать. \\ | Если контекст еще никогда не создавался, то необходимо его пересоздать обязательно, иначе во внутреннем словаре данные об объектах системы будут полностью отсутствовать. \\ |
| По окончании перестроения, снимается блокировка недоступности окна, а справа вверху отображается дата и время последнего перестроения, равная текущему времени завершения операции. | По окончании перестроения, снимается блокировка недоступности окна, а справа вверху отображается дата и время последнего перестроения, равная текущему времени завершения операции. |
| |
| | В колонке «Есть ошибки» отображается для ранее не содержавших ошибки запросов индикатор процесса компиляции. |
| | \\ |
| | <image shape="thumbnail">{{ :product:linq:11.png |}}</image> |
| | \\ |
| | Запускается компиляция по одному всех запросов, с обновлением статуса «Есть ошибки». После окончания компиляции запросов в колонке «Есть ошибки» отображается значение «Да» только для запросов с ошибками, если запрос успешно компилируется, то отображается пустое значение. |
| | \\ |
| | <image shape="thumbnail">{{ :product:linq:12.png |}}</image> |
| | \\ |
| Далее вы можете создать новые запросы и/или импортировать уже существующие. | Далее вы можете создать новые запросы и/или импортировать уже существующие. |
| <image shape="thumbnail">{{ :product:linq:linq_1.png |}}</image> | <image shape="thumbnail">{{ :product:linq:linq_1.png?800 |}}</image> |
| |
| ==== Создание нового запроса ==== | ==== Создание нового запроса ==== |
| * ''QueryParameters.SpreadsheetReport.EndDate'' -- параметр равный окончанию периода в табличном отчете. | * ''QueryParameters.SpreadsheetReport.EndDate'' -- параметр равный окончанию периода в табличном отчете. |
| * ''QueryParameters.SpreadsheetReport.ProjectId'' -- параметр равный идентификатору объекта, из которого вызывается отчет. Пример его использования: <code csharp>parameters.GetValueOrDefault<Guid?>(QueryParameters.SpreadsheetReport.ProjectId, new Guid("ac04eda3-6940-46ae-8c8b-5c43c67a43a8"));</code> | * ''QueryParameters.SpreadsheetReport.ProjectId'' -- параметр равный идентификатору объекта, из которого вызывается отчет. Пример его использования: <code csharp>parameters.GetValueOrDefault<Guid?>(QueryParameters.SpreadsheetReport.ProjectId, new Guid("ac04eda3-6940-46ae-8c8b-5c43c67a43a8"));</code> |
| | |
| | Готовый пример, как вписать параметры в LINQ-запрос: |
| | <code csharp> |
| | var objectID = parameters.GetValueOrDefault<Guid>("RootProjectId", new Guid("27b97e72-5ffb-48bf-a405-bad7625eecc7")); |
| | |
| | var strParam = parameters.GetValueOrDefault<string>("request", ""); |
| | |
| | var projectID = parameters.GetValueOrDefault<Guid?>(QueryParameters.SpreadsheetReport.ProjectId, new Guid("27b97e72-5ffb-48bf-a405-bad7625eecc7")); |
| | |
| | var dStart = parameters.GetValueOrDefault<DateTime>(QueryParameters.SpreadsheetReport.StartDate, DateTime.Now.AddMonths(-1)); |
| | </code> |
| | |
| | Также можно посмотреть, какие параметры были переданы (для отладки): |
| | <code csharp> |
| | var paramsAsString = string.Join(", ", parameters.Select(kv => $"{kv.Key}:{kv.Value}")); |
| | </code> |
| =====WebAPI===== | =====WebAPI===== |
| Получение Linq-запросов может выполняться от имени любого пользователя с учетом его прав. Нужно использовать CookieContainer для сохранения cookies и уже с ним делать последующие запросы к API. | Получение Linq-запросов может выполняться от имени любого пользователя с учетом его прав. Нужно использовать CookieContainer для сохранения cookies и уже с ним делать последующие запросы к API. |