• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/control/task.php
  • Класс: BitrixTasksControlTask
  • Вызов: Task::correctDatePlan
private function correctDatePlan(array $fields): array
{
	if (!$this->needCorrectDatePlan)
	{
		return $fields;
	}

	if (
		(
			!isset($fields['START_DATE_PLAN'])
			|| (string) $fields['START_DATE_PLAN'] === ''
		)
		&&
		(
			!isset($fields['END_DATE_PLAN'])
			|| (string) $fields['END_DATE_PLAN'] === ''
		)
	)
	{
		return $fields;
	}

	$scheduler = BitrixTasksProcessorTaskScheduler::getInstance($this->userId);
	$this->shiftResult = $scheduler->processEntity(
		0,
		$fields,
		[
			'MODE' => 'BEFORE_ATTACH',
		]
	);
	if ($this->shiftResult->isSuccess())
	{
		$shiftData = $this->shiftResult->getImpactById(0);
		if ($shiftData)
		{
			$fields['START_DATE_PLAN'] = $shiftData['START_DATE_PLAN'];
			$fields['END_DATE_PLAN'] = $shiftData['END_DATE_PLAN'];
			$fields['DURATION_PLAN_SECONDS'] = $shiftData['DURATION_PLAN_SECONDS'];
		}
	}

	$taskData = $this->getFullTaskData() ?? [];
	$fields = (new TaskFieldHandler($this->userId, $fields, $taskData))
		->prepareDurationPlanFields()
		->getFields();

	return $fields;
}