• Модуль: rpa
  • Путь к файлу: ~/bitrix/modules/rpa/lib/scenario/drafttype.php
  • Класс: BitrixRpaScenarioDraftType
  • Вызов: DraftType::play
public function play(): Result
{
	Base::loadBaseLanguageMessages();
	$type = TypeTable::createObject();
	$type->setTitle(Loc::getMessage('RPA_COMMON_NEW_PROCESS'));
	$name = TypeTable::generateName();
	if(!$name)
	{
		$result = new Result();
		return $result->addError(new Error(Loc::getMessage('RPA_SCENARIO_DRAFT_TYPE')));
	}
	$type->setName($name);
	$result = $type->save();
	if($result->isSuccess())
	{
		$result->setData([
			'type' => $type,
		]);

		PermissionTable::add([
			'ENTITY' => UserPermissions::ENTITY_TYPE,
			'ENTITY_ID' => $type->getId(),
			'ACCESS_CODE' => 'UA',
			'ACTION' => UserPermissions::ACTION_ITEMS_CREATE,
			'PERMISSION' => UserPermissions::PERMISSION_ANY,
		]);

		PermissionTable::add([
			'ENTITY' => UserPermissions::ENTITY_TYPE,
			'ENTITY_ID' => $type->getId(),
			'ACCESS_CODE' => 'UA',
			'ACTION' => UserPermissions::ACTION_MODIFY,
			'PERMISSION' => UserPermissions::PERMISSION_ANY,
		]);

		PermissionTable::add([
			'ENTITY' => UserPermissions::ENTITY_TYPE,
			'ENTITY_ID' => $type->getId(),
			'ACCESS_CODE' => 'UA',
			'ACTION' => UserPermissions::ACTION_VIEW,
			'PERMISSION' => UserPermissions::PERMISSION_ANY,
		]);

		$fieldName = $type->getItemUfNameFieldName();
		$ufEntity = new CAllUserTypeEntity();
		$id = $ufEntity->Add([
			'ENTITY_ID' => $type->getItemUserFieldsEntityId(),
			'FIELD_NAME' => $fieldName,
			'USER_TYPE_ID' => CUserTypeManager::BASE_TYPE_STRING,
			'SORT' => 10,
			'MULTIPLE' => 'N',
			'MANDATORY' => 'N',
			'SHOW_FILTER' => 'S',
			'SHOW_IN_LIST' => 'Y',
			'EDIT_IN_LIST' => 'Y',
			'IS_SEARCHABLE' => 'Y',
			'EDIT_FORM_LABEL' => [
				Loc::getCurrentLang() => Loc::getMessage('RPA_COMMON_TITLE'),
			],
			'LIST_COLUMN_LABEL' => [
				Loc::getCurrentLang() => Loc::getMessage('RPA_COMMON_TITLE'),
			],
			'LIST_FILTER_LABEL' => [
				Loc::getCurrentLang() => Loc::getMessage('RPA_COMMON_TITLE'),
			],
		]);

		if($id > 0)
		{
			FieldTable::add([
				'TYPE_ID' => $type->getId(),
				'STAGE_ID' => 0,
				'FIELD' => $fieldName,
				'VISIBILITY' => FieldTable::VISIBILITY_CREATE,
			]);
		}
	}

	return $result;
}