$dealId]; $products = request($apiUrl, "crm.deal.productrows.get", $productParams); $products = $products["result"]; $processedProducts = []; foreach ($products as $product) { $paramsForProductList = ["filter" => ["NAME" => $product["PRODUCT_NAME"]]]; $productsList = request($apiUrl, "crm.product.list", $paramsForProductList); $productID = $productsList["result"][0]["ID"]; var_dump($productID); $productParams = ["id" => $productID]; $dealProduct = request($apiUrl, "crm.product.get", $productParams); // Проверяем наличие свойства PROPERTY_72 $productBrendID = $dealProduct["result"]["PROPERTY_72"]["value"] ?? null; if (!$productBrendID) { continue; // Если свойства нет, пропускаем } // Получаем название бренда $productParams = ["filter" => ["ID" => "72"]]; $productProperty = request($apiUrl, "crm.product.property.list", $productParams); $productBrendName = $productProperty["result"][0]["VALUES"][$productBrendID]["VALUE"]; // Название смарт-процесса $smartProccesName = $product["PRODUCT_NAME"] . " | " . $productBrendName . " | " . $dealName; if (!in_array($product["PRODUCT_NAME"], $processedProducts)) {// Проверяем количество уже созданных элементов $itemParams = [ "entityTypeId" => 158, "filter" => ["=title" => $smartProccesName] ]; $resp = request($apiUrl, "crm.item.list", $itemParams); $existingCount = $resp["total"] ?? 0; $count = $product["QUANTITY"] - $existingCount; // Получаем компанию сделки $dealParams = ["id" => $dealId]; $deal = request($apiUrl, "crm.deal.get", $dealParams); $companyId = $deal["result"]["COMPANY_ID"] ?? null; // Добавление новых записей if ($count > 0) { for ($i = 0; $i < $count; $i++) { $itemParams = [ "entityTypeId" => 158, "fields" => [ "title" => $smartProccesName, "parent_id_2" => $dealId, "ufCrm4_1731488309" => $companyId ] ]; $resp = request($apiUrl, "crm.item.add", $itemParams); echo json_encode($resp); } } // Удаление лишних записей if ($count < 0) { $count = -$count; if (!isset($resp["result"]["items"]) || empty($resp["result"]["items"])) { continue; } // Удаляем последние созданные записи $items = array_reverse($resp["result"]["items"]); for ($i = 0; $i < $count; $i++) { if (!isset($items[$i]["id"])) { break; } $deleteItemId = $items[$i]["id"]; $itemParams = ["entityTypeId" => 158, "id" => $deleteItemId]; $resp = request($apiUrl, "crm.item.delete", $itemParams); echo json_encode($resp); } } $processedProducts[] = $product["PRODUCT_NAME"] }else{ for ($i = 0; $i < $product["QUANTITY"]; $i++) { $itemParams = [ "entityTypeId" => 158, "fields" => [ "title" => $smartProccesName, "parent_id_2" => $dealId, "ufCrm4_1731488309" => $companyId ] ]; $resp = request($apiUrl, "crm.item.add", $itemParams); echo json_encode($resp); } } } // Функция для запросов в Битрикс24 function request($url, $method, $params, $toggle = 'json') { $curl = curl_init(); $url = $url . $method . '.' . $toggle; curl_setopt_array($curl, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($params, JSON_UNESCAPED_UNICODE), CURLOPT_HTTPHEADER => ['Content-Type: application/json'] ]); $response = curl_exec($curl); curl_close($curl); return json_decode($response, true); } $dealParams = ["id" => $dealId]; $deal = request($apiUrl, "crm.deal.get", $dealParams); $extraProducts = $deal["result"]["UF_CRM_1738935627784"]; $uniqueExtraProducts = []; // Перебираем все элементы из $extraProducts foreach ($extraProducts as $extraProduct) { $found = false; // Проверяем, есть ли текущий элемент из $extraProducts в $products foreach ($products as $product) { if ($extraProduct == $product["PRODUCT_NAME"]) { $found = true; break; } } // Если элемент не найден в $products, добавляем его в уникальный список if (!$found) { $uniqueExtraProducts[] = $extraProduct; } } var_dump($uniqueExtraProducts); foreach ($uniqueExtraProducts as $extraProduct) { // Поиск ID продукта по названию $paramsForProductList = ["filter" => ["NAME" => $extraProduct]]; $productsList = request($apiUrl, "crm.product.list", $paramsForProductList); $productID = $productsList["result"][0]["ID"]; // Получение данных продукта $productParams = ["id" => $productID]; $dealProduct = request($apiUrl, "crm.product.get", $productParams); if (empty($dealProduct["result"])) continue; // Получение бренда $productBrendID = $dealProduct["result"]["PROPERTY_72"]["value"]; $productParams = ["filter" => ["ID" => "72"]]; $productProperty = request($apiUrl, "crm.product.property.list", $productParams); $productBrendName = $productProperty["result"][0]["VALUES"][$productBrendID]["VALUE"]; // Формирование имени смарт-процесса $smartProcessName = $extraProduct . " | " . $productBrendName . " | " . $dealName; var_dump("/n"); var_dump($smartProcessName); // Проверка существующих элементов $itemParams = [ "entityTypeId" => 158, "filter" => ["=title" => $smartProcessName] ]; $resp = request($apiUrl, "crm.item.list", $itemParams); $existingCount = $resp["total"]; var_dump($existingCount); $items = array_reverse($resp["result"]["items"]); for ($i = 0; $i < $existingCount; $i++) { $itemParams = ["entityTypeId" => 158, "id" => $items[$i]["id"]]; request($apiUrl, "crm.item.delete", $itemParams); } }