Таблица — это особый тип поля, который можно использовать как в приложениях, так и в бизнес-процессах. Добавив его на форму, вы сможете структурировать данные по строкам и колонкам, изменять их внешний вид и вставлять специальные формулы, которые будут выполнять расчеты.
Например, на форму приложения Заказ можно добавить таблицу, в которой будут перечислены все наименования, выбранные клиентом. В одну из ячеек можно вставить формулу, чтобы общая стоимость заказа пересчитывалась автоматически, в зависимости от количества приобретаемых товаров.
Добавить таблицу на форму приложения
Вы можете добавить таблицу на форму как при создании нового приложения, так и при редактировании уже существующего.
начало внимание
Добавлять и настраивать таблицы могут только пользователи, входящие в группу Администраторы.
конец внимание
Перетащите свойство Таблица с боковой панели на форму и задайте настройки:
- Название — придумайте название таблицы, которое сотрудники увидят на формах создания, просмотра и редактирования элемента приложения;
- Код* — код поля, использующийся при работе с API, сценариями, шаблонами;
- Подсказка — в этом поле можно указать дополнительную информацию, например добавить описание или инструкцию. Это удобный способ помочь сотруднику правильно заполнить таблицу;
- Представление — выберите вариант отображения таблицы:
- Таблица — стандартное отображение данных в виде таблицы;
- По шаблону — эту настройку удобно использовать при работе с большими таблицами. Не всегда требуется отображать всю информацию. Например, иногда достаточно показать только итоговую сумму, а все остальные строки можно скрыть. Для этого нужно настроить шаблон.
В поле Шаблон укажите текст, который пользователь увидит на форме, например, Всего заказов на сумму.
Нажмите на значок {+} в конце строки, чтобы добавить итоговое значение одного из столбцов. Эта опция доступна, если таблица уже создана и настроена. В противном случае вы сможете добавить в шаблон только количество строк в таблице.
- Сделать один заголовок для всех вложенных таблиц — вы можете расположить одну таблицу внутри другой. При этом по умолчанию в каждой новой строке вложенной таблицы будет отображаться её заголовок. Включите эту опцию, чтобы заголовок отображался только под названием колонки;
- Настройка таблицы — нажав на ссылку, вы перейдёте к настройкам таблицы. Подробнее о них читайте в статье «Настройка таблицы».
Добавить колонку в таблицу
В таблицу можно добавлять колонки, определять, какие данные будут отображаться в каждой из них, а также задавать формулы для их автоматического заполнения.
Чтобы добавить колонку, в окне настройки таблицы нажмите на значок +.
Выберите тип колонки:
- Данные — такие колонки содержат данные только одного типа. Например, числа, адреса электронной почты или элементы приложения. Вы можете выбрать один из стандартных типов, используемых в ELMA365. Подробное описание каждого типа мы приводили в статье «Типы данных в системе»;
- Формула — эта опция доступна только для таких типов данных, как строка, деньги или число. Она позволяет задать формулу для вычисления значения в каждой строке колонки. Заполнить строки вручную нельзя. Формула может включать в себя константу, оператор, ссылки.
Константа — это фиксированное значение, представляющее собой число либо текст и не изменяющееся в процессе расчетов. Строковые константы записываются в двойных кавычках «».
Операторы предназначены для выполнения арифметических действий и возвращают числовое значение. Вы можете складывать, вычитать, умножать и делить числа, используя следующие операторы: +, -, *, /. Для задания приоритета математических операций используются круглые скобки ().
Ссылки указывают на значения из других колонок таблицы или из полей приложения.
Колонка типа «Данные»
Чтобы создать колонку, внесите следующую информацию:
- Отображаемое имя* — название колонки, которое будет отображаться на формах создания, просмотра и редактирования элемента приложения;
- Имя свойства* — название свойства, использующееся при работе с API, сценариями, шаблонами. При необходимости имя свойства можно изменить;
- Подсказка — пояснительный текст или дополнительное описание, которое будет отображаться в виде всплывающей подсказки при наведении на заголовок колонки;
- Тип* — тип данных, содержащийся в колонке. Например, выбрав тип Строка вы сможете заполнить колонку любой текстовой информацией.
начало внимание
Выбрав тип данных Строка, Деньги или Число, вы сможете вычислить итог по колонке. Для типов Деньги и Число можно также посчитать сумму, максимум, минимум и среднее значение. Для типа Строка вы сможете добавить надпись.
конец внимание
Колонка типа «Формула»
Чтобы понять механизм создания формул, разберем пример.
В приложение Заказы добавлена таблица, в которой сотрудник указывает наименование товара, его количество и цену. Расчёт итоговой стоимости можно осуществлять автоматически при помощи формулы. Она представляет собой произведение цены на количество товара.
Создайте колонку типа формула, в которой количество позиций автоматически будет умножаться на стоимость.
Для этого нажмите на значок + и выберите тип Формула.
В открывшемся окне задайте настройки. Придумайте название, например, Общая стоимость.
В поле Формула нажмите на значок {+} в конце строки. В открывшемся списке вы увидите название других колонок таблицы и полей приложения. Выберите Количество (ссылка на вторую колонку) и Стоимость за ед. товара (ссылка на третью колонку). Чтобы перемножить значения второй и третей колонок, нужно добавить оператор *.
В поле Тип выберите Деньги, так как вычисляется общая стоимость для каждой позиции из заказа.
Обратите внимание, в формулу можно добавить поля такого же типа, который задан для колонки, заполняемой по формуле. Для этого нажмите значок {+} и в открывшемся списке выберите переменную. Так, в формулу для колонки типа Строка добавьте поля типа Строка. Для колонки типа Число можно задать формулу, используя поля типа Число. Если добавить в формулу переменную другого типа, возникнет ошибка валидации. Исключением является тип Деньги. Если вы создаёте формулу для колонки этого типа, можете использовать комбинацию Деньги*Число, то есть значение поля типа Деньги можно умножить на значение поля типа Число.
начало внимание
Для колонки типа Формула можно показывать общий итог в футере. Для этого в футере, в выпадающем списке выберите нужную функцию: надпись, сумма, максимум, минимум или среднее значение.
конец внимание
Теперь, заполняя таблицу, сотрудник выберет товар и укажет нужное количество позиций, а стоимость рассчитается автоматически.
Удалить колонку или строку из таблицы
Чтобы удалить колонку, перейдите в окно настройки таблицы. Нажмите на значок шестёренки рядом с названием колонки, которую вы хотите удалить. В открывшемся окне в правом нижнем углу нажмите на значок корзины, а затем подтвердите удаление.
Удалить лишнюю строку таблицы можно на форме создания или редактирования приложения. Наведите курсор на строку, которую необходимо удалить. Нажмите на появившийся слева значок корзины. Вы также можете воспользоваться сочетанием клавиш Сtrl + Delete для удаления выделенной строки.
Обратите внимание, если в таблицу добавлены колонки, доступные только для чтения, вы не сможете удалить строку. Чтобы это изменить, в настройках таблицы включите опцию Разрешать удалять строки с ячейками, доступными только для чтения.
Добавить в таблицу данные из другого приложения
При создании таблицы вам может понадобиться сослаться на данные из другого приложения. Предположим, вы ведёте учёт товаров при помощи приложения Номенклатура, а все сделки с клиентами фиксируются в приложении Заказы. Вы можете добавить таблицу на форму заказа, в которой сотрудники смогут выбирать позиции номенклатуры из выпадающего списка. При этом информация о цене за единицу товара будет автоматически добавляться.
Чтобы выполнить такую настройку, добавьте поле типа Таблица на форму приложения Заказы. Затем в настройках таблицы создайте колонку Данные. В поле Тип укажите Приложение и выберите приложение Номенклатура. Имя колонки заполняется автоматически и совпадает с названием элемента приложения.
Сохраните настройки. На форме появится таблица, которая будет ссылаться на элементы приложения Номенклатура. Нажав на ячейку в колонке Позиция, сотрудник сможет выбрать нужный товар.
Также в приложении Номенклатура хранится информация о стоимости каждой позиции. Вы можете добавить в таблицу колонку типа Формула и настроить её так, чтобы информация о стоимости отображалась автоматически, как только пользователь введёт название позиции.
Для этого добавьте новую колонку и выберите Формула. В открывшемся окне в поле формула нажмите на значок {+}. В выпадающем списке выберите Позиция (ссылка на первую колонку), а затем Стоимость за ед. товара (свойство).
Теперь сотрудник сможет открыть выпадающий список, выбрать нужную позицию, а стоимость товара подставится автоматически.
Выдать права на файл в таблице
Рассмотрим ситуацию, когда:
- на форму элемента приложения добавлено поле типа Таблица;
- в колонке таблицы используются данные типа Файл;
- пользователю в ходе бизнес-процесса выданы права на элемент приложения, но он не может просмотреть файл в таблице.
В таком случае назначить права доступа к файлу можно с помощью сценария, используя метод setPermissions()
.
начало внимание
Администратор системы всегда имеет доступ к файлам, независимо от назначенных прав.
конец внимание
Пример сценария:
async function setPerm(): Promise<void> {
// Найдем текущего пользователя
const user = await System.users.getCurrentUser();
// Получим текущий элемент приложения
let app = await Context.data.order.fetch();
// Обработаем каждую строку с помощью цикла
for (let i = app.data.table!.length - 1; i >= 0; i--) {
const row = app.data.table![i];
// Проверим, есть ли в строке файл. Вы можете здесь указать и другие вводные данные, на основе которых можно выдать доступ к файлу
if (row.file) {
// Создадим новый объект типа TPermissions с доступами на чтение и удаление, выдадим доступы пользователю, записанному в переменную user
const permissions = new Permissions([
new PermissionValue(user, [PermissionType.DELETE, PermissionType.READ]),
]);
// Выдадим доступы на файл каждой строки
await row.file.setPermissions(permissions);
}
}
}
Обратите внимание, в этом примере права будут выданы только пользователю, записанному в переменную user
. Все остальные пользователи потеряют доступ к файлу. Чтобы избежать этого, добавьте новые доступы к массиву уже существующих, используя методы getPermissions()
и push()
. Пример кода:
// Получим текущие доступы
const currPermission = await row.file.getPermissions()
// Создадим объект доступов
const NewPermission = new PermissionValue(user, [PermissionType.DELETE, PermissionType.READ]);
// Добавим объект доступов к уже существующим доступам на данный файл
currPermission.values.push(NewPermission);
await AppFetch.setPermissions(currPermission);