Сервис работы с данными DataService приложения Creatio является RESTful-сервисом, т. е. поддерживает передачу состояния представления (Representational State Transfer, REST). В общем случае REST является интерфейсом управления информацией без использования дополнительных внутренних прослоек, т. е. данные не нужно преобразовывать в сторонний формат, например, XML. В RESTful-сервисе каждая единица информации определяется глобальным идентификатором, таким как URL. Каждый URL имеет строго заданный формат. Однако это не всегда удобно для передачи больших массивов данных.
Доступ к объектам Creatio предоставляет веб-сервис dataservice.
В DataService данные автоматичеcки могут быть сконфигурированы в различные форматы данных, такие как XML, JSON, HTML, CSV и JSV. Структура данных определяется контрактами данных.
Контракты данных
Контракты данных сервиса работы с данными DataService, рекомендуемые для интеграции с Creatio, приведены в таблице.
Контракт данных | Описание |
---|---|
InsertQuery | Класс запроса на добавление записи раздела. |
UpdateQuery | Класс запроса на обновление записи раздела. |
DeleteQuery | Класс запроса на удаление записи раздела. |
SelectQuery | Класс запроса на выбор записей раздела. |
BatchQuery | Класс пакетного запроса. |
Filters | Класс фильтров. |
Ограничения при использовании DataService
- Максимальное количество записей, которые можно получить по запросу, задается настройкой MaxEntityRowCount (по умолчанию — 20 000). Изменить значение настройки можно в файле ...\Terrasoft.WebApp\Web.config.
- Количество запросов не ограничено.
Реализация создания новой записи в разделе [Контакты] через стороннее приложение
1. Создать и настроить проект консольного приложения C#
- Используя среду разработки Microsoft Visual Studio (версии не ниже 2017), создайте проект консольного приложения Visual C#.
Работа в Microsoft Visual Studio подробно описана в статье Разработать C# код в пользовательском проекте.
- Укажите в качестве названия проекта, например, DataServiceInsertExample.
- Свойству проекта Target framework установите значение ".NET Framework 4.7".
- В секцию References проекта добавьте зависимости от библиотек:
- System.Web.Extensions.dll — библиотека классов, входящая в .NET Framework.
- Terrasoft.Core.dll — библиотека основных классов серверного ядра приложения. Находится по пути ...\Terrasoft.WebApp\bin\Terrasoft.Core.dll.
- Terrasoft.Nui.ServiceModel.dll — библиотека классов служб приложения. Находится по пути ...\Terrasoft.WebApp\bin\Terrasoft.Nui.ServiceModel.dll.
- Terrasoft.Common.dll — библиотека основных классов серверного ядра приложения. Находится по пути ...\Terrasoft.WebApp\bin\Terrasoft.Common.dll.
- В файл исходного кода приложения добавьте директивы using.
2. Добавить объявление полей и констант
Добавление полей и констант в исходный код приложения необходимо выполнить для доступа к возможностям сервиса работы с данными DataService.
Здесь объявлены три строковых константных поля, с помощью которых формируются пути выполнения запросов на аутентификацию и запросов на чтение данных. Данные об аутентификации будут сохранены в поле AuthCookie.
3. Добавить метод, выполняющий аутентификацию
Для доступа создаваемого приложения к сервису работы с данными DataService необходимо выполнить аутентификацию.
4. Реализовать запрос на добавление записи
Поскольку объявленная ранее константа insertQueryUri содержит путь для отправки данных в формате JSON, то отправляемые данные необходимо предварительно сконфигурировать в виде строки, содержащей описание JSON-объекта, соответствующего контракту данных InsertQuery. Это можно сделать непосредственно в строчной переменной, однако намного удобнее и безопаснее с точки зрения возможности возникновения ошибок создать экземпляр класса InsertQuery, заполнить его свойства, а затем сериализовать его в строку.
5. Выполнить POST-запрос к DataService
- Создайте экземпляр класса HttpWebRequest.
- Заполните свойства экземпляра.
- Присоедините к запросу созданную ранее строку с JSON-объектом.
- Выполните и обработайте результат запроса к сервису работы с данными DataService.
Реализация создания новой записи в разделе [Контакты] через Creatio IDE
1. Добавить кнопку в раздел Контакты
- Cоздайте пакет и установите его в качестве текущего.
- Создайте схему замещающей модели представления раздела Контакты (Contacts).
- На панели дизайнера нажмите кнопку и создайте локализуемую строку.
Для созданной строки установите:
- Код (Code) — "InsertQueryContactButtonCaption".
- Значение (Value) — "Добавить контакт" ("Add contact").
- В массив diff добавьте конфигурационный объект с настройками расположения кнопки на странице.
2. Добавить метод-обработчик события нажатия кнопки
Чтобы при нажатии на созданную в разделе Контакты (Contacts) кнопку добавлялась запись с заданными параметрами, в секцию methods замещающей схемы модели представления добавьте метод-обработчик события нажатия кнопки onInsertQueryContactClick.
Реализация класса InsertQuery для front-end части ядра приложения отличается от реализации класса InsertQuery для back-end части. Так, для создания параметров предусмотрен метод setParameterValue, а для выполнения запроса — метод execute. Узнать о свойствах и методах класса InsertQuery, реализованного в front-end части ядра приложения, можно в Библиотеке JS классов.
Результат выполнения примера
После сохранения схемы и обновления страницы приложения с очисткой кэша в разделе Контакты (Contacts) появится кнопка Добавить контакт (Add contact). Кнопка добавляет контакт с заданными параметрами.
Реализация чтения записи раздела [Контакты] через стороннее приложение
1. Создать и настроить проект консольного приложения C#
- Используя среду разработки Microsoft Visual Studio (версии не ниже 2017), создайте проект консольного приложения Visual C#.
Работа в Microsoft Visual Studio подробно описана в статье Разработать C# код в пользовательском проекте.
- Укажите в качестве названия проекта, например, DataServiceSelectExample.
- Свойству проекта Target framework установите значение ".NET Framework 4.7".
- В секцию References проекта добавьте зависимости от библиотек:
- System.Web.Extensions.dll — библиотека классов, входящая в .NET Framework.
- Terrasoft.Core.dll — библиотека основных классов серверного ядра приложения. Находится по пути ...\Terrasoft.WebApp\bin\Terrasoft.Core.dll.
- Terrasoft.Nui.ServiceModel.dll — библиотека классов служб приложения. Находится по пути ...\Terrasoft.WebApp\bin\Terrasoft.Nui.ServiceModel.dll.
- Terrasoft.Common.dll — библиотека основных классов серверного ядра приложения. Находится по пути ...\Terrasoft.WebApp\bin\Terrasoft.Common.dll.
- В файл исходного кода приложения добавьте директивы using.
2. Добавить объявление полей и констант
Добавление полей и констант в исходный код приложения необходимо выполнить для доступа к возможностям сервиса работы с данными DataService.
Здесь объявлены три строковых константных поля, с помощью которых формируются пути выполнения запросов на аутентификацию и запросов на чтение данных. Данные об аутентификации будут сохранены в поле AuthCookie.
3. Добавить метод, выполняющий аутентификацию
Для доступа создаваемого приложения к сервису работы с данными DataService необходимо выполнить аутентификацию.
4. Реализовать запрос на добавление записи
Поскольку объявленная ранее константа selectQueryUri содержит путь для отправки данных в формате JSON, то отправляемые данные необходимо предварительно сконфигурировать в виде строки, содержащей описание JSON-объекта, соответствующего контракту данных SelectQuery. Это можно сделать непосредственно в строчной переменной, однако намного удобнее и безопаснее с точки зрения возможности возникновения ошибок создать экземпляр класса SelectQuery, заполнить его свойства, а затем сериализовать его в строку.
5. Выполнить POST-запрос к DataService
- Создайте экземпляр класса HttpWebRequest.
- Заполните свойства экземпляра.
- Присоедините к запросу созданную ранее строку с JSON-объектом.
- Выполните и обработайте результат запроса к сервису работы с данными DataService.
Реализация чтения записи раздела [Контакты] через Creatio IDE
1. Добавить кнопку в раздел Контакты
- Cоздайте пакет и установите его в качестве текущего.
- Создайте схему замещающей модели представления раздела Контакты (Contacts).
- На панели дизайнера нажмите кнопку и создайте локализуемую строку.
Для созданной строки установите:
- Код (Code) — "SelectQueryContactButtonCaption".
- Значение (Value) — "Выбор контактов" ("Select contacts").
- В массив diff добавьте конфигурационный объект с настройками расположения кнопки на странице.
2. Добавить метод-обработчик события нажатия кнопки
Чтобы при нажатии на созданную в разделе Контакты (Contacts) кнопку читались записи с заданными параметрами, в секцию methods замещающей схемы модели представления добавьте метод-обработчик события нажатия кнопки onSelectQueryContactClick.
В front-end части ядра приложения отсутствует класс, аналогичный классу SelectQuery для back-end части. Для выбора данных раздела необходимо использовать класс Terrasoft.EntitySchemaQuery. Подробнее о свойствах и методах этого класса можно узнать в Библиотеке JS классов.
Результат выполнения примера
После сохранения схемы и обновления страницы приложения с очисткой кэша в разделе Контакты (Contacts) появится кнопка Выбор контактов (Select contacts). В консоли браузера кнопка отобразит записи с заданными параметрами.
Реализовать фильтры
Предварительно выполните пример чтения записей в стороннем приложении, описанный в статье Добавить кнопку для чтения записей раздела [Контакты].
Результат реализации экземпляра класса запроса на чтение записей в сокращенной форме представлен ниже.
Чтобы реализовать фильтры:
- Создайте экземпляр класса коллекции фильтров Filters.
- Заполните необходимые свойства значениями.
- В свойство Filters экзепляра класса запроса, созданного на предыдущем шаге, передайте ссылку на этот экземпляр.
Свойство Items должно содержать коллекцию типа "ключ-значение". В качестве ключа указывается строка, содержащая название фильтра, а в качестве значения — экземпляр класса Filters, содержащий непосредственную реализацию фильтра.
- Реализуйте фильтр, обеспечивающий выбор только тех контактов, у которых количество активностей попадает в диапазон от 1 до 3. Для этого добавьте экземпляр в коллекцию фильтров.
- Реализуйте фильтр, обеспечивающий выбор только тех контактов, у которых значение колонки ФИО (Name) начинается с символа "Ч". Для этого добавьте экземпляр в коллекцию фильтров.
Реализовать фильтр с макросом
Предварительно выполните пример чтения записей в стороннем приложении, описанный в статье Добавить кнопку для чтения записей раздела [Контакты].
Результат реализации экземпляра класса запроса на чтение записей в сокращенной форме представлен ниже.
Чтобы реализовать фильтр c макросом:
- Создайте экземпляр класса коллекции фильтров Filters.
- Заполните необходимые свойства значениями.
- В свойство Filters экземпляра класса запроса, созданного на предыдущем шаге, передайте ссылку на этот экземпляр.
Коллекция содержит единственный фильтр с ключом FilterYear. Поскольку из коллекции записей необходимо выбрать только те, у которых год рождения контакта равен 1992, то тип фильтра устанавливается как фильтр сравнения, а тип сравнения — равенство значений. В качестве выражения, подлежащего проверке, устанавливается значение колонки Дата рождения (Birthday), а в качестве выражения, с которым сравнивается проверяемое выражение — функция-макрос.
В данном случае использовать макрос удобно потому, что дата рождения хранится в базе данных в формате ГГГГ-ММ-ДД. Макрос автоматически определяет год из этого значения, следовательно, разработчику нет необходимости самостоятельно писать дополнительный программный код.
Поскольку макрос EntitySchemaQueryMacrosType.Year является параметрическим, то необходимо инициализировать свойство FunctionArgument, которому присваивается ссылка на экземпляр класса BaseExpression. В нем и определяется целочисленный параметр со значением "1992".
Реализовать фильтры по источнику вхождения пользователя в роль
Для использования свойства adminUnitRoleSources необходимо добавить директиву using Terrasoft.Common;.
Предварительно выполните пример чтения записей в стороннем приложении, описанный в статье Прочитать записи раздела [Контакты].
Результат реализации экземпляра класса запроса на чтение записей в сокращенной форме представлен ниже.
Чтобы реализовать фильтры по источнику вхождения пользователя в роль:
Заполните значение свойства adminUnitRoleSources с помощью перечисления констант из JS-класса Terrasoft.AdminUnitRoleSources через побитовое ИЛИ ("|").
1. Создать и настроить проект консольного приложения C#
Предварительно выполните пример чтения записей в стороннем приложении, описанный в статье Добавить кнопку для чтения записей раздела [Контакты].
Чтобы создать и настроить проект консольного приложения C#:
- Используя среду разработки Microsoft Visual Studio (версии не ниже 2017), создайте проект консольного приложения Visual C#.
Работа в Microsoft Visual Studio подробно описана в статье Разработать C# код в пользовательском проекте.
- Укажите в качестве названия проекта, например, DataServiceUpdateExample.
- Свойству проекта Target framework установите значение ".NET Framework 4.7".
- В секцию References проекта добавьте зависимости от библиотек:
- System.Web.Extensions.dll — библиотека классов, входящая в .NET Framework.
- Terrasoft.Core.dll — библиотека основных классов серверного ядра приложения. Находится по пути ...\Terrasoft.WebApp\bin\Terrasoft.Core.dll.
- Terrasoft.Nui.ServiceModel.dll — библиотека классов служб приложения. Находится по пути ...\Terrasoft.WebApp\bin\Terrasoft.Nui.ServiceModel.dll.
- Terrasoft.Common.dll — библиотека основных классов серверного ядра приложения. Находится по пути ...\Terrasoft.WebApp\bin\Terrasoft.Common.dll.
- В файл исходного кода приложения добавьте директивы using.
2. Добавить объявление полей и констант
Добавление полей и констант в исходный код приложения необходимо выполнить для доступа к возможностям сервиса работы с данными DataService.
Здесь объявлены три строковых константных поля, с помощью которых формируются пути выполнения запросов на аутентификацию и запросов на чтение данных. Данные об аутентификации будут сохранены в поле AuthCookie.
3. Добавить метод, выполняющий аутентификацию
Для доступа создаваемого приложения к сервису работы с данными DataService необходимо выполнить аутентификацию.
4. Реализовать запрос на добавление записи
Поскольку объявленная ранее константа updateQueryUri содержит путь для отправки данных в формате JSON, то отправляемые данные необходимо предварительно сконфигурировать в виде строки, содержащей описание JSON-объекта, соответствующего контракту данных UpdateQuery. Это можно сделать непосредственно в строчной переменной, однако намного удобнее и безопаснее с точки зрения возможности возникновения ошибок создать экземпляр класса UpdateQuery, заполнить его свойства, а затем сериализовать его в строку.
Здесь создается экземпляр класса UpdateQuery, в свойстве ColumnValues которого устанавливается значение "i.ivanov@creatio.com" для колонки Email. Чтобы это значение было применено только для определенной записи или группы записей, необходимо свойству Filters присвоить значение ссылки на корректно инициализированный экземпляр класса Filters. В данном случае в коллекцию фильтров добавлен единственный фильтр, который отбирает только те записи, у которых значение колонки ФИО (Name) равно "Иванов Иван Иванович".
5. Выполнить POST-запрос к DataService
- Создайте экземпляр класса HttpWebRequest.
- Заполните свойства экземпляра.
- Присоедините к запросу созданную ранее строку с JSON-объектом.
- Выполните и обработайте результат запроса к сервису работы с данными DataService.
1. Создать и настроить проект консольного приложения C#
Предварительно выполните пример чтения записей в стороннем приложении, описанный в статье Добавить кнопку для чтения записей раздела [Контакты].
Чтобы создать и настроить проект консольного приложения C#:
- Используя среду разработки Microsoft Visual Studio (версии не ниже 2017), создайте проект консольного приложения Visual C#.
Работа в Microsoft Visual Studio подробно описана в статье Разработать C# код в пользовательском проекте.
- Укажите в качестве названия проекта, например, DataServiceDeleteExample.
- Свойству проекта Target framework установите значение ".NET Framework 4.7".
- В секцию References проекта добавьте зависимости от библиотек:
- System.Web.Extensions.dll — библиотека классов, входящая в .NET Framework.
- Terrasoft.Core.dll — библиотека основных классов серверного ядра приложения. Находится по пути ...\Terrasoft.WebApp\bin\Terrasoft.Core.dll.
- Terrasoft.Nui.ServiceModel.dll — библиотека классов служб приложения. Находится по пути ...\Terrasoft.WebApp\bin\Terrasoft.Nui.ServiceModel.dll.
- Terrasoft.Common.dll — библиотека основных классов серверного ядра приложения. Находится по пути ...\Terrasoft.WebApp\bin\Terrasoft.Common.dll.
- В файл исходного кода приложения добавьте директивы using.
2. Добавить объявление полей и констант
Добавление полей и констант в исходный код приложения необходимо выполнить для доступа к возможностям сервиса работы с данными DataService.
Здесь объявлены три строковых константных поля, с помощью которых формируются пути выполнения запросов на аутентификацию и запросов на удаление данных. Данные об аутентификации будут сохранены в поле AuthCookie.
3. Добавить метод, выполняющий аутентификацию
Для доступа создаваемого приложения к сервису работы с данными DataService необходимо выполнить аутентификацию.
4. Реализовать запрос на удаление записи
Поскольку объявленная ранее константа deleteQueryUri содержит путь для отправки данных в формате JSON, то отправляемые данные необходимо предварительно сконфигурировать в виде строки, содержащей описание JSON-объекта, соответствующего контракту данных DeleteQuery. Это можно сделать непосредственно в строчной переменной, однако намного удобнее и безопаснее с точки зрения возможности возникновения ошибок создать экземпляр класса DeleteQuery, заполнить его свойства, а затем сериализовать его в строку.
Здесь создается экземпляр класса DeleteQuery, в свойстве RootSchemaName которого устанавливается значение Contact. Для того чтобы удалена была только определенная запись или группа записей, необходимо свойству Filters присвоить значение ссылки на корректно инициализированный экземпляр класса Filters. В данном случае в коллекцию фильтров добавлен единственный фильтр, который отбирает только те записи, у которых значение колонки ФИО (Name) равно "Иванов Иван Иванович".
5. Выполнить POST-запрос к DataService
- Создайте экземпляр класса HttpWebRequest.
- Заполните свойства экземпляра.
- Присоедините к запросу созданную ранее строку с JSON-объектом.
- Выполните и обработайте результат запроса к сервису работы с данными DataService.
1. Создать и настроить проект консольного приложения C#
- Используя среду разработки Microsoft Visual Studio (версии не ниже 2017), создайте проект консольного приложения Visual C#.
Работа в Microsoft Visual Studio подробно описана в статье Разработать C# код в пользовательском проекте.
- Укажите в качестве названия проекта, например, DataServiceDeleteExample.
- Свойству проекта Target framework установите значение ".NET Framework 4.7".
- В секцию References проекта добавьте зависимости от библиотек:
- System.Web.Extensions.dll — библиотека классов, входящая в .NET Framework.
- Terrasoft.Core.dll — библиотека основных классов серверного ядра приложения. Находится по пути ...\Terrasoft.WebApp\bin\Terrasoft.Core.dll.
- Terrasoft.Nui.ServiceModel.dll — библиотека классов служб приложения. Находится по пути ...\Terrasoft.WebApp\bin\Terrasoft.Nui.ServiceModel.dll.
- Terrasoft.Common.dll — библиотека основных классов серверного ядра приложения. Находится по пути ...\Terrasoft.WebApp\bin\Terrasoft.Common.dll.
- В файл исходного кода приложения добавьте директивы using.
2. Добавить объявление полей и констант
Добавление полей и констант в исходный код приложения необходимо выполнить для доступа к возможностям сервиса работы с данными DataService.
Здесь объявлены три строковых константных поля, с помощью которых формируются пути выполнения запросов на аутентификацию и запросов на чтение данных. Данные об аутентификации будут сохранены в поле AuthCookie.
3. Добавить метод, выполняющий аутентификацию
Для доступа создаваемого приложения к сервису работы с данными DataService необходимо выполнить аутентификацию.
4. Реализовать запрос на добавление записи
Поскольку объявленная ранее константа batchQueryUri содержит путь для отправки данных в формате JSON, то отправляемые данные необходимо предварительно сконфигурировать в виде строки, содержащей описание JSON-объекта. Для формирования содержимого единичных запросов удобно воспользоваться классами-контрактами данных, а затем сериализовать их в строку.
5. Реализовать запрос на изменение записи
Измените значение колонки Рабочий телефон на "012 345 67 89" для всех записей раздела Контакты (Contacts), которые в колонке ФИО (Name) содержат значение "Петров Петр Петрович".
6. Реализовать пакетный запрос
- После сериализации созданных экземпляров классов запросов, в строки с JSON-объектами добавьте сведения о полном квалифицированном имени типа соответствующего контракта данных.
- Сформируйте строку, содержащую пакетный запрос.
7. Реализовать пакетный запрос
- Создайте экземпляр класса HttpWebRequest.
- Заполните свойства экземпляра.
- Присоедините к запросу созданную ранее строку с JSON-объектом.
- Выполните и обработайте результат запроса к сервису работы с данными DataService.
Пространство имен Terrasoft.Nui.ServiceModel.DataContract библиотеки классов Terrasoft.Nui.ServiceModel.dll.
Назначение класса InsertQuery — добавление записей в раздел. Передача данных непосредственно в сервис работы с данными DataService осуществляется по HTTP протоколу при помощи POST-запроса по URL.
Контракт данных InsertQuery имеет иерархическую структуру с несколькими уровнями вложенности. Для простоты восприятия иерархическую структуру контракта данных InsertQuery удобно представить в формате объекта JSON.
Свойства
Идентификатор запроса.
Дополнительная информация о запросе, которая может быть использована для отправки запроса DBExecutor.
General | Используется, как значение по умолчанию. |
Limited | Используется, чтобы показать, что запрос может быть отправлен исполнителю с ограниченными ресурсами. |
Содержит коллекцию значений колонок добавляемой записи. Унаследовано от родительского класса BaseQuery. Имеет тип ColumnValues, определенный в пространстве имен Terrasoft.Nui.ServiceModel.DataContract.
Строка, которая содержит название корневой схемы объекта добавляемой записи.
Тип операции с записью. Задается значением перечисления QueryOperationType пространства имен Terrasoft.Nui.ServiceModel.DataContract. Для InsertQuery устанавливается значение QueryOperationType.Insert.
Select | 0 |
Insert | 1 |
Update | 2 |
Delete | 3 |
Batch | 4 |
Флаг, который включает данные о выполнении процесса.
Класс SelectQuery
Пространство имен Terrasoft.Nui.ServiceModel.DataContract библиотеки классов Terrasoft.Nui.ServiceModel.dll.
Назначение класса SelectQuery — чтение записей раздела. Передача данных непосредственно в сервис работы с данными DataService осуществляется по HTTP протоколу при помощи POST-запроса по URL.
Контракт данных SelectQuery имеет иерархическую структуру с несколькими уровнями вложенности. Для простоты восприятия иерархическую структуру контракта данных SelectQuery удобно представить в формате объекта JSON.
Свойства
Коллекция фильтров запросов. Имеет тип Filters, определенный в пространстве имен Terrasoft.Nui.ServiceModel.DataContract.
Идентификатор запроса.
Дополнительная информация о запросе, которая может быть использована для отправки запроса DBExecutor.
General | Используется, как значение по умолчанию. |
Limited | Используется, чтобы показать, что запрос может быть отправлен исполнителю с ограниченными ресурсами. |
Значения колонок.
Строка, содержащая название корневой схемы объекта добавляемой записи.
Тип операции с записью. Задается значением перечисления QueryOperationType пространства имен Terrasoft.Nui.ServiceModel.DataContract. Для SelectQuery устанавливается значение QueryOperationType.Select.
Select | 0 |
Insert | 1 |
Update | 2 |
Delete | 3 |
Batch | 4 |
Флаг, который включает данные о выполнении процесса.
Целочисленное свойство, которое соответствует критериям фильтрации записей по источнику вхождения пользователя в роли. Значение по умолчанию: 0. Перечисление AdminUnitRoleSources находится в пространстве имен Terrasoft.Common. Чтобы сформировать AdminUnitRoleSources, необходимо с помощью побитового ИЛИ ("|") перечислить константы из JS-класса Terrasoft.AdminUnitRoleSources. В результате, на серверной стороне запись будет возвращена, если у пользователя есть хоть одна роль, которой доступна запись, и пользователь входит в эту роль в соответствии с источниками, указанными в условиях фильтрации.
All | Получает все роли. |
AsManager | Получает роль менеджера. |
Delegated | Делегированная роль. |
ExplicitEntry | Явное вхождение в роль. |
FuncRoleFromOrgRole | Получает функциональную роль с организационной роли. |
None | Пустое значение. |
Self | Самостоятельно. |
UpHierarchy | Возвращает роль вверх по иерархии. |
Признак выбора всех колонок. Если значение установлено как true, в результате выполнения запроса будут выбраны все колонки корневой схемы.
Количество сущностей в блоке.
Содержит коллекцию колонок для считываемых записей. Имеет тип SelectQueryColumns, определенный в пространстве имен Terrasoft.Nui.ServiceModel.DataContract. Следует конфигурировать, если значение признака AllColumns установлено как false и нужен определенный набор колонок корневой схемы, не включающий колонку Id.
Условия для построения постраничного запроса. Тип ColumnValues определен в пространстве имен Terrasoft.Nui.ServiceModel.DataContract.
Имя колонки, использующейся для построения иерархического запроса.
Начальное значение иерархической колонки, от которого будет строиться иерархия.
Максимальный уровень вложенности иерархического запроса.
Флаг, который указывает, что запрос не будет использоваться для отображения значений столбцов.
Признак, указывающий убирать или нет дубли в результирующем наборе данных.
Признак иерархической выборки данных.
Признак постраничной выборки данных.
Позволяет использовать оптимизацию запросов.
Источник запроса.
Filter | Из фильтра. |
FilterSummary | Из аннотации с фильтром. |
Undefined | Не задано. |
Тип запроса.
Delete | Удаление данных. |
Select | Чтение данных. |
Update | Изменение данных. |
Количество выбираемых строк. По умолчанию содержит значение -1, т. е. выбираются все строки.
Количество пропущенных строк.
Параметры кэширования EntitySchemaQuery на сервере. Тип ServerESQCacheParameters определен в пространстве имен Terrasoft.Nui.ServiceModel.DataContract.
Параметр, который определяет использование локализованных данных.
Использует метрики для запроса.
Определяет отключение данных при фильтрации.
Класс SelectQueryColumns
Пространство имен Terrasoft.Nui.ServiceModel.DataContract.
Свойства
Коллекция ключей и значений Dictionary<string, SelectQueryColumn>. Ключом является строка с названием добавляемой колонки, а значением — экземпляр класса SelectQueryColumn, который определен в пространстве имен Terrasoft.Nui.ServiceModel.DataContract.
OrderDirection OrderDirection | Направление сортировки. Задается значением перечисления OrderDirection пространства имен Terrasoft.Common, определенного в библиотеке классов Terrasoft.Common. |
OrderPosition int | Задает номер позиции в коллекции колонок запроса, по которой производится сортировка. |
Caption string | Заголовок колонки. |
Expression ColumnExpression | Свойство, определяющее выражение типа выбираемой колонки. |
Класс ColumnExpression
Пространство имен Terrasoft.Nui.ServiceModel.DataContract.
Класс ColumnExpression определяет выражение, задающее тип колонки схемы. Он определен в пространстве имен Terrasoft.Nui.ServiceModel.DataContract библиотеки Terrasoft.Nui.ServiceModel. Свойства экземпляра этого класса заполняются в зависимости от свойства ExpressionType, которое и задает тип выражения.
Свойства
Тип макроса основной колонки.
Тип макроса отображаемой колонки.
Тип макроса основной колонки изображения.
Тип выражения, определяющий значение, которое будет содержаться в добавляемой колонке. Задается значением перечисления EntitySchemaQueryExpressionType пространства имен Terrasoft.Core.Entities, определенного в библиотеке классов Terrasoft.Core. Для SelectQuery устанавливается значение EntitySchemaQueryExpressionType.Parameter.
SchemaColumn | 0 | Колонка схемы. |
Function | 1 | Функция. |
Parameter | 2 | Параметр. |
SubQuery | 3 | Вложенный запрос. |
ArithmeticOperation | 4 | Арифметическая операция. |
Блокировка.
Путь к колонке относительно корневой схемы.
Определяет значение, которое будет содержаться в добавляемой колонке. Имеет тип Parameter, определенный в пространстве имен Terrasoft.Nui.ServiceModel.DataContract.
Тип функции. Задается значением из перечисления FunctionType, определенного в пространстве имен Terrasoft.Nui.ServiceModel.DataContract.
None | 0 | Не определен. |
Macros | 1 | Макрос. |
Aggregation | 2 | Агрегирующая функция. |
DatePart | 3 | Часть даты. |
Length | 4 | Длина. |
Тип макроса. Задается значением перечисления EntitySchemaQueryMacrosType, определенного в пространстве имен Terrasoft.Core.Entities.
Аргумент функции. Принимает значение, если функция определена с параметром. Класс BaseExpression определен в пространстве имен Terrasoft.Nui.ServiceModel.DataContract, является предком для класса ColumnExpresion и имеет такой же набор свойств.
Массив аргументов функции.
Интервал разницы дат.
Часть даты. Задается значением из перечисления DatePart, определенного в пространстве имен Terrasoft.Nui.ServiceModel.DataContract.
None | 0 | Не определен. |
Day | 1 | День. |
Week | 2 | Неделя. |
Month | 3 | Месяц. |
Year | 4 | Год. |
Weekday | 5 | День недели. |
Hour | 6 | Час. |
HourMinute | 7 | Минута. |
Тип агрегирующей функции. Задается значением из перечисления AggregationType, определенного в пространстве имен Terrasoft.Common, определенного в библиотеке классов Terrasoft.Common.
Область применения агрегирующей функции. Задается значением из перечисления AggregationEvalType, определенного в пространстве имен Terrasoft.Core.DB, определенного в библиотеке классов Terrasoft.Core.
Коллекция фильтров вложенных запросов. Имеет тип Filters, определенный в пространстве имен Terrasoft.Nui.ServiceModel.DataContract.
Тип арифметической операции.
Addition | Сложение. |
Division | Деление. |
Multiplication | Умножение. |
Subtraction | Вычитание. |
Левый операнд.
Правый операнд.
Класс ServerESQCacheParameters
Пространство имен Terrasoft.Nui.ServiceModel.DataContract.
Класс Filters
Пространство имен Terrasoft.Nui.ServiceModel.DataContract библиотеки классов Terrasoft.Nui.ServiceModel.dll.
Назначение класса Filters — выполнение фильтрации данных во время выполнения запросов к сервису работы с данными DataService. Например, при чтении записей раздела необходимо выполнить выборку только тех записей, которые соответствуют определенному критерию или нескольким критериям.
Для простоты восприятия иерархическую структуру контракта данных Filters удобно представить в формате объекта JSON.
Свойства
Тип фильтра. Задается значением перечисления FilterType пространства имен Terrasoft.Nui.ServiceModel.DataContract.
None | 0 | Тип фильтра не определен. |
CompareFilter | 1 | Фильтр сравнения. Используется для сравнения результатов выражений. |
IsNullFilter | 2 | Фильтр, определяющий, является ли проверяемое выражение пустым или нет. |
Between | 3 | Фильтр, проверяющий, входит ли проверяемое выражение в диапазон выражений. |
InFilter | 4 | Фильтр, проверяющий, равно ли проверяемое выражение одному из выражений. |
Exists | 5 | Фильтр существования по заданному полю. |
FilterGroup | 6 | Группа фильтров. Группы фильтров могут вкладываться друг в друга, т. е. коллекция сама может быть элементом другой коллекции. |
Тип операции сравнения. Задается значением перечисления FilterComparisonType пространства имен Terrasoft.Core.Entities.
Between | Диапазон значений. |
Contain | Содержит выражение. |
EndWith | Заканчивается выражением. |
Equal | Равно. |
Exists | Существует по заданному условию. |
Greater | Больше. |
GreaterOrEqual | Больше или равно. |
IsNotNull | Не является null в базе данных. |
IsNull | Является null в базе данных. |
Less | Меньше. |
LessOrEqual | Меньше или равно. |
NotContain | Не содержит выражение. |
NotEndWith | Не заканчивается выражением. |
NotEqual | Не равно. |
NotExists | Не существует по заданному условию. |
NotStartWith | Не начинается выражением. |
StartWith | Начинается выражением. |
Логическая операция. Тип не допускает значение None, определен в перечислении LogicalOperationStrict пространства имен Terrasoft.Common.
Признак проверки на заполненность проверяемого выражения.
Признак того, что фильтр активен и будет учитываться при построении запроса.
Определяет, использовать ли логический оператор отрицания.
Фильтры подзапроса. Не могут содержать фильтры с другими подзапросами.
Коллекция, содержащая группу фильтров.
Выражение в левой части сравнения, т. е. выражение, подлежащее проверке. Класс BaseExpression определен в пространстве имен Terrasoft.Nui.ServiceModel.DataContract.
Выражение фильтрации, которое будет сравниваться с выражением, содержащимся в свойстве LeftExpression.
Массив выражений, которые будут сравниваться с выражением, содержащимся в свойстве LeftExpression.
Начальное выражение диапазона фильтрации.
Конечное выражение диапазона фильтрации.
Признак, указывающий отсекать ли время для параметров типа Дата-время.
Ключ фильтра в коллекции фильтров Items.
Признак того, что фильтр является агрегирующим.
Заголовок левой части сравнения.
Имя схемы объекта, на которую ссылается левая часть фильтра, если тип колонки — справочник.
Класс BaseExpression
Пространство имен Terrasoft.Nui.ServiceModel.DataContract.
Класс BaseExpression является базовым классом выражений. Он определен в пространстве имен Terrasoft.Nui.ServiceModel.DataContract библиотеки Terrasoft.Nui.ServiceModel.dll. Свойства экземпляра этого класса заполняются в зависимости от свойства ExpressionType, которое и задает тип выражения.
Свойства
Область применения агрегирующей функции. Задается значением из перечисления AggregationEvalType, определенного в пространстве имен Terrasoft.Core.DB, определенного в библиотеке классов Terrasoft.Core.
All | Применяется ко всем значениям. |
Distinct | Применяется к уникальным значениям. |
None | Область не задана. |
Тип агрегирующей функции. Задается значением из перечисления AggregationType, определенного в пространстве имен Terrasoft.Common, определенного в библиотеке классов Terrasoft.Common.
Avg | Среднее значение всех элементов. |
Count | Количество всех элементов. |
Max | Максимальное значение среди всех элементов. |
Min | Минимальное значение среди всех элементов. |
None | Тип агрегирующей функции не определен. |
Sum | Сумма значений всех элементов. |
Тип арифметической операции.
Addition | Сложение. |
Division | Деление. |
Multiplication | Умножение. |
Subtraction | Вычитание. |
Путь к колонке относительно корневой схемы.
Интервал разницы дат.
Часть даты. Задается значением из перечисления DatePart, определенного в пространстве имен Terrasoft.Nui.ServiceModel.DataContract.
None | 0 | Не определен. |
Day | 1 | День. |
Week | 2 | Неделя. |
Month | 3 | Месяц. |
Year | 4 | Год. |
Weekday | 5 | День недели. |
Hour | 6 | Час. |
HourMinute | 7 | Минута. |
Тип выражения, определяющий значение, которое будет содержаться в добавляемой колонке. Задается значением перечисления EntitySchemaQueryExpressionType пространства имен Terrasoft.Core.Entities, определенного в библиотеке классов Terrasoft.Core. Для InsertQuery устанавливается значение EntitySchemaQueryExpressionType.Parameter.
SchemaColumn | 0 | Колонка схемы. |
Function | 1 | Функция. |
Parameter | 2 | Параметр. |
SubQuery | 3 | Вложенный запрос. |
ArithmeticOperation | 4 | Арифметическая операция. |
Аргумент функции. Принимает значение, если функция определена с параметром. Класс BaseExpression определен в пространстве имен Terrasoft.Nui.ServiceModel.DataContract, является предком для класса ColumnExpresion и имеет такой же набор свойств.
Массив аргументов функции.
Тип функции. Задается значением из перечисления FunctionType, определенного в пространстве имен Terrasoft.Nui.ServiceModel.DataContract.
None | Не определен. |
Macros | Макрос. |
Aggregation | Агрегирующая функция. |
DatePart | Часть даты. |
Length | Длина. |
DateAdd | Добавление даты. |
DateDiff | Разница дат. |
Window | Окно. |
Блокировка.
Левый операнд.
Тип макроса. Задается значением перечисления EntitySchemaQueryMacrosType, определенного в пространстве имен Terrasoft.Core.Entities.
Определяет значение, которое будет содержаться в добавляемой колонке. Имеет тип Parameter, определенный в пространстве имен Terrasoft.Nui.ServiceModel.DataContract.
Правый операнд.
Коллекция фильтров вложенных запросов. Имеет тип Filters, определенный в пространстве имен Terrasoft.Nui.ServiceModel.DataContract.
Пространство имен Terrasoft.Core.Entities.
При создании запросов к сервису работы с данными DataService могут использоваться как параметризированные (требующие аргумент), так и непараметризированные макросы. Типы макросов, которые можно использовать в выражениях запросов, определены перечислением EntitySchemaQueryMacrosType.
CurrentHalfYear | Текущее полугодие. |
CurrentHour | Текущий час. |
CurrentMonth | Текущий месяц. |
CurrentQuarter | Текущий квартал. |
CurrentUser | Текущий пользователь. |
CurrentUserContact | Контакт текущего пользователя. |
CurrentWeek | Текущая неделя. |
CurrentYear | Текущий год. |
DayOfMonth | День месяца. |
DayOfWeek | День недели. |
DayOfYearToday | Годовщина в сегодняшнюю дату. |
DayOfYearTodayPlusDaysOffset | Годовщина в сегодняшнюю дату с учетом смещения дне. |
Hour | Час. |
HourMinute | Время. |
Month | Месяц. |
NextHalfYear | Следующее полугодие. |
NextHour | Следующий час. |
NextMonth | Следующий месяц. |
NextNDays | Следующие N дней. |
NextNDaysOfYear | Юбилей на следующие N дней. |
NextNHours | Следующие N часов. |
NextQuarter | Следующий квартал. |
NextWeek | Следующая неделя. |
NextYear | Следующий год. |
None | Тип макроса не определен. |
PreviousHalfYear | Предыдущее полугодие. |
PreviousHour | Предыдущий час. |
PreviousMonth | Предыдущий месяц. |
PreviousNDays | Предыдущие N дней. |
PreviousNDaysOfYear | Юбилей в предыдущие N дней. |
PreviousNHours | Предыдущие N часов. |
PreviousQuarter | Предыдущий квартал. |
PreviousWeek | Предыдущая неделя. |
PreviousYear | Предыдущий год. |
Today | Сегодня. |
Tomorrow | Завтра. |
Year | Год. |
Yesterday | Вчера. |
Пространство имен Terrasoft.Nui.ServiceModel.DataContract библиотеки классов Terrasoft.Nui.ServiceModel.dll.
Назначение класса UpdateQuery — обновление содержимого записей раздела. Передача данных непосредственно в сервис работы с данными DataService осуществляется по HTTP протоколу при помощи POST-запроса по URL.
Контракт данных UpdateQuery имеет иерархическую структуру с несколькими уровнями вложенности. Для простоты восприятия иерархическую структуру контракта данных UpdateQuery удобно представить в формате объекта JSON.
Свойства
Коллекция фильтров запросов. Имеет тип Filters, определенный в пространстве имен Terrasoft.Nui.ServiceModel.DataContract.
Экземпляр класса запроса UpdateQuery в свойстве Filters обязательно должен содержать ссылку на корректно инициализированный экземпляр класса Filters. Иначе новые значения колонок из свойства ColumnValues будут установлены для всех записей раздела.
Идентификатор запроса.
Дополнительная информация о запросе, которая может быть использована для отправки запроса DBExecutor.
General | Используется, как значение по умолчанию. |
Limited | Используется, чтобы показать, что запрос может быть отправлен исполнителю с ограниченными ресурсами. |
Содержит коллекцию значений колонок добавляемой записи. Унаследовано от родительского класса BaseQuery. Имеет тип ColumnValues, определенный в пространстве имен Terrasoft.Nui.ServiceModel.DataContract.
Строка, содержащая название корневой схемы объекта добавляемой записи.
Тип операции с записью. Задается значением перечисления QueryOperationType пространства имен Terrasoft.Nui.ServiceModel.DataContract. Для UpdateQuery устанавливается значение QueryOperationType.Update.
Select | 0 |
Insert | 1 |
Update | 2 |
Delete | 3 |
Batch | 4 |
Флаг, который включает данные о выполнении процесса.
Признак принудительного обновления. Если имеет значение true, то сущность будет принудительно сохранена на сервере, даже если значения колонок не были изменены. По умолчанию имеет значение false.
Признак необходимости добавления записи при ее отсутствии в базе данных.
Тип запроса.
Delete | Удаление данных. |
Select | Чтение данных. |
Update | Изменение данных. |
Пространство имен Terrasoft.Nui.ServiceModel.DataContract библиотеки классов Terrasoft.Nui.ServiceModel.dll.
Назначение класса DeleteQuery — удаление записи раздела. Передача данных непосредственно в сервис работы с данными DataService осуществляется по HTTP протоколу при помощи POST-запроса по URL.
Контракт данных DeleteQuery имеет иерархическую структуру с несколькими уровнями вложенности. Для простоты восприятия иерархическую структуру контракта данных DeleteQuery удобно представить в формате объекта JSON.
Свойства
Коллекция фильтров запросов. Имеет тип Filters, определенный в пространстве имен Terrasoft.Nui.ServiceModel.DataContract.
Экземпляр класса запроса DeleteQuery в свойстве Filters обязательно должен содержать ссылку на корректно инициализированный экземпляр класса Filters. Иначе будут удалены все записи раздела.
Идентификатор запроса.
Дополнительная информация о запросе, которая может быть использована для отправки запроса DBExecutor.
General | Используется, как значение по умолчанию. |
Limited | Используется, чтобы показать, что запрос может быть отправлен исполнителю с ограниченными ресурсами. |
Содержит коллекцию значений колонок добавляемой записи. Унаследовано от родительского класса BaseQuery. В данном типе запросов не используется.
Строка, содержащая название корневой схемы объекта удаляемой записи.
Тип операции с записью. Задается значением перечисления QueryOperationType пространства имен Terrasoft.Nui.ServiceModel.DataContract. Для DeleteQuery устанавливается значение QueryOperationType.Delete.
Select | 0 |
Insert | 1 |
Update | 2 |
Delete | 3 |
Batch | 4 |
Флаг, который включает данные о выполнении процесса.
Тип запроса.
Delete | Удаление данных. |
Select | Чтение данных. |
Update | Изменение данных. |
Пространство имен Terrasoft.Nui.ServiceModel.DataContract библиотеки классов Terrasoft.Nui.ServiceModel.dll.
Назначение класса BatchQuery — выполнение пакетных запросов.
Пакетный запрос — коллекция произвольных запросов к сервису работы с данными DataService. Пакетные запросы используются для минимизации обращений к сервису работы с данными DataService, что позволяет повысить производительность приложения. Передача данных непосредственно в сервис работы с данными DataService осуществляется по HTTP протоколу при помощи POST-запроса по URL.
Данные пакетного запроса могут передаваться в различных форматах. Одним из удобных для восприятия форматов является формат JSON.
Свойства
Продолжить выполнение запроса в случае ошибки.
Флаг, который включает данные о выполнении процесса.
Коллекция единичных запросов. Для формирования содержимого единичных запросов, которые включены в пакетный запрос, можно воспользоваться контрактами данных InsertQuery, SelectQuery, UpdateQuery и DeleteQuery.
Пространство имен Terrasoft.Nui.ServiceModel.DataContract.
Класс ColumnValues содержит коллекцию значений колонок добавляемой записи.
Свойства
Коллекция ключей и значений Dictionary<string, ColumnExpression>. Ключом является строка с названием добавляемой колонки, а значением — объект типа ColumnExpression, определенный в пространстве имен Terrasoft.Nui.ServiceModel.DataContract.
ExpressionType |
Тип выражения, определяющий значение, которое будет содержаться в добавляемой колонке. Задается значением перечисления EntitySchemaQueryExpressionType пространства имен Terrasoft.Core.Entities, определенного в библиотеке классов Terrasoft.Core. Для InsertQuery устанавливается значение EntitySchemaQueryExpressionType.Parameter. Возможные значения (EntitySchemaQueryExpressionType)
|
|||||||||||||||
Parameter | Определяет значение, которое будет содержаться в добавляемой колонке. Имеет тип Parameter, определенный в пространстве имен Terrasoft.Nui.ServiceModel.DataContract. |
Пространство имен Terrasoft.Nui.ServiceModel.DataContract.
Свойства
Массив значений добавляемой колонки. Используется при сериализации массивов и BLOB данных.
Тип данных значения, которое будет содержаться в добавляемой колонке. Задается значением перечисления DataValueType пространства имен Terrasoft.Nui.ServiceModel.DataContract.
Guid |
Text |
Color |
CompositeObjectList |
Object |
ObjectList |
SecureText |
ShortText |
HashText |
Integer |
LocalizableParameterValuesListDataValueType |
LocalizableStringDataValueType |
LongText |
Float |
Float1 |
Float2 |
Float3 |
Float4 |
Float8 |
Money |
DateTime |
Date |
EntityCollectionDataValueType |
EntityColumnMappingCollectionDataValueType |
EntityDataValueType |
Time |
ValueList |
Lookup |
Enum |
File |
Boolean |
Blob |
Image |
ImageLookup |
Mapping |
MaxSizeText |
MediumText |
MetaDataTextDataValueType |
Объект, содержащий значение добавляемой колонки.
Признак, отображающий необходимость пропустить процесс приведения типа для свойства Value.
Методы
Получить тип данных, используя UserConnection.
Получает локализуемое значение параметра.
Получает значение параметра, при необходимости, с преобразованием типа.
user |
Пользовательское подключение. |
forced |
Тип данных значения, которое необходимо преобразовать. |
use |
Установите значение true для параметра, если метод должен возвращать дату DateTimeKind.Utc. |