Рассмотрим задачу: у нас есть некоторый шаблон задачи и нам нужно по определенному действию из внешней системы создавать задачу по шаблону.
Для общения с внешней системой метод мы уже сделали, а как из шаблона поставить задачу? Конечно можно получить данные шаблона и создать задачу, но зачем нужно писать много лишнего кода, если разработчики сделали все за вас?
Дано
Некоторый шаблон ID которого мы уже знаем ($templateId) и ID пользователя ($userId) кто является владельцем шаблона (или имеет доступ).
Приступим к решению
Для начала нам нужно подготовиться к работе:
- прописать use-директивы
- обьявить переменные (которые мы заранее знаем).
В реальности у вас будет намного больше подготовки (нужно же получить эти переменные).
Всю нашу работу мы будем производить в try-catch блоке.
На мой субъективный взгляд код становится чище и понятнее, за счет того что не образует "лесенку" при проверки условий
Весь интересующий нас код находится в namespace \Bitrix\Tasks\Util\Replicator, но для удобства любезный битрикс предоставил нам готовый класс \Bitrix\Tasks\Util\Replicator\Task\FromTemplate
А что конкретно нам нужно сделать?
- Инициировать обьект репликации (именно он сделает за нас всю грязную работу)
- Вызвать метод produce для создания задачи.
Как вы могли заметить что в методе produce можно изменять поля шаблона (передавая ассоциативный массив в OVERRIDE_DATA), что мы и сделали с полем DATE_CREATE.
P.S. Полный листинг можно взять в gist-репозитории