Была ли статья полезной?
- Введение [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
- Работа с типами
- Глобальный контекст и изоляция
- Работа с приложениями
- Массовые действия с элементами приложения
- Работа с внешними сервисами
- Скрипты в виджетах
- Веб компоненты
- Права доступа
- Начало работы с процессами
- Начало работы с подписями
- Начало работы с предпросмотром файлов
- Начало работы с организационной структурой
- Начало работы с пользователями и группами
- Начало работы с типом данных Таблица
- Начало работы с типом данных Категория
- Динамическое вычисление типа события
- Решение типовых задач
- API
В этой статье
Начало работы с типом данных «Категория»
Тип данных Категория представляет собой список вариантов, из которых выбирается один или несколько. Вы можете получать, передавать и фильтровать их с помощью скриптов. Для этого используются:
Получение всех вариантов категории
Из поля типа Категория можно получить все варианты с их названиями и кодами. Например, чтобы при нажатии кнопки на странице записать варианты в поле типа Строка, привяжите к кнопке скрипт:
async function showCategoryProperties(): Promise<void> { // Получаем массив всех названий вариантов категории и преобразуем их в строку const allCategoryValues = Context.fields.category.data.variants.map(v => v.name).join(', '); // Получаем массив всех кодов вариантов категории и преобразуем их в строку const allCategoryCodes = Context.fields.category.data.variants.map(v => v.code).join(', '); // Указываем переменную типа Строка для хранения результата Context.data.category_properties = ``; // Добавляем в результат все названия вариантов Context.data.category_properties += `Варианты: ${allCategoryValues}\n`; // Добавляем в результат все коды вариантов Context.data.category_properties += `Коды: ${allCategoryCodes}\n\n`; }
Получение выбранных пользователем вариантов категории
Вы можете получать варианты категории, указанные пользователем. Предположим, на странице сотрудник выбирает значения в поле типа Категория и нажимает кнопку. Тогда названия вариантов и их коды выводятся в поле типа Строка. Для этого к кнопке привяжите скрипт:
async function showSelectedOption(): Promise<void> { // Указываем переменную типа Строка для хранения результата Context.data.selected_option = ``; // Получаем название выбранного варианта категории и добавляем в поле типа Строка // Если название не указано, выводим надпись «не задано» Context.data.selected_option += `Выбранный вариант: ${Context.data.category?.name ? Context.data.category.name : 'не задано'}\n` // Получаем код выбранного варианта категории и добавляем в поле типа Строка // Если код не указан, выводим надпись «не задано» Context.data.selected_option += `Код выбранного варианта: ${Context.data.category?.code ? Context.data.category.code : 'не задано'}\n` }
async function showSelectedOptions(): Promise<void> { // Получаем массив значений выбранных вариантов и преобразуем в строку const allSelectedValues = Context.data.multi_category?.map(v => v.name).join(', '); // Получаем массив кодов выбранных вариантов и преобразуем их в строку const allSelectedCodes = Context.data.multi_category?.map(v => v.code).join(', '); // Указываем переменную типа Строка для хранения результата Context.data.selected_options = ``; // Добавляем в результат значения выбранных вариантов Context.data.selected_options += `Выбранные варианты: ${allSelectedValues}\n` // Добавляем в результат коды выбранных вариантов Context.data.selected_options += `Коды выбранных вариантов: ${allSelectedCodes}\n` }
Создание новых вариантов категории через скрипт
Вы можете создавать варианты категории динамически с помощью скрипта, например, при открытии страницы. Для этого добавьте в её контекст переменную типа Категория без указания вариантов и настройте её заполнение:
async function onInit() { // Создаём исходный массив с вариантами const categoryArray = ['ремонт', 'осмотр', 'замена']; // Преобразуем массив строк в массив вариантов для поля Категория Context.fields.category.data.variants = categoryArray.map((name): TEnum<any> => ({ name: name, code: name, })); }
Фильтрация значений из категории
В скрипте можно задать условия и отобразить только нужные варианты категории на странице или форме. Допустим, если пользователь заполняет поле типа Строка, то из поля типа Категория исключается часть вариантов. Для этого в настройках переменной типа Строка в опции Событие при изменении значения привяжите функцию:
async function conditionChange(): Promise<void> { // Проверяем наличие значения в поле, которое заполняет пользователь if (Context.data.condition) { // Фильтруем варианты категории. Оставляем только те опции, у которых код не `repair` и не `replace` Context.fields.category.data.variants = Context.fields.category.data.variants.filter(t => t.code !== 'repair' && t.code !== 'replace'); } // Если пользователь не заполнил поле для условия, отображаются все варианты }