• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/item/task/field/member.php
  • Класс: BitrixTasksItemTaskFieldMember
  • Вызов: Member::saveValueToDataBase
public function saveValueToDataBase($value, $key, $item)
{
	$value = $this->translateValueToDatabase($value, $key, $item);

	$result = new Result();
	$errors = $result->getErrors();

	$itemId = $item->getId();
	/** @var SubItem $itemClass */
	$itemClass = static::getItemClass();
	$itemState = $item->getTransitionState();
	$isCreate = $itemState->isModeCreate();
	$isDelete = $itemState->isModeDelete();
	$newCodePattern = $this->getName().'.#CODE#';

	$this->onBeforeSaveToDataBase($value, $key, $item);

	$itemClass::enterBatchState();

	if(!$isCreate)
	{
		// delete all, because we do not have simple primary key to delete by
		$itemClass::deleteByParent($itemId);
	}

	if(!$isDelete)
	{
		// now add again...
		/** @var SubItem $subItem */
		foreach($value as $subItem)
		{
			// save each item of this collection separately
			$subItem->setParentId($itemId);
			$saveResult = $subItem->save(array(
				'KEEP_DATA' => true,
			));

			$errors->load($saveResult->getErrors()->transform(array('CODE' => $newCodePattern)));
		}
	}

	$itemClass::leaveBatchState();

	return $result;
}