crm.item.update
Обновить элемент
Описание
Метод обновляет элемент определенного типа объекта CRM, задав ему новые значения из параметра fields.
При обновлении элемента производится стандартный ряд проверок, модификаций и автоматических действий:
- проверяются права доступа
- проверяется заполненность обязательных полей, если изменена стадия элемента в рамках того же направления
- проверяется заполненность зависимых от стадий обязательных полей, если изменена стадия элемента в рамках того же направления
- проверяется корректность заполнения полей
- полям присваиваются значения по умолчанию
- если перед сохранением оказывается, что никакие значения полей не были изменены, то сохранение не производится
- после сохранения запускаются роботы
Параметры
entityTypeId
integer
обязательный
Идентификатор системного или пользовательского типа, чей элемент мы хотим изменить.
Числовые значения для системных типов (Лид — 1, Сделка — 2, Контакт — 3, Компания — 4, Счет — 31 и др.) приведены в справочнике типов объектов CRM. Идентификатор смарт-процесса можно узнать методом crm.type.list
id
integer
необязательный
Идентификатор элемента, который мы хотим изменить.
Можно получить методом crm.item.list или crm.item.add
fields
object
обязательный
Объект формата
{
field_1: value_1,
field_2: value_2,
...,
field_n: value_n,
}
где
- field_n — название поля
- value_n — новое значение поля
У каждого типа объекта CRM свой набор полей. Это значит, что набор полей для изменения Лида не обязан подходить набору полей для изменения Контакта или Смарт-процесса.
Список доступных полей относительно каждого типа объекта описан ниже.
Некорректное поле в fields будет проигнорировано.
В fields нужно передавать только те поля, которые нужно изменить
useOriginalUfNames
boolean
необязательный
Параметр для управления форматом имен пользовательских полей в запросе и ответе.
Возможные значения:
Y— оригинальные имена пользовательских полей, напримерUF_CRM_2_1639669411830N— имена пользовательских полей в camelCase, напримерufCrm2_1639669411830
По умолчанию — N
Примеры запроса
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"entityTypeId":2,"id":351,"fields":{"title":"REST Сделка #1","stageId":"C9:UC_NYL06U","assignedById":6,"observers":[1,2,3],"opened":"N","typeId":"SERVICE","opportunity":10000,"currencyId":"USD","additionalInfo":"Изменение сделки через REST","isManualOpportunity":"N","utmSource":"google","ufCrm_1721244707107":200.05,"parentId1220":2}}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/crm.item.update
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"entityTypeId":2,"id":351,"fields":{"title":"REST Сделка #1","stageId":"C9:UC_NYL06U","assignedById":6,"observers":[1,2,3],"opened":"N","typeId":"SERVICE","opportunity":10000,"currencyId":"USD","additionalInfo":"Изменение сделки через REST","isManualOpportunity":"N","utmSource":"google","ufCrm_1721244707107":200.05,"parentId1220":2},"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/crm.item.update
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
type CrmItem = {
id: number
title: string
}
// Shape of the payload returned in result (match the "response handling" section of the page)
type ItemUpdateResult = {
item: CrmItem
}
try {
const response = await $b24.actions.v2.call.make<ItemUpdateResult>({
method: 'crm.item.update',
params: {
entityTypeId: 2,
id: 351,
fields: {
title: 'REST Deal #1',
stageId: 'C9:UC_NYL06U',
assignedById: 6,
observers: [1, 2, 3],
opened: 'N',
typeId: 'SERVICE',
opportunity: 10000,
currencyId: 'USD',
additionalInfo: 'Update a deal via REST',
isManualOpportunity: 'N',
utmSource: 'google',
ufCrm_1721244707107: 200.05,
parentId1220: 2,
},
},
requestId: Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
} else {
const result = response.getData()!.result
console.info(`Updated item #${result.item.id} (${result.item.title})`)
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
async function updateCrmItem() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'crm.item.update',
params: {
entityTypeId: 2,
id: 351,
fields: {
title: 'REST Deal #1',
stageId: 'C9:UC_NYL06U',
assignedById: 6,
observers: [1, 2, 3],
opened: 'N',
typeId: 'SERVICE',
opportunity: 10000,
currencyId: 'USD',
additionalInfo: 'Update a deal via REST',
isManualOpportunity: 'N',
utmSource: 'google',
ufCrm_1721244707107: 200.05,
parentId1220: 2,
},
},
requestId: B24Js.Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
return
}
const result = response.getData().result
console.info(`Updated item #${result.item.id} (${result.item.title})`)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', updateCrmItem)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
try:
bitrix_response = client.crm.item.update(
entity_type_id=2,
bitrix_id=351,
fields={
"title": "REST Сделка #1",
"stageId": "C9:UC_NYL06U",
"assignedById": 6,
"observers": [
1,
2,
3,
],
"opened": "N",
"typeId": "SERVICE",
"opportunity": 10000,
"currencyId": "USD",
"additionalInfo": "Изменение сделки через REST",
"isManualOpportunity": "N",
"utmSource": "google",
"ufCrm_1721244707107": 200.05,
"parentId1220": 2,
},
).response
result = bitrix_response.result
print(result)
except BitrixAPIError as error:
print(
"Ошибка Bitrix API",
f"error: {error.error}",
f"error_description: {error.error_description}",
sep="\n",
)
except BitrixSDKException as error:
print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
print(f"Непредвиденная ошибка: {error}")
try {
$entityTypeId = 1; // Set your entity type ID
$id = 123; // Set the ID of the item to update
$fields = [
'TITLE' => 'Updated Title',
'DATE_MODIFIED' => (new DateTime())->format(DateTime::ATOM), // Example DateTime field
// Add other fields as necessary
];
$itemService = $serviceBuilder->getCRMScope()->item();
$updateResult = $itemService->update($entityTypeId, $id, $fields);
if ($updateResult->isSuccess()) {
print("Item updated successfully: " . json_encode($updateResult));
} else {
print("Failed to update item.");
}
} catch (Throwable $e) {
print("An error occurred: " . $e->getMessage());
}
require_once('crest.php');
$result = CRest::call(
'crm.item.update',
[
'entityTypeId' => 2,
'id' => 351,
'fields' => [
'title' => "REST Сделка #1",
'stageId' => "C9:UC_NYL06U",
'assignedById' => 6,
'observers' => [1, 2, 3],
'opened' => "N",
'typeId' => "SERVICE",
'opportunity' => 10000,
'currencyId' => "USD",
'additionalInfo' => "Изменение сделки через REST",
'isManualOpportunity' => "N",
'utmSource' => "google",
'ufCrm_1721244707107' => 200.05,
'parentId1220' => 2,
]
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "crm.item.update", b24.Params{
"entityTypeId": 2,
"id": 351,
"fields": b24.Params{
"title": "REST Сделка #1",
"stageId": "C9:UC_NYL06U",
"assignedById": 6,
"observers": []int{1, 2, 3},
"opened": "N",
"typeId": "SERVICE",
"opportunity": 10000,
"currencyId": "USD",
"additionalInfo": "Изменение сделки через REST",
"isManualOpportunity": "N",
"utmSource": "google",
"ufCrm_1721244707107": 200.05,
"parentId1220": 2,
},
})
if err != nil {
return fmt.Errorf("crm.item.update: %w", err)
}
// Метод заворачивает ответ в объект с ключом "item".
raw, ok := b24.Unwrap(res.Result, "item")
if !ok {
return fmt.Errorf("в ответе нет ключа item")
}
var item struct {
ID b24.ID `json:"id"`
CreatedTime string `json:"createdTime"`
UpdatedTime string `json:"updatedTime"`
CreatedBy int `json:"createdBy"`
UpdatedBy int `json:"updatedBy"`
AssignedByID b24.ID `json:"assignedById"`
}
if err := json.Unmarshal(raw, &item); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println(item.ID, item.CreatedTime)
Ответ
HTTP-статус: 200
{
"result": {
"item": {
"id": 351,
"createdTime": "2024-07-23T19:10:26+02:00",
"dateCreateShort": null,
"updatedTime": "2024-07-23T18:19:21+02:00",
"dateModifyShort": null,
"createdBy": 1,
"updatedBy": 1,
"assignedById": 6,
"opened": "N",
"leadId": null,
"companyId": 0,
"contactId": 0,
"quoteId": null,
"title": "REST Сделка #1",
"productId": null,
"categoryId": 9,
"stageId": "C9:UC_NYL06U",
"stageSemanticId": "P",
"isNew": "N",
"isRecurring": "N",
"isReturnCustomer": "N",
"isRepeatedApproach": "N",
"closed": "N",
"typeId": "SERVICE",
"opportunity": 10000,
"isManualOpportunity": "N",
"taxValue": 0,
"currencyId": "USD",
"probability": null,
"comments": "",
"begindate": "2024-07-23T02:00:00+02:00",
"begindateShort": null,
"closedate": "2024-07-31T02:00:00+02:00",
"closedateShort": null,
"eventDate": null,
"eventDateShort": null,
"eventId": null,
"eventDescription": null,
"locationId": null,
"webformId": 0,
"sourceId": "",
"sourceDescription": "",
"originatorId": null,
"originId": null,
"additionalInfo": "Изменение сделки через REST",
"searchContent": "351 Сделка #351 10200.00 Российский рубль Не Придумал Придумал Продажа Название2134234233 23.07.2024 31.07.2024",
"orderStage": null,
"movedBy": 1,
"movedTime": "2024-07-23T18:19:21+02:00",
"lastActivityBy": 1,
"lastActivityTime": "2024-07-23T18:10:26+02:00",
"isWork": null,
"isWon": null,
"isLose": null,
"receivedAmount": null,
"lostAmount": null,
"hasProducts": null,
"ufCrm_1721244707107": 200.05,
"parentId1220": 2,
"utmSource": "google",
"utmMedium": null,
"utmCampaign": null,
"utmContent": null,
"utmTerm": null,
"observers": [
1,
2,
3
],
"contactIds": [],
"entityTypeId": 2
}
},
"time": {
"start": 1721751560.824475,
"finish": 1721751564.481578,
"duration": 3.6571030616760254,
"processing": 3.1893951892852783,
"date_start": "2024-07-23T18:19:20+02:00",
"date_finish": "2024-07-23T18:19:24+02:00",
"operating": 3.1893470287323
}
}
Возвращаемые данные
result
object
Корневой элемент ответа, содержит единственный ключ item
item
item
Информация об обновленном элементе, описание полей
time
time
Информация о времени выполнения запроса
Обработка ошибок
HTTP-статус: 400
{
"error": "NOT_FOUND",
"error_description": "Смарт-процесс не найден"
}
| Код | Описание | Значение |
|---|---|---|
403 |
allowed_only_intranet_user |
Действие разрешено только интранет-пользователям |
400 |
NOT_FOUND |
Смарт-процесс не найден |
400 |
ACCESS_DENIED |
Доступ запрещен |
400 |
CRM_FIELD_ERROR_VALUE_NOT_VALID |
Неверное значение поля "field" |
400 |
100 |
Expected iterable value for multiple field, but got type instead |
400 |
- |
Недостаточно прав на смену стадии |
400 |
UPDATE_DYNAMIC_ITEM_RESTRICTED |
Вы не можете изменить элемент из-за ограничений вашего тарифа |

