- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/item/field/collection/item.php
- Класс: BitrixTasksItemFieldCollectionItem
- Вызов: Item::setValue
public function setValue($value, $key, $item, array $parameters = array())
{
$value = $this->makeValueSafe($value, $key, $item, $parameters);
if($this->isCacheable())
{
$keepExisting = array_key_exists('KEEP_EXISTING_VALUE', $parameters) && $parameters['KEEP_EXISTING_VALUE'] === true;
if(!$item->containsKey($key) || !$keepExisting)
{
if(array_key_exists('ACTUALIZE_COLLECTIONS', $parameters = array()))
{
$prevValue = $item[$key];
// update items in $value with data of items in $prevValue
if(count($prevValue) && count($value))
{
foreach($value as $k => $subItem)
{
$prevSubItem = $prevValue->getItemById($subItem->getId());
if($prevSubItem)
{
// merge new to old, keep old
$prevSubItem->setData($subItem->getData('~'), $parameters);
$value[$k] = $prevSubItem;
}
}
}
}
else
{
$item->offsetSetDirect($key, $value);
}
}
}
return $value;
}