Версия:

add

Создаст новую запись в таблице класса, сбросит связанный кэш, сохранит историю (см. Механизм истории). Создание может быть запрещено настройками профайла (new_command|editable на уровне класса/клиентского объекта).

Входные параметры. Интерфейс IAPIQueryParams

Те поля которые вы хотите заполнить при создании из списка полей класса.

Поля запрещенные для добавления в профайле (editable/server_editable/insertable/server_insertable) будут проигнорированы.

Поля каждого созданного класса можно посмотреть

Там будут не только физические поля, но и виртуальные, то есть такие, которые при запросе подтягиваются из связанных таблиц с помощью JOIN, или сформированные различными функциями SQL, например CONCAT.

Пример classes/_structures/crm_user.ts:

/**
 * Automatically generated based on class_fields_profile when synchronizing a class with tables.json (from the interface).
 * Do not change this interface manually, as it will be overwritten during the next generation.
 */
export interface ICrm_userDataRow extends IAPIResponseDataRow {
    id: number;
    firstname?: string;
    lastname?: string;
    midname?: string;
    fio?: string;
    email?: string;
    phone?: string;
    city?: string;
    age?: number;
    gender_id?: number;
    gender_name?: string;
    last_action_datetime?: any;
    status_id?: number;
    status_name?: string;
    status_sysname?: string;
    crm_user_type_id?: number;
    crm_user_type_name?: string;
    crm_user_type_sysname?: string;
    avatar?: string;
    note?: string;
    organization_id?: number;
    organization?: string;
    subject?: string;
    agreement_personal_data?: string;
    is_sent_to_bitrix?: boolean;
    created?: any;
    updated?: any;
    deleted?: any;
    created_by_user_id?: number;
    created_by_user?: string;
    deleted_by_user_id?: number;
    deleted_by_user?: string;
    remove_comment?: string;
    last_edited_by_user_id?: number;
    last_edited_by_user?: string;
}

В структуре ICrm_userDataRow не видно, какие поля виртуальные, но это видно в tables.json (или в tablesCore.json, для классов существующих в ядре из коробки).

"crm_user": {
    "profile": {
      "name": "crm_user",
      "name_ru": "Клиент",
      "ending": ""
    },
    "structure": {
      "id": {"type": "bigint","length": "20","notNull": true,"autoInc": true,"primary_key": true},
    
      "firstname": {"type": "varchar","length": "255"},
      "lastname": {"type": "varchar","length": "255"},
      "midname": {"type": "varchar","length": "255"},
      "fio" : {"type": "varchar", "length": "255", "concat_fields": "lastname, ,firstname, ,midname", "is_virtual": true, "name": "ФИО"},
    
      "email": {"type": "varchar","length": "255","name":"email/login"},
      "phone": {"type": "varchar","length": "255"},
      "city": {"type": "varchar","length": "255"},
      "subject": {"type": "varchar","length": "255"},
      "note": {"type": "text"},
    
      "age": {"type": "int","length": "3", "name":"Возраст"},
      "gender_id": {"type": "bigint","length": "20", "visible": false},
      "gender_name" : {"type": "varchar", "length": "255", "from_table": "gender", "keyword": "gender_id", "return_column": "sysname", "is_virtual": true, "name": "Gender"},
    
      "last_action_datetime" : {"type": "datetime"},
    
      "status_id": { "type": "bigint", "length": "20", "server_editable":false, "server_updatable":true, "visible": false},
      "status_name" : {"type": "varchar", "length": "255", "from_table": "crm_user_status", "keyword": "status_id", "return_column": "name", "is_virtual": true, "name": "Статус"},
      "status_sysname" : {"type": "varchar", "length": "255", "from_table": "crm_user_status", "keyword": "status_id", "return_column": "sysname", "is_virtual": true, "name": "Системное имя статуса", "visible": false},
    
      "crm_user_type_id": { "type": "bigint", "length": "20", "visible": false},
      "crm_user_type_name" : {"type": "varchar", "length": "255", "from_table": "crm_user_type", "keyword": "crm_user_type_id", "return_column": "name", "is_virtual": true, "name": "Тип пользователя сайта"},
      "crm_user_type_sysname" : {"type": "varchar", "length": "255", "from_table": "crm_user_type", "keyword": "crm_user_type_id", "return_column": "sysname", "is_virtual": true, "name": "Системное имя типа", "visible": false},
    
      "organization_id": {"type": "bigint", "length": "20"},
      "organization": {"type": "varchar", "length": "255", "from_table": "organization", "keyword": "organization_id", "return_column": "name", "is_virtual": true, "name": "Организация"},
    
      "agreement_personal_data": {"type": "text", "name": "Разрешение на обработку персональных данных"},
    
      "avatar": {"type": "text", "name": "Аватар"},
    
      "is_sent_to_bitrix": {"type": "tinyint", "length": "1", "default_value": 0, "name": "Отправлен в Битрикс"}
    }
},

Вы можете указывать и виртуальные поля, такие как sysname, тогда система сама отправится в соответствующий справочник, найдет id этого значения (чаще всего из кэша), подставит его в соответствующее физическое поле.

Применимо для виртуальных полей ссылающихся на справочники.

Для некоторых полей может быть указано значение по умолчанию в настройках профайла. Оно будет подставлено, если само значение не передано.

Значение может быть указано для виртуального поля. Например, для Заказа, у которого есть поля status_id, status и status_sysname, может быть указано значение по умолчанию для поля status_sysname=”CREATED”. Система найдет значение в справочнике и подставит его в status_id (конечно если status_id или status_sysname не переданы при создании).

Система проверит записи на уникальность, согласно настройкам профайла класса/клиентского объекта.

В случае обнаружения не уникальности система вернет ошибку (UserError) recExist (code:105).

Выходные параметры. Интерфейс IAPIResponse/IError

В случае ошибки метод вернет объект ошибки - инстанс UserError/MyError.

В случае успеха метод вернет id добавленной записи в объекте data инстанса UserOk (res.data.id).

let res: IAPIResponse // Может быть использована многократно

res = await r.api(Crm_user, 'add', {
    firstname: 'John',
    lastname: 'Doe',
    email: 'john.d@example.com'
})
if (res.code) return res
console.log('Added successfully. ID:', res.data.id)