Недавно ко мне обратился насяльника с просьбой помочь в написании бизнес-процесса (далее в статье БП) для автоматической отсылки писем клиентам, у которых подходит срок оплаты хостинга.
Для полноценной работы с дизайнером шаблонов БП потребуется администраторский доступ к корп-порталу.
Все картинки в статье кликабельны, а ссылки открываются в новом окне.
У нас на корп-портале есть список (Сервисы -- Списки) "Клиенты хостинга". У каждого элемента есть свойство PAYED, содержащее датавремя, до которого оплачен хостинг. Задача: когда текущее время больше времени PAYED, надо отсылать клиенту письмо с предупреждением, что через три дня его хостинг сдуется =)
Находим шаблоны, прикреплённые к списку клиентов хостинга.
Создаём новый Последовательный БП. Битрикс предлагает нам вполне наглядный дизайнер шаблонов БП, к особенностям которого всё-таки придётся привыкнуть (впрочем, как и ко всему, что обладает объёмным синтаксическим и семантическим функционалом).
В диалоге Параметры шаблона находим третью вкладку Переменные и создаём строковую переменную с идентификатором payed_to и с таким же именем. Чуть позже увидим зачем нам эта переменная.
Заодно отключим автоматический запуск при создании и изменении. Эти галочки можно потом проставить, а для дебага они будут мешаться.
Здесь можно общаться с переменными шаблона и свойствами элемента списка с помощью двух способов.
1. Непосредственное обращение к переменной. Синтаксис обращения можете получить с помощью кнопочки с тремя точечками. Например, получим значение свойства элемента PAYED.
Логгирование (например, в целях дебага) можно осуществлять с помощью обращения к методу WriteToTrackingService. Вообще тут доступны два способа (документация Вывод в лог).
1. Отсутствует доступ к текущему активити через $this, хотя есть доступ к некоторым методам через $ownerActivity.
2. PHP-код, добавленный в условие цикла, выполняется битриксом через eval.
3. PHP-код должен возвращать логическое значение true или false
Если код возвращает true, то цикл продолжается. При false, соответственно, прерывается.
Возможно задать промежуток в секундах, минутах, часах и в днях.
Как перетаскивать блоки в дизайнере, я надеюсь, вы и сами разберётесь =)
3.1 Изменение переменных
3.2 PHP-код
3.3 Цикл
3.4 PHP-код. Вывод в лог.
А дальше и так понятно =)
Если появилась надпись Бизнес-процесс по шаблону 'Уведомление об отключении' успешно запущен, значит мы уже на пути к цели =)
Возвращаемся в список наших клиентов. Смотрим в последний столбец таблицы - там список всех БП, привязанных к данному элементу.
Под именем БП есть статус, нажав на который можно попасть в лог действий для данного БП текущего элемента.
В моих изысканиях мне помогли следующие источники.
Для полноценной работы с дизайнером шаблонов БП потребуется администраторский доступ к корп-порталу.
Все картинки в статье кликабельны, а ссылки открываются в новом окне.
У нас на корп-портале есть список (Сервисы -- Списки) "Клиенты хостинга". У каждого элемента есть свойство PAYED, содержащее датавремя, до которого оплачен хостинг. Задача: когда текущее время больше времени PAYED, надо отсылать клиенту письмо с предупреждением, что через три дня его хостинг сдуется =)
Находим шаблоны, прикреплённые к списку клиентов хостинга.
Создаём новый Последовательный БП. Битрикс предлагает нам вполне наглядный дизайнер шаблонов БП, к особенностям которого всё-таки придётся привыкнуть (впрочем, как и ко всему, что обладает объёмным синтаксическим и семантическим функционалом).
В диалоге Параметры шаблона находим третью вкладку Переменные и создаём строковую переменную с идентификатором payed_to и с таким же именем. Чуть позже увидим зачем нам эта переменная.
Заодно отключим автоматический запуск при создании и изменении. Эти галочки можно потом проставить, а для дебага они будут мешаться.
1. Общая логика
Для начала составим у себя в голове логику действий.- БП в цикле раз в сутки проверяет разницу между PAYED и текущим датавременем.
- Если время кончилось, заканчиваем выполнение БП, если нет - ждём следующего витка цикла.
2. Используемые блоки
Опишем используемые блоки и их функциональность, которую далее используем в решении задачи.2.1 Изменение переменных
Блок позволяет присваивать переменным шаблона БП какие-то значения. Например, взятые из текущего элемента, к которому прикреплён БП.2.2 PHP-код
Блок позволяет выполнять PHP-код (всегда ваш, капитан очевидность).Здесь можно общаться с переменными шаблона и свойствами элемента списка с помощью двух способов.
1. Непосредственное обращение к переменной. Синтаксис обращения можете получить с помощью кнопочки с тремя точечками. Например, получим значение свойства элемента PAYED.
{=Document:PROPERTY_PAYED}2. Спросить значение в ооп стиле. Замечу, что #ID_VARIABLE - это идентификатор переменной шаблона, а не её имя
$this->GetVariable(#ID_VARIABLE);Задание значения переменной осуществляется при помощи функции SetVariable.
Логгирование (например, в целях дебага) можно осуществлять с помощью обращения к методу WriteToTrackingService. Вообще тут доступны два способа (документация Вывод в лог).
2.3 Цикл
Нам нужно условие типа PHP-код. Однако, следует понимать, что здесь существуют некоторые особенности.1. Отсутствует доступ к текущему активити через $this, хотя есть доступ к некоторым методам через $ownerActivity.
2. PHP-код, добавленный в условие цикла, выполняется битриксом через eval.
3. PHP-код должен возвращать логическое значение true или false
Если код возвращает true, то цикл продолжается. При false, соответственно, прерывается.
2.4 Пауза в выполнении
Как следует из названия, блок заставляет БП приостановиться на указанное время, либо выполниться в указанное время.Возможно задать промежуток в секундах, минутах, часах и в днях.
3. Составляем демо-шаблон
На основе того, что я знаю, составляю шаблон. Не очень понятно как получить свойство элемента внутри условия Цикла, поэтому я сначала присваиваю значение переменной payed_to, а потом получаю его в условии Цикла. Собственно говоря, для этого я и заводила эту переменную. Ну и для сопутствующего дебага, конечно.Как перетаскивать блоки в дизайнере, я надеюсь, вы и сами разберётесь =)
3.1 Изменение переменных
3.2 PHP-код
3.3 Цикл
3.4 PHP-код. Вывод в лог.
А дальше и так понятно =)
4. Тестирование и лог
Создаём тестового клиента в списке. Запускаем для него из диалога действий требуемый БП ручками.Если появилась надпись Бизнес-процесс по шаблону 'Уведомление об отключении' успешно запущен, значит мы уже на пути к цели =)
Возвращаемся в список наших клиентов. Смотрим в последний столбец таблицы - там список всех БП, привязанных к данному элементу.
Под именем БП есть статус, нажав на который можно попасть в лог действий для данного БП текущего элемента.
5. Дополнение
Допустим, мы ходим отсылать за три дня до даты окончания оплаченного срока. Тогда в Цикле в условии типа PHP-код мы должны написать вот так:$ownerActivity->GetVariable('payed_to') > (time()+86400*$ownerActivity->GetVariable('days_before'))где days_before - это ещё одна переменная шаблона, в которой можно указать за сколько дней ДО окончания оплаченного срока надо высылать оповещение.
В моих изысканиях мне помогли следующие источники.
Комментариев нет:
Отправить комментарий