Документация для разработчиков
Темная тема

Элементы

Scope: rpa Права на выполнение: для всех

Подробнее об элементах можно прочитать в документации по rpa.

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

Поэтому во все методы необходимо передавать идентификатор процесса typeId

rpa.item.*

Метод Описание С версии
rpa.item.get({typeId: number, id: number}) Отдает информацию об элементе с идентификатором id процесса с идентификатором typeId. Параметры:
  • typeId - идентификатор процесса
  • id - идентификатор элемента

Ответ

{
	"item": {
		"id": 43,
		"stageId": 4,
		"previousStageId": 3,
		"name": "Название элемента",
		"typeId": 1,
		"createdBy": 1,
		"updatedBy": 1,
		"createdTime": "19.03.2020 13:07:39",
		"updatedTime": "23.03.2020 18:34:05",
		"movedTime": "23.03.2020 18:34:05",
		"detailUrl": "/rpa/item/1/43/",
		"movedBy": 1,
		"UF_RPA_1_NAME": "Название элемента",
		"tasksCounter": 0,
		"tasksFaces": {
			"completed": [
				1
			],
			"running": [
				
			],
			"all": [
				1
			]
		},
		"users": {
			"1": {
				"id": "1",
				"name": "Anton",
				"secondName": null,
				"lastName": "",
				"title": null,
				"workPosition": null,
				"fullName": "Anton",
				"link": "/company/personal/user/1/"
			}
		}
	}
}

Здесь

  • stageId - идентификатор стадии, на которой находится элемент
  • previousStageId - идентификатор предыдущей стадии элемента
  • name - название элемента
  • typeId - идентификатор процесса
  • createdBy - id пользователя, создавшего элемент
  • updatedBy - id пользователя, изменившего элемент
  • movedBy - id пользователя, изменившего стадию элемента
  • createdTime - время создания элемента
  • updatedTime - время изменения элемента
  • movedTime - время изменения стадии элемента
  • detailUrl - ссылка на карточку элемента
  • tasksCounter - количество заданий на элементе для пользователя
  • tasksFaces - информация для отрисовки последовательности ответственных при утверждении
    • completed - кто выполнил задание
    • running - кто выполняет задание
    • all - все участники
  • users - агрегированная информация о всех пользователях, имеющих отношение к элементу. Список, где ключ - ид пользователя
    • id - идентификатор
    • name - имя
    • secondName - отчество
    • lastName - фамилия
    • title - обращение
    • workPosition - должность
    • fullName - форматированное имя
    • link - ссылка на профиль
  • UF_RPA_... - значения пользовательских полей
    • значения множественных полей отдаются в виде массива
    • значение поля типа "файл" отдаются в виде списка
      • id - идентификатор
      • url - ссылка на файл на портале
      • urlMachine - ссылка на файл для приложения
rpa.item.list({typeId: number, order: ?{} = null, filter: ?{} = null, start: ?number = 0}) Метод вернет массив элементов процесса с идентификатором typeId. Параметры:
  • typeId - идентификатор процесса
  • order - список для сортировки, где ключ - поле, а значение - ASC или DESC
  • filter - список для фильтрации. Ключи для фильтрации по пользовательским полям должны быть в UPPER_CASE, остальные - в camelCase. Примеры фильтров ниже
  • start - сдвиг для постраничной навигации

В ответе будут только основные поля элементов, без данных о заданиях и пользователях элементов

{
	"items": [
		{},
		{}
	]
}
Примеры фильтра
  1. Найти элементы, на которых есть невыполненные задания текущего пользователя
    {
    	"filter": {
    		"tasks": "has_tasks"
    	}
    }
    

    Чтобы найти элементы, на которых нет заданий пользователя, надо передать значение no_tasks

  2. Найти элементы, обновленные пользователем с идентификатором 4
    {
    	"filter": {
    		"=updatedBy": "4"
    	}
    }
    
  3. Найти элементы, обновленные или сдвинутые пользователем с идентификатором 4
    {
    	"filter": {
    		"logic": "or",
    		"0": {
    			"=updatedBy": "4"
    		},
    		"1": {
    			"=movedBy": "4"
    		}
    	}
    }
    
  4. Найти элементы, у которых заполнено пользовательское поле с кодом UF_RPA_1_STRING
    {
    	"filter": {
    		"!=UF_RPA_1_STRING": "",
    	}   
    }
    
  5. Найти элементы, которые были созданы, изменены и сдвинуты в период с 19.03 по 22.03
    {
    	"filter": {
    		">createdTime":"2020-03-19T02:00:00+02:00",
    		">movedTime":"2020-03-19T02:00:00+02:00",
    		">updatedTime":"2020-03-19T02:00:00+02:00",
    		"<createdTime":"2020-03-22T02:00:00+02:00",
    		"<movedTime":"2020-03-22T02:00:00+02:00",
    		"<updatedTime":"2020-03-22T02:00:00+02:00"
    	}
    }
    
  6. Найти элементы, которые были или созданы, или изменены или сдвинуты в период с 19.03 по 22.03
    {
    	"filter": {
    		"logic":"OR",
    		"0":{
    			  ">createdTime":"2020-03-19T02:00:00+02:00",
    			  "<createdTime":"2020-03-22T02:00:00+02:00"
    		},
    		"1":{
    			  ">movedTime":"2020-03-19T02:00:00+02:00",
    			  "<movedTime":"2020-03-22T02:00:00+02:00"
    		},
    		"2":{
    			  ">updatedTime":"2020-03-19T02:00:00+02:00",
    			  "<updatedTime":"2020-03-22T02:00:00+02:00"
    		}
    	}
    }
    
rpa.item.add({typeId: number, fields: ?{}) Метод создает новый элемент процесса с идентификатором typeId. Параметры:
  • typeId - идентификатор процесса
  • fields - значения пользовательских полей элемента. Все остальные поля будут проигнорированы. Не обязательный параметр

После создания элемента роботы будут запущены автоматически

Метод вернет результат аналогичный вызову метода rpa.item.get на только что созданном элементе

Чтобы загрузить файл, в качестве значения пользовательского поля необходимо передать массив, где первый элемент - это имя файла, а второй - это закодированный в base64 контент файла

rpa.item.update({typeId: number, id: number, fields: {}) Метод обновляет элемент с идентификатором id процессса с идентификатором typeId. Параметры:
  • typeId - идентификатор процесса
  • id - идентификатор элемента
  • fields - значения пользовательских полей элемента. Обязательный параметр
    • fields[stageId] - идентификатор стадии
    • fields[UF_RPA_...] - значения пользовательских полей
Загрузить новый файл вместо старого (не множественное поле)

Чтобы заменить файл в не множественном поле, просто загрузите новый файл. Старый будет удален автоматически

{
	"fields": {
		"UF_RPA_1_1585069397": [
			 "myfile.pdf", "...base64_encoded_file_content..."
		]
	}
}
Удалить значение пользовательского поля типа файл

Для этого достаточно передать пустую строку ('') вместо значения

Оставить значение не множественного поля типа файл без изменений

Самый простой вариант - не добавлять в fields ключ с этим полем. Но если надо и передать, и не изменить, то в качестве значения надо передать список, где по ключу id будет идентификатор файла

{
	"fields": {
		"UF_RPA_1_1585069397": {
			"id": 433	
		}
	}
}

Если в id передать отличное от текущего значения, то значение поля обнулится и файл будет стерт

Работа с множественным полем типа файл

Значение множественного поля - это массив. Каждый элемент массива подчинается тем же правилам, что и для не множественных значений.

Частичная перезапись значения множественного поля типа файл

Например, сейчас в множественном поле типа файл находится значение [12, 255, 44]

Необходимо оставить файла 12 и 44, а вместо 255 загрузить новый

Запрос должен выглядеть следующим образом:

{
	"fields": {
		"UF_RPA_1_1585069397": [
			{
				"id": 12
			},
			{
				"id": 44
			},
			[
				"myNewFile.pdf", 
				"...base64_encoded_file_content..."
			]
		]
	}
}
rpa.item.delete({typeId: number, id: number) Метод удалит элемент. Параметры:
  • typeId - идентификатор процесса;
  • id - идентификатор элемента.
rpa.item.getTasks({{typeId: number, id: number}) Метод вернет данные о текущих заданиях элемента с идентификатором id процесса с идентификатором typeId. Параметры:
  • typeId - идентификатор процесса
  • id - идентификатор элемента

Пример ответа

{
	"tasks": [
		{
			"id": "93",
			"title": "asdf",
			"description": "",
			"userId": 1,
			"data": {
				"participantJoint": "or",
				"isMine": true,
				"controls": {
					"BUTTONS": [
						{
							"TYPE": "submit",
							"TARGET_USER_STATUS": 3,
							"NAME": "complete",
							"VALUE": "Y",
							"TEXT": "Сохранить",
							"COLOR": "3bc8f5"
						}
					]
				},
				"type": "RpaRequestActivity",
				"url": "/rpa/task/id/93/",
				"fieldsToShow": null,
				"fieldsToSet": [
					"Название"
				],
				"users": [
					{
						"id": 1,
						"status": 0
					}
				]
			},
			"itemClassName": "BX.Rpa.Timeline.Task",
			"users": {
				"1": {
					"id": "1",
					"name": "Anton",
					"secondName": "",
					"lastName": "Gorbylev",
					"title": null,
					"workPosition": "",
					"fullName": "Anton Gorbylev",
					"link": "/company/personal/user/1/"
				}
			}	
		}
	]
}

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
2
Дмитрий Киселёв
Сообщение не промодерировано, возможны ошибки и неточности.
Для изменения названия элемента вместо параметра name нужно использовать UF_RPA_1_NAME
(либо UF_RPA_2_NAME, UF_RPA_3_... и т.д., в зависимости от  ID  вашего процесса RPA).
© «Битрикс», 2001-2024, «1С-Битрикс», 2024