• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/task.php
  • Класс: BitrixTasksInternalsTaskTable
  • Вызов: TaskTable::insert
static function insert(array $data)
{
	$fields = self::getEntity()->getFields();

	$id = 0;
	$insertData = [];
	foreach ($data as $field => $value)
	{
		if (!array_key_exists($field, $fields))
		{
			continue;
		}

		if ($field === 'ID')
		{
			$id = (int)$value;
			continue;
		}

		if (
			$fields[$field] instanceof DateTimeField
			&& is_numeric($value)
		)
		{
			$insertData[$field] = DateTime::createFromTimestampGmt($value);
		}
		else
		{
			$insertData[$field] = $value;
		}
	}

	if (!$id)
	{
		return;
	}

	$sql = 'INSERT IGNORE INTO ' . self::getTableName() . ' (ID) VALUES (' . $id . ')';
	$connection = Application::getConnection();
	$connection->queryExecute($sql);

	$taskObject = self::getByPrimary($id)->fetchObject();
	if (!$taskObject)
	{
		return;
	}
	$driver = Driver::getInstance();
	$userFieldManager = $driver->getUserFieldManager();
	$attachedObjects = $userFieldManager->getAttachedObjectByEntity(
		'TASKS_TASK',
		$id,
		BitrixTasksIntegrationDiskUserField::getMainSysUFCode()
	);
	$ids = array_map(static function ($el): int {
		return $el->getId();
	}, $attachedObjects);
	$insertData[BitrixTasksIntegrationDiskUserField::getMainSysUFCode()] = $ids;

	foreach ($insertData as $field => $value)
	{
		$taskObject->set($field, $value);
	}

	try
	{
		$res = $taskObject->save();
	}
	catch (Exception $e)
	{

	}
}