Все объекты системы описываются как одноуровневые структуры, в которых кодам полей сопоставляются определённые типы. Типы можно разделить на следующие 4 класса:

Также есть специальный тип TJSON для хранения неструктурированных данных. В зависимости от класса, экземпляры этого типа конструируются разным образом.

Примитивные типы

Примитивные типы сопоставимы с примитивными типами TypeScript, например, в контексте процесса есть поле комментария типа TString, с которым можно работать как с обычной строкой:

Context.data.__comment = `Скрипт выполнился успешно!`;

Структурные типы

Структурные типы по сути представляют собой объект в терминах javascript, например, мы можем взаимодействовать с ФИО инициатора (тип TFullName) следующим образом:

const initiator = await Context.data.__createdBy.fetch();
const fn = initiator.data.fullname;
Context.data.__comment = `Скрипт запустил ${ fn.firstname } ${ fn.lastname }`;

Экземпляры классов

Экземпляры классов необходимо создавать с помощью конструктора или описания поля. Например, если в контексте есть поле total с типом TMoney, то для его заполнения необходимо сделать следующее:

Context.data.total = new Money(17999.99, 'RUB');

Если необходимо добавить строку в поле с типом TTable, то для ее добавления нужно сделать следующее:

// Получаем заказ
const order = await Context.data.orders!.fetch();
// Вставляем строку
const row = order.data.content!.insert();
// Заполняем строку
row.item = Context.data.product!;
row.amount = Context.data.amount!;
// Сохраняем заказ
await order.save();

Примечание: без сохранения элемента приложения не произойдет обновление таблицы.

Ссылки на объекты

Ссылки на объекты системы имеют метод fetch, с помощью которого можно получить сам объект. Подробнее про объекты написано в разделе Типы объектов.

Описание поля

Также каждый тип имеет объект описания, с помощью которого можно либо конструировать объекты, либо производить другие операции. Например, если в контексте есть поле participants типа Пользователи (множественное), то само поле будет хранить массив ссылок TUser, а для получения массива пользователей можно воспользоваться соответствующим ему описанием поля, с типом UserField, в котором есть метод UserField.fetchAll:

const participants = await Context.fields.participants.fetchAll();

Если в контексте есть поле order типа Приложение, то через описание этого поля можно получить доступ непосредственно к приложению, например, для того, чтобы создать новый элемент:

const order = Context.fields.order.app.create();
order.client = Context.data.client;
await order.save();
Context.data.order = order;

Type aliases

ReplacementTypeEnumBase

ReplacementTypeEnumBase: Information | Reassign | Full

information - информирование

reassign - переназначение задач

full - полная передача прав

TApplication

TApplication: ApplicationItemRef<Data, Params>

TBoolean

TBoolean: boolean

Булево значение

TCategory

TCategory: CategoryItemRef<C>

Ссылка на категорию

TFile

Ссылка на файл

TFloat

TFloat: number

Число

TImage

TImage: ImageItemRef

Изображение

TJSON

TJSON: any

TLink

TLink: string

Ссылка (URL)

TRefItem

TRefItem: RefItem

TString

TString: string

Строка

TUser

Пользователь