На сайте вставили новые фото и удалили несколько старых, обновление множественного поля типа файл прошло так.
$el = new CIBlockElement; // получим новый массив с сайта
$arFileUpdate = $params->get('ARR_PHOTOS_FROM_SILE');
// получим массив старых файлов
$resProp = $el->GetProperty(IBLOCK_ID, $v_el, Array("sort" => "asc"), Array("ACTIVE" => "Y", "CODE" => "PHOTOS"));
if ($resProp) {
while ($prop = $resProp->Fetch()) {
if (!in_array($prop['VALUE'], $arFileUpdate)) {
// Удаляем файл которого нет в новом массиве
$el->SetPropertyValues(
$v_el,
IBLOCK_ID,
array(
$prop['PROPERTY_VALUE_ID'] => array(
"VALUE" => array("del" => "Y")
)
),
'PHOTOS'
);
} else {
// Удаляем файл из массива если он уже есть в старом масссиве
unset($arFileUpdate[array_search($prop['VALUE'], $arFileUpdate)]);
}
}
}
// то что осталось записываем
$arFields = array();
$arFields['NAME'] = $params->get('NAME'.$k_el);
$arFields['PROPERTY_VALUES'] = [
'SB_USER_DOC_SCAN' => $arFileUpdate,
];
$res = $el->Update($v_el, $arFields);
здесь не надо чистить весь массив старых файлов и заново записывать новыми значениями
$el = new CIBlockElement; // получим новый массив с сайта
$arFileUpdate = $params->get('ARR_PHOTOS_FROM_SILE');
// получим массив старых файлов
$resProp = $el->GetProperty(IBLOCK_ID, $v_el, Array("sort" => "asc"), Array("ACTIVE" => "Y", "CODE" => "PHOTOS"));
if ($resProp) {
while ($prop = $resProp->Fetch()) {
if (!in_array($prop['VALUE'], $arFileUpdate)) {
// Удаляем файл которого нет в новом массиве
$el->SetPropertyValues(
$v_el,
IBLOCK_ID,
array(
$prop['PROPERTY_VALUE_ID'] => array(
"VALUE" => array("del" => "Y")
)
),
'PHOTOS'
);
} else {
// Удаляем файл из массива если он уже есть в старом масссиве
unset($arFileUpdate[array_search($prop['VALUE'], $arFileUpdate)]);
}
}
}
// то что осталось записываем
$arFields = array();
$arFields['NAME'] = $params->get('NAME'.$k_el);
$arFields['PROPERTY_VALUES'] = [
'SB_USER_DOC_SCAN' => $arFileUpdate,
];
$res = $el->Update($v_el, $arFields);
здесь не надо чистить весь массив старых файлов и заново записывать новыми значениями