Обновление существующей сделки

Этот PHP-код позволяет обновить существующую сделку в Битрикс24 по ее ID.

use Bitrix\Crm\DealTable;

// ID сделки, которую нужно обновить
$dealId = $this->GetRootActivity()->GetVariable("DealID"); // Например, ID сделки

// Поля для обновления
$fields = [
    'TITLE' => $this->GetRootActivity()->GetVariable("DealTitle"), // Новое название сделки
    'STAGE_ID' => $this->GetRootActivity()->GetVariable("DealStageID"), // Новая стадия сделки
    'OPPORTUNITY' => $this->GetRootActivity()->GetVariable("DealOpportunity"), // Новая сумма сделки
    'ASSIGNED_BY_ID' => $this->GetRootActivity()->GetVariable("ResponsibleUserID"), // Новый ответственный
];

$updateStatus = false;
$errorMessage = '';

if (!$dealId) {
    $errorMessage = "КРИТИЧНО: Не указан ID сделки для обновления.";
    $this->WriteToTrackingService($errorMessage);
} else {
    $result = DealTable::update($dealId, $fields);

    if ($result->isSuccess()) {
        $updateStatus = true;
    } else {
        $errorMessage = "ОШИБКА: Не удалось обновить сделку ID: " . $dealId . ". " . implode(', ', $result->getErrorMessages());
        $this->WriteToTrackingService($errorMessage);
    }
}

$rootActivity = $this->GetRootActivity();
$rootActivity->SetVariable("UpdateDealStatus", $updateStatus);
$rootActivity->SetVariable("UpdatedDealID", $dealId);
$rootActivity->SetVariable("UpdateDealErrorMessage", $errorMessage);

Параметры

  • DealID (int): ID сделки, которую необходимо обновить.
  • DealTitle (string, optional): Новое название сделки.
  • DealStageID (string, optional): Новая стадия сделки.
  • DealOpportunity (float, optional): Новая сумма сделки.
  • ResponsibleUserID (int, optional): ID нового ответственного пользователя.

Возвращаемые значения

  • UpdateDealStatus (bool): Статус операции обновления (true - успешно, false - ошибка).
  • UpdatedDealID (int): ID обновленной сделки.
  • UpdateDealErrorMessage (string): Сообщение об ошибке, если операция не удалась.

Рекомендации по использованию

  • Используйте этот скрипт для изменения данных существующих сделок.
  • Передавайте только те поля, которые необходимо обновить; остальные поля останутся без изменений.
  • Всегда проверяйте UpdateDealStatus для определения успешности операции.