Удалить определенное значение множественного свойства типа "Дата"

К примеру, у нас выводится некая информация, зависимая от множественного свойства типа "Дата". И в случае, если данные стали неактуальны - значение свойства меньше, чем текущая дата, их не нужно выводить, то можно применить следующий код, который будет обновлять массив значений свойств:

<?php
if(CModule::IncludeModule('iblock')) {
$arSort= Array("NAME"=>"ASC");
$arSelect = Array("ID", "IBLOCK_ID", "NAME");
$arFilter = Array("IBLOCK_ID" => 95);
$res = CIBlockElement::GetList($arSort, $arFilter, false, false, $arSelect);
$dateToday = date ("d.m.Y", time());
while($ob = $res->GetNextElement()){
$arFields = $ob->GetFields();
$arProps = $ob->GetProperties();
$dates = array();
foreach ($arProps["PROG_DATE"]["VALUE"] as $key=>$datek){
if(strtotime($datek)>=strtotime($dateToday)){
$dates[$key]["VALUE"] = $datek;
$dates[$key]["DESCRIPTION"] = $arProps["PROG_DATE"]["DESCRIPTION"][$key];
}
}
CIBlockElement::SetPropertyValuesEx(
$arFields["ID"],
$arFields["IBLOCK_ID"],
array(
"PROG_DATE" => $dates
)
);
}
}
В данном коде мы собираем в массив $dates все значения и описания множественного свойства PROG_DATE, которые больше текущей даты $dateToday. А затем с помощью SetPropertyValuesEx обновляем значения данного свойства. После чего в качестве значений будут выступать только актуальные на текущий момент даты.

bitrixone © 2024