Универсальное дело (ToDo)

Общее дело (todo-дело, универсальное дело) - это основной используемый тип “Дела”, который пришел на замену устаревшим делам “Звонок”, “Встреча”.

Внешний вид дела

API

Во всех нижеследующих примерах api мы делаем ряд следующих предположений:

  1. Модуль crm уже подключен к странице
  2. Подключены следующие сокращения:
use CCrmOwnerType;
use Main\Type\DateTime;
use Bitrix\Crm\ItemIdentifier;
use Bitrix\Crm\Activity\Entity\ToDo;
use Bitrix\Crm\Activity\Provider\ToDo\ToDo as ToDoProvider;
use Bitrix\Crm\Activity\AutocompleteRule;
  1. В переменной $entityItemIdentifier находится объект класса \Bitrix\Crm\ItemIdentifier для которого мы выполняем работу. В рамках примеров, мы предположим что работам со сделкой (\CCrmOwnerType::Deal) под ID:16.
$entityItemIdentifier = new ItemIdentifier(CCrmOwnerType::Deal, 16);

Создание дела

Для создания простого дело достаточно заполнить всего пару полей:

$todo = (new ToDo($entityItemIdentifier, new ToDoProvider()))
	->setDescription("Displayed text");

// Replace user id with activity id or deal assigned by id
// If not setted - current authorized user
$responsibleId = 1;
$todo->setResponsibleId($responsibleId);

// Set `true` if need check permission
$todo->setCheckPermissions(false);

// Configure deadline
$todo->setDeadline(
	DateTime::createFromTimestamp(strtotime('20.01.2023 10:00:00'))
);

// `AutocompleteRule::NONE` - no rules
// `AutocompleteRule::AUTOMATION_ON_STATUS_CHANGED` - complete activity if stage changed

$todo->setAutocompleteRule(AutocompleteRule::NONE);

/**
 * @var Bitrix\Main\Result
 */
$saveResult = $todo->save();

Редактирование дела

Редактирование осуществляется путем вызова метода save, знакомого читателю из примера создания элемента на существующем объекте. Предположим у нас имеется некоторый объект $todo который мы уже получили из базы данных каким-либо образом.

// If we want to redefine entity
//$todo->setOwner($newEntityItemIdentifier);

$newResponsibleId = 123;

$todo->setResponsibleId($newResponsibleId);
$todo->setDescription("New activity description");

$todo->setDeadline( DateTime::createFromTimestamp(strtotime('20.01.2023 10:00:00')));
// Or unset deadline:
// $todo->setDeadline(null);

$todo->setAutocompleteRule( AutocompleteRule::AUTOMATION_ON_STATUS_CHANGED );

/**
 * @var Bitrix\Main\Result
 */
$saveResult = $todo->save();

Удаление дела

Отдельного метода на удаления дела нет, воспользуйтесь общим api по удалению дел.

Получение дела по его ID

/**
 * Suggested 'todo' activity id
 * @var integer
 */
$activityId = 123;

/**
 * @var null|ToDo
 */
$todoEntity = ToDo::load($entityItemIdentifier, $activityId);

Поиск дела

Отдельного api на поиск и получения всех дел нет. Воспользуйтесь общим api.