В crm есть табличная пользовательская характеристика “ответственный сотрудник” (его id в crm – 148, а внутренний идентификатор – “"ManWork"
Проблема в том, что таким образом обновляются все поля значений свойства и приходится потом отдельно заморачиваться с тем, чтобы переназначать его у товаров. Можно ли взаимодействовать только с одним полем из табличной пользовательской характеристики (в нашем случае – удалить его) а остальные вообще не трогать ?
”). Делаю возможность редактировать её со стороннего сайта.
Код |
---|
$massced=[“time"=>0,"ValuesMainWorkers"=>[]]; //Функуия получения данных из crm > function ComAll($h1,$h2,$h3){ $h2[$h3]=file_get_contents('https://xxxx.bitrix24.ru/rest/1/xxxx/'.$h1); $h2[$h3]=(array)json_decode($h2[$h3]); $h2[$h3]=$h2[$h3]["result"]; $h2["time"]=SleepingTime($h2["time"]);//Функция, которая считает количество запросов и приостанавливает работу, если их слишком много $h2[$h3]=ArrayForObjectAll($h2[$h3]);//Переводит все полученные по запросу объекты в массивы return $h2; } //Функуия получения данных из crm < //Функция отправки запроса> function MuSearch($t1,$t2,$t3){ $data=http_build_query( $t1 ); $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_POST => 1, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => 'https://xxxx.bitrix24.ru/rest/1/xxxx/'.$t2, CURLOPT_POSTFIELDS => $data, ]); $result = curl_exec($curl); curl_close($curl); $t3["time"]=SleepingTime($t3["time"]); return $t3; } //Функция отправки запроса< //Получаес список свойств товаров> $massced=ComAll("crm.product.property.list",$massced,"AllOptionApartment"); //Получаес список свойств товаров< //Получаем свойство "ответственный сотрудник"> foreach ($massced["AllOptionApartment"] as $elem){ if ($elem["XML_ID"]=="ManWork"){ $ManWorkid=$elem["ID"]; //Получаем список полей свойства "ответственный сотрудник"> foreach ($elem["VALUES"] as $item){ $massced["DisciplineWorker"][]=["ID"=>$item["ID"],"XML_ID"=>$item["XML_ID"],"VALUE"=>$item["VALUE"]]; } //Получаем список полей свойства "ответственный сотрудник"< } } //Получаем свойство "ответственный сотрудник"< //Удаление свойство "ответственный сотрудник"> $delwid["incharacter"]="237";//Внутренний идентификатор удаляемой характеристики.В рабочей версии задано автоматически //Ищем нужное свойиство "ответственный сотрудник"> foreach ($massced["DisciplineWorker"] as $elem){ if ($elem["XML_ID"]!="Work_".$delwid[0]["incharacter"]){$massced["ValuesMainWorkers"][]=["XML_ID"=>$elem["XML_ID"],"VALUE"=>$elem["VALUE"]];} } //Ищем нужное свойиство "ответственный сотрудник"<$massced=MuSearch(["ID"=>148,"fields"=>["VALUES"=>$massced["ValuesMainWorkers"]]],"crm.product.property.update",$massced); //Удаление свойство "ответственный сотрудник"< |