Системные переменные и параметры конфигурации
Системные переменные
SqlQuery, описанные в серверном xml-файле поддерживают системные переменные, значения которых серверная часть автоматически формирует и подставляет вместе со значениями пользовательских переменных. Значения системных переменных можно переопределить, передав в запрос параметры с такими же именами.
Текущим пользователем считается пользователь, от имени которого был отправлен запрос с клиентской части на сервер.
Переменные пользователя
Таблицы, из которых будут браться значения, задаются тэгом <UserSettings> описанном в серверном xml-файле. Название таблицы пользователей глобальной схемы данных задается атрибутом PublicUserTable
(по умолчанию public.user), а название таблицы пользователей в локальной схеме данных - атрибутом Table
. Название таблицы соответствий пользователей и групп в локальной схеме данных указывается в атрибуте UserGroupTable
.
{UserId}
Идентификатор текущего пользователя из таблицы пользователей локальной схемы данных.
Название поля задается атрибутом IdField
.
{PublicUserId}
Идентификатор текущего пользователя из таблицы пользователей глобальной схемы данных.
Название поля задается атрибутом PublicUserIdField
.
{UserName}
Системное имя текущего пользователя из таблицы пользователей глобальной схемы данных.
Название поля задается атрибутом PublicUserNameField
.
{UserFullName}
Видимое имя текущего пользователя из таблицы пользователей глобальной схемы данных.
Название поля задается атрибутом PublicUserFullNameField
.
{UserEnabled}
Признак активного состояния текущего пользователя из таблицы пользователей глобальной схемы данных.
Название поля задается атрибутом PublicUserEnabledField
.
{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
Идентификатор текущего пользователя из таблицы пользователей локальной схемы данных.
Название поля задается атрибутом IdField
.
ws.public_user_id
Идентификатор текущего пользователя из таблицы пользователей глобальной схемы данных.
Название поля задается атрибутом PublicUserIdField
.
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