В crm есть табличная пользовательская характеристика “ответственный сотрудник” (его id в crm – 148, а внутренний идентификатор – “"ManWork"
”). Делаю возможность редактировать её со стороннего сайта.
[CODE]$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);
//Удаление свойство "ответственный сотрудник"<
[/CODE]Проблема в том, что таким образом обновляются все поля значений свойства и приходится потом отдельно заморачиваться с тем, чтобы переназначать его у товаров. Можно ли взаимодействовать только с одним полем из табличной пользовательской характеристики (в нашем случае – удалить его) а остальные вообще не трогать ?