<< Click to Display Table of Contents >> Разработка > Элементы разработки Добавление SQL-запроса |
В среде разработки можно добавлять SQL-запросы при разработке модулей, типов сущностей и отчетов. Например, когда необходимо обратиться к базе данных.
Чтобы добавить SQL-запрос:
1.В дереве решений выберите модуль, тип сущности или отчет и в контекстном меню выберите пункт Открыть SQL-запросы.
Примечание. Пункт Открыть SQL-запросы доступен также в контекстном меню для элементов базового решения. Например, таким образом вы можете посмотреть, какие SQL-запросы есть в модуле Docflow.
2.В открывшемся окне нажмите на кнопку Добавить.
3.Укажите имя SQL-запроса. Имя должно быть уникальным, состоять из букв латинского алфавита и цифр. Первый символ должен начинаться с буквы.
4.Напишите SQL-запрос на вкладке:
•«Mssql» – если используется СУБД Microsoft SQL Server;
•«Postgres» – если используется СУБД PostgreSQL, Postgres Pro, Jatoba или Tantor;
•«Default» – если запрос подходит для всех СУБД.
Вы можете написать запрос сразу на нескольких вкладках. В последующем система сама определит нужный запрос, в зависимости от того, какая СУБД у вас используется.
Например, в модуле Docflow добавлен запрос SelectDocumentWithSendedTask для получения документов, по которым отправлены задачи:
Mssql |
Postgres |
---|---|
|
|
В дальнейшем к добавленному запросу можно обратиться в серверном коде с помощью класса:
•Queries.Module – если запрос добавлен для модуля;
•Queries.<Имя типа сущности> – если запрос добавлен для типа сущности;
•Queries.<Имя отчета> – если запрос добавлен для отчета.
Например, в модуле Docflow добавлена серверная функция, в которой есть обращение к запросу SelectDocumentWithSendedTask:
/// <summary>
/// Получить документы, по которым уже отправлены задачи.
/// </summary>
/// <param name="expiringDocumentTableName">Имя таблицы, в которой хранятся ID документов.</param>
/// <returns>Список ID документов, по которым задачи уже отправлены.</returns>
[Public]
public static List<int> GetDocumentsWithSendedTask(string expiringDocumentTableName)
{
var result = new List<int>();
var commandText = string.Format(Queries.Module.SelectDocumentWithSendedTask, expiringDocumentTableName);
using (var command = SQL.GetCurrentConnection().CreateCommand())
{
try
{
command.CommandText = commandText;
using (var rdr = command.ExecuteReader())
{
while (rdr.Read())
result.Add(rdr.GetInt32(0));
}
return result;
}
catch (Exception ex)
{
Logger.Error("Error while getting array of docs with sent tasks", ex);
return result;
}
}
}
© Компания Directum, 2024 |