Настройка Script Context: Пошаговое руководство
При выполнении выражений на страницах или в функциях прокидывается глобальные переменные, которые позволяют расширить функционал, выполнить проверки или дополнительную логику.
Глобальные переменные
pages
(PagesService) - позволяет работать со страницамиdataSources
(DataSourceService) - сервис доступа к источникам данныхfunctions
(FunctionsService) - сервис позволяет вызывать и работать с функциямиusers
(UsersService) - работа с пользователямиpage
(PageParams) - текущие параметры страницы, доступно только в визульных компонентах и страницахmessage
(Message) - позволяет отобразить сообщение пользователю в виде всплыващего окна
PagesService
Доступно только при испольнении интерфейсного кода, переменная ctx.pages
Функции
open(alias: string, params: any)
Открыть страницу по алиасу
Параметры:
alias
: string - алиас указанный в настройках страницыparams
: any - параметры открытия страницы, который будут доступны в переменной контекстаctx
Для страниц редактирования (isEditPage=true
) обязательным параметром для открытия конкретной сущности является указание в params
параметра id
требуемой сущности, которые подставляется в route, наприме /example-entity/{id}
. Если требуется открыть странцу для создания новой сущности, то передать id=new
Пример открытия страницы редактирования существующей сущности (наприме выбранной в строке таблицы):
pages.open('"example-entity"', {
"id": "1681863152662220800"
})
Пример открытия страницы редактирования для создания новой сущности
ctx.pages.open('"example-entity"', {
"id": "new"
})
design (alias: string)
Открыть страницу по алиасу в дизайнере страниц
Параметры:
alias
: string - алиас указанный в настройках страницы
openDialog (options: DialogOptions)
Открыть страницу в диалоговом окне
Структура DialogOptions:
page
(string, required) - алиас страницыtitle
(string, optional) - заголовок страницыmodal
(bool, optional, default false) boolean - модальное окно, невозможно закрыть кликом мыши вне диалогаwidth
(number, optional, default 400px) number - ширина окнаselecting
(bool, optional, default false) boolean - диалог выбора, на странице должен быть компонент Table, который передает выбранные строки после нажатия кноки "Выбрать"onClose
(Function, optional) - callback вызываемый при закрытии окнаonSelect
(Function, optional) - callback вызываемый после нажатия кнопки "Выбрать"onOpen
(Function, optional) - callback вызываемый при открытии страницы
Пример вызова
ctx.pages.openDialog({
page: "example-dialog",
title: "Выбрать что то",
selecting: true,
onSelect: (event) => {
console.log(event)
}
})
DataSourceService
Работа с источниками данных
Функции
getByAlias(alias: string) : DataSource
Параметры
alias
(string, required) - алиас источника данных указанного в настройках
Возвращает экземпляр класса DataSource
DataSource
Позволяет работать с данными конкретного источника данных.
Функции
getMany(options?: GetDataManyOptions): Promise<GetManyResponse>
Возвращает набор сущностей по заданным фильтрам
Структура GetDataManyOptions
:
filter
(array of FilterItemInterface, optional) - фильтры по полямfields
(array of string, optional, default all fields) - необходимые для выборки поля по алиасамsearch
(string, optional) - поиск по совпадения текста, действуте только для полей с установленным полнотекстовым поискомtake
(number, optional, default 100) - ограничение по кол-ву записей в выборкеskip
(number, optional, default 0) - пропустить кол-во записейsort
(object, optional), - сортировка, доступны параметры:field
(string, required) - алиас поляask
(boolean, required) - по возрастанию
include
(array of string) - обязательно включить записи в выборку если они даже не подходят в поиске или фильтре
getById(id: string) : Promise<EntityInterface | undefined>
Возвращает сущность по его идентификатору
getByKeys?(keys: any) : Promise<EntityInterface | undefined>
Возвращает запись по ключевым полям, требуется для источников агрегаторов
insert(id: string, value: any, parentId?: string, route?: string[]): Promise<EntityInterface>
Добавить новую запись
updateById(id: string, value: object): Promise<EntityInterface>
Обновить щапись по идентификатору
removeById(id: string, route?: string[]): Promise<boolean>
Удалить запись по идентификатору, удаление мягкое, т.е. устанавливается пометка об удалении, потом запись можно найти в удаленных.
setValue?(id: string, field: string, value: any): Promise<void>
Обновить значение поля по идентификатору
setVariable?(alias: string, value: any)
Установить переменную для источника данных
getFieldByAlias(alias: string): FieldInterface | undefined
Возвращает параметры поля источника данных
hasPermission(action: string, userPermissions: any)
Возвращает, имеет ли пользователь полномочия на действие
Доступные значения alias
:
Add
- добавлениеEdit
- измененияRemove
- удаление
FunctionsService
Работа с функциями
Функции
invoke (alias: string, context: any) : Promise<any>
Вызов функции по алиасу с передачей контекста в функцию
Пример
functions.invoke('some-func', {
makeSomething: true
})