Системные переменные и параметры конфигурации
Системные переменные
SqlQuery, описанные в серверном xml-файле поддерживают системные переменные, значения которых серверная часть автоматически формирует и подставляет вместе со значениями пользовательских переменных. Значения системных переменных можно переопределить, передав в запрос параметры с такими же именами.
Текущим пользователем считается пользователь, от имени которого был отправлен запрос с клиентской части на сервер.
Переменные пользователя
Таблицы, из которых будут браться значения, задаются тэгом <UserSettings> описанном в серверном xml-файле. Название таблицы пользователей глобальной схемы данных задается атрибутом PublicUserTable
(по умолчанию public.user), а название таблицы пользователей в локальной схеме данных - атрибутом Table
. Название таблицы соответствий пользователей и групп в локальной схеме данных указывается в атрибуте UserGroupTable
.
{UserId} | Идентификатор текущего пользователя из таблицы пользователей локальной схемы данных.
Название поля задается атрибутом |
{PublicUserId} | Идентификатор текущего пользователя из таблицы пользователей глобальной схемы данных.
Название поля задается атрибутом |
{UserName} | Системное имя текущего пользователя из таблицы пользователей глобальной схемы данных.
Название поля задается атрибутом |
{UserFullName} | Видимое имя текущего пользователя из таблицы пользователей глобальной схемы данных.
Название поля задается атрибутом |
{UserEnabled} | Признак активного состояния текущего пользователя из таблицы пользователей глобальной схемы данных.
Название поля задается атрибутом |
{UserGroupIds} | Список идентификаторов групп, в которых состоит текущий пользователь. Значения берутся из таблицы соответствий пользователей и групп в локальной схеме данных. |
{UserGroupIdsArray} | Массив идентификаторов групп, в которых состоит текущий пользователь. Значения берутся из таблицы соответствий пользователей и групп в локальной схеме данных. |
Переменные даты и времени
Дата и время отображается в часовом поясе сервера, который задается в файле конфигурации сервера appsettings.json в поле TimeZone.
{Now} | Текущая дата со временем на сервере |
{NowTime} | Текущее время на сервере |
{NowDate} | Текущая дата на сервере |
{NowYear} | Текущий год на сервере |
{NowMonth} | Текущая месяц на сервере |
{NowHour} | Возвращает количество часов из текущего времени на сервере |
{NowMinute} | Возвращает количество минут из текущего времени на сервере |
{NowSecond} | Возвращает количество секунд из текущего времени на сервере |
Переменные временной зоны
Временная зона сервера задается в файле конфигурации сервера appsettings.json в поле TimeZone.
{ServerTimeZone} | Текущая временная зона сервера. |
{TimeZoneOffset} | Устаревший Величина смещения временной зоны текущего пользователя относительно Etc/GMT. |
{ServerTimeZoneOffset} | Устаревший Величина смещения временной зоны сервера относительно Etc/GMT. |
{TimeZoneDiff} | Устаревший Разница между временной зоной сервера и временной зоной текущего пользователя. |
Как правило в sql-запросах и функциях используем параметры конфигураций.
Параметры конфигурации
Перед выполнением каждого SqlQuery сервер выполняет запрос на установку параметров конфигурации:
Метод set_config устанавливает для параметра значение, которое будет доступно до конца текущего сеанса. Чтобы получить значение параметра необходимо использовать метод current_setting:
Платформа поддерживает следующие параметры конфигурации:
ws.user_id | Идентификатор текущего пользователя из таблицы пользователей локальной схемы данных.
Название поля задается атрибутом |
ws.public_user_id | Идентификатор текущего пользователя из таблицы пользователей глобальной схемы данных.
Название поля задается атрибутом |
ws.server_time_zone | Текущая временная зона сервера. |
ws.server_time_zone_offset | Устаревший Величина смещения временной зоны сервера относительно Etc/GMT. |
ws.time_zone_offset | Устаревший Величина смещения временной зоны текущего пользователя относительно Etc/GMT. |
ws.time_zone_diff | Устаревший Разница между временной зоной сервера и временной зоной текущего пользователя. |
Так же перед выполнением SqlQuery сервер выполняет запрос на установку временной зоны для сервера PostgreSQL:
Временная зона для сервера PostgreSQL устанавливается только для текущего сеанса. Это необходимо, чтобы исключить неприятные ситуации из-за редактированием настроек сервера PostgreSQL и изменения его временной зоны. В качестве значения используется временная зона сервера.
Last updated