Обратите внимание, что при использовании этого типа в сериализуемом контексте
(например, в серверном контексте виджета) в этом значении могут храниться только
примитивные типы данных JSON.
Однако вполне возможно, в частности, использовать этот тип для передачи произвольных
значений между виджетами на клиенте с использованием привязки входящих переменных.
Представляет собой массив объектов со следующими полями:
currentValue — текущее значение ячейки;
rootRowIndex — индекс строки корневой таблицы;
rootColumnCode — код колонки корневой таблицы;
subTableRowIndex — индекс строки вложенной таблицы;
subTableColumnCode — код колонки вложенной таблицы.
Пример использования:
const table = Context.data.clients_table;
for (const event of events) {
// Проверка, что изменения произошли во вложенной таблицеif (event.subTableColumnCode) {
// Проверка, что изменения были в колонке с кодом `client`if (event.subTableColumnCode === 'client') {
const clientRef = event.currentValue; // тип `UserItemRef`const clientApp = await clientRef.fetch(); // тип `UserItem`// Изменение значения ячейки в колонке `client_phone` в той же строке вложенной таблицы// на основе нового значения ячейки `client`const rootRow = table[event.rootRowIndex];
const subTable = rootRow[event.rootColumnCode];
const subTableRow = subTable[event.subTableRowIndex];
subTableRow.client_phone = clientApp.data.mobilePhone;
return;
}
} else {
// Изменения произошли в корневой таблице// ...
}
}
Context.data.clients_table = table;
Представляет собой массив объектов со следующими полями:
previousValue — предыдущее значение ячейки;
currentValue — текущее значение ячейки;
rootRowIndex — индекс строки корневой таблицы;
rootColumnCode — код колонки корневой таблицы;
subTableRowIndex — индекс строки вложенной таблицы;
subTableColumnCode — код колонки вложенной таблицы.
Пример использования:
const table = Context.data.clients_table;
for (const event of events) {
// Проверка, что изменения произошли во вложенной таблицеif (event.subTableColumnCode) {
// Проверка, что изменения были в колонке с кодом `client`if (event.subTableColumnCode === 'client') {
const clientRef = event.currentValue; // тип `UserItemRef`const clientApp = await clientRef.fetch(); // тип `UserItem`// Изменение значения ячейки в колонке `client_phone` в той же строке вложенной таблицы// на основе нового значения ячейки `client`const rootRow = table[event.rootRowIndex];
const subTable = rootRow[event.rootColumnCode];
const subTableRow = subTable[event.subTableRowIndex];
subTableRow.client_phone = clientApp.data.mobilePhone;
continue;
}
} else {
// Изменения произошли в корневой таблице// ...
}
}
Context.data.clients_table = table;
Представляет собой массив объектов со следующими полями:
row — удалённая строка;
currentValue — текущее значение ячейки;
rootRowIndex — индекс строки корневой таблицы;
rootColumnCode — код колонки корневой таблицы;
subTableRowIndex — индекс строки вложенной таблицы.
Пример использования:
for (const event of events) {
// Проверка, что изменения произошли во вложенной таблицеif (event.rootColumnCode) {
// Проверка, что изменения были в колонке с кодом `products_table`if (event.rootColumnCode === 'products_table') {
const deletedRow = event.row;
const productRef = deletedRow.product;
const productApp = await productRef.fetch();
// Далее выполняем стороннюю логику на основе данных удалённой строкиconsole.log(`Строка с продуктом ${productApp.data.__name} была удалена!`);
continue;
}
} else {
// Изменения произошли в корневой таблице// ...
}
}
Представляет собой массив объектов со следующими полями:
row — перемещённая строка;
oldRootRowIndex — предыдущий индекс строки корневой таблицы;
newRootRowIndex — новый индекс строки корневой таблицы;
rootColumnCode — код колонки корневой таблицы;
oldSubTableRowIndex — предыдущий индекс строки вложенной таблицы;
newSubTableRowIndex — новый индекс строки вложенной таблицы.
Пример использования:
const table = Context.data.clients_table;
for (const event of events) {
// Проверка, что изменения произошли во вложенной таблицеif (event.rootColumnCode) {
// Проверка, что изменения были в колонке с кодом `products_table`if (event.rootColumnCode === 'products_table') {
const movedRow = event.row;
const productRef = movedRow.product;
const productApp = await productRef.fetch();
// Далее выполняем стороннюю логику на основе данных перемещённой строкиconsole.log(`Строка с продуктом ${productApp.data.__name} была перемещена!`);
continue;
}
} else {
// Изменения произошли в корневой таблице// ...
}
}
Context.data.clients_table = table;
Типы данных
Подробное описание читайте в статье про типы данных.
Type aliases
ReplacementTypeEnumBase
Типы замещений
Information — информирование;
Reassign — переназначение задач;
Full — полная передача прав.
RoleType
Типы объектов в поле типа «Роль»
TApplication
Ссылка на элемент приложения
TBoolean
Выбор «да/нет»
Подробнее читайте на MDN.
TCategory
Категория (папка)
Ссылка на категорию элементов приложения. В структуре файлов и в иерархическом справочнике категория — это папка.
TDirectory
Папка
TFile
Ссылка на файл
TFloat
Число
Подробнее читайте на MDN.
TImage
Изображение
TJSON
Произвольный тип (JSON)
Тип предназначен для передачи или хранения произвольных данных в контексте:
Context.data.json = { 'my-string': 'string data', 'my-num': 1234, 'my-bool': true, 'my-array': [ 'string', 999, false ], 'my-object': { // Вложенный объект также возможен } };Обратите внимание, что при использовании этого типа в сериализуемом контексте (например, в серверном контексте виджета) в этом значении могут храниться только примитивные типы данных JSON.
Однако вполне возможно, в частности, использовать этот тип для передачи произвольных значений между виджетами на клиенте с использованием привязки входящих переменных.
// Виджет 1 - внешний async function onInit() { Context.data.json = { onSaveCallback: async () => await saveFunction() // Записываем ссылку на функцию }; } async function saveFunction() { // Логика обработки события } // Виджет 2 - внутренний async function onSaveClick() { await Context.data.in_json?.onSaveCallback?.(); }TLink
Ссылка (URL)
Используется как обычная строка. Не проходит валидацию.
Context.data.site_url = 'https://elma365.com';TOAuth2
Ссылка на OAuth2
TRole
Ссылка на роль
TString
Строка
Подробнее читайте на MDN.
TUser
Пользователь
TableCellChangeDoneEvent
Событие окончания изменения ячейки в таблице
TableCellChangeDoneEvents
Событие окончания изменения ячеек в таблице
Представляет собой массив объектов со следующими полями:
currentValue— текущее значение ячейки;rootRowIndex— индекс строки корневой таблицы;rootColumnCode— код колонки корневой таблицы;subTableRowIndex— индекс строки вложенной таблицы;subTableColumnCode— код колонки вложенной таблицы.Пример использования:
const table = Context.data.clients_table; for (const event of events) { // Проверка, что изменения произошли во вложенной таблице if (event.subTableColumnCode) { // Проверка, что изменения были в колонке с кодом `client` if (event.subTableColumnCode === 'client') { const clientRef = event.currentValue; // тип `UserItemRef` const clientApp = await clientRef.fetch(); // тип `UserItem` // Изменение значения ячейки в колонке `client_phone` в той же строке вложенной таблицы // на основе нового значения ячейки `client` const rootRow = table[event.rootRowIndex]; const subTable = rootRow[event.rootColumnCode]; const subTableRow = subTable[event.subTableRowIndex]; subTableRow.client_phone = clientApp.data.mobilePhone; return; } } else { // Изменения произошли в корневой таблице // ... } } Context.data.clients_table = table;TableCellChangeEvent
Событие изменения ячейки в таблице
TableCellChangeEvents
Событие изменения ячеек в таблице
Представляет собой массив объектов со следующими полями:
previousValue— предыдущее значение ячейки;currentValue— текущее значение ячейки;rootRowIndex— индекс строки корневой таблицы;rootColumnCode— код колонки корневой таблицы;subTableRowIndex— индекс строки вложенной таблицы;subTableColumnCode— код колонки вложенной таблицы.Пример использования:
const table = Context.data.clients_table; for (const event of events) { // Проверка, что изменения произошли во вложенной таблице if (event.subTableColumnCode) { // Проверка, что изменения были в колонке с кодом `client` if (event.subTableColumnCode === 'client') { const clientRef = event.currentValue; // тип `UserItemRef` const clientApp = await clientRef.fetch(); // тип `UserItem` // Изменение значения ячейки в колонке `client_phone` в той же строке вложенной таблицы // на основе нового значения ячейки `client` const rootRow = table[event.rootRowIndex]; const subTable = rootRow[event.rootColumnCode]; const subTableRow = subTable[event.subTableRowIndex]; subTableRow.client_phone = clientApp.data.mobilePhone; continue; } } else { // Изменения произошли в корневой таблице // ... } } Context.data.clients_table = table;TableRowDeleteEvent
Событие удаления строки в таблице
TableRowDeleteEvents
Событие удаления строк в таблице
Представляет собой массив объектов со следующими полями:
row— удалённая строка;currentValue— текущее значение ячейки;rootRowIndex— индекс строки корневой таблицы;rootColumnCode— код колонки корневой таблицы;subTableRowIndex— индекс строки вложенной таблицы.Пример использования:
for (const event of events) { // Проверка, что изменения произошли во вложенной таблице if (event.rootColumnCode) { // Проверка, что изменения были в колонке с кодом `products_table` if (event.rootColumnCode === 'products_table') { const deletedRow = event.row; const productRef = deletedRow.product; const productApp = await productRef.fetch(); // Далее выполняем стороннюю логику на основе данных удалённой строки console.log(`Строка с продуктом ${productApp.data.__name} была удалена!`); continue; } } else { // Изменения произошли в корневой таблице // ... } }TableRowMoveEvent
Событие перемещения строки в таблице
TableRowMoveEvents
Событие перемещения строк в таблице
Представляет собой массив объектов со следующими полями:
row— перемещённая строка;oldRootRowIndex— предыдущий индекс строки корневой таблицы;newRootRowIndex— новый индекс строки корневой таблицы;rootColumnCode— код колонки корневой таблицы;oldSubTableRowIndex— предыдущий индекс строки вложенной таблицы;newSubTableRowIndex— новый индекс строки вложенной таблицы.Пример использования:
const table = Context.data.clients_table; for (const event of events) { // Проверка, что изменения произошли во вложенной таблице if (event.rootColumnCode) { // Проверка, что изменения были в колонке с кодом `products_table` if (event.rootColumnCode === 'products_table') { const movedRow = event.row; const productRef = movedRow.product; const productApp = await productRef.fetch(); // Далее выполняем стороннюю логику на основе данных перемещённой строки console.log(`Строка с продуктом ${productApp.data.__name} была перемещена!`); continue; } } else { // Изменения произошли в корневой таблице // ... } } Context.data.clients_table = table;Ваш отзыв успешно отправлен!
Спасибо за обратную связь.