• Модуль: 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;
}