Вывод в лог

Урок 241 из 248
Автор: Марина Павлова
Сложность урока:
2 уровень - несложные понятия и действия, но не расслабляйтесь.
2 из 5
Просмотров: 22171
Дата изменения: 23.11.2023
Недоступно в лицензиях:
Текущую редакцию Вашего 1С-Битрикс можно просмотреть на странице Обновление платформы (Marketplace > Обновление платформы).
Старт, Стандарт, Малый бизнес

Сделаем вывод любых сообщений в лог

Если разработчик поддастся желанию использовать в полную силу функционал бизнес-процессов, то ему потребуются дополнительные возможности функционала. Например, вывод любых сообщений в лог бизнес-процесса При разработке и использовании уже готовых процессов бывает необходимо узнать подробности выполнения того или иного процесса / действия. Для этого в системе предусмотрен журнал выполнения бизнес-процессов (лог).

Подробнее...
.

Допустим, используется определение руководителя из предыдущего примера или просто необходимо вывести в лог текст заявки.

Есть два варианта решения: просто вывод в лог из действия PHP код или создание собственного действия Запись в лог. Рассмотрим оба варианта.

PHP код

Допустим, что при создании бизнес-процесса пользователь вводит текст какой-то заявки, который сохраняется в переменной Text. Чтобы вывести в лог значение этой переменной нужно просто в действии PHP код добавить вызов:

$rootActivity = $this->GetRootActivity();
$this->WriteToTrackingService($rootActivity->GetVariable("Text")); 

Или же просто вывести тестовое сообщение:
$this->WriteToTrackingService("Это тест"); 

Создание действия

Создайте недостающие папки относительно корня сайта:

  • bitrix\activities\custom
  • bitrix\activities\custom\logactivity
  • bitrix\activities\custom\logactivity\lang\ru

В папке /logactivity/ создайте файлы:

  • logactivity.php
    <?
    if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
    
    class CBPLogActivity
       extends CBPActivity
    {
       public function __construct($name)
       {
          parent::__construct($name);
          $this->arProperties = array(
             "Title" => "",
          );
       }
    
       public function Execute()
       {
          $rootActivity = $this->GetRootActivity();
          $this->WriteToTrackingService($rootActivity->GetVariable("Text"));
    
          return CBPActivityExecutionStatus::Closed;
       }
    
    }
    ?>
  • .description.php
    <?
    if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
    
    $arActivityDescription = array(
       "NAME" => GetMessage("BPMA_DESCR_NAME"),
       "DESCRIPTION" => GetMessage("BPMA_DESCR_DESCR"),
       "TYPE" => "activity",
       "CLASS" => "LogActivity",
       "JSCLASS" => "BizProcActivity",
       "CATEGORY" => array(
          "ID" => "other",
       ),
    );
    ?>

Создайте файл logactivity\lang\ru\.description.php:

<?
$MESS ['BPMA_DESCR_NAME'] = "Запись в лог";
$MESS ['BPMA_DESCR_DESCR'] = "Запись сообщения в лог";
?>

Теперь в дизайнере бизнес-процесов появилось новое действие Запись в лог в разделе Прочее и действие просто записывает в лог значение переменной Text.


Нам жаль это слышать… Но мы постараемся быть лучше!

Мы благодарны Вам за помощь в улучшении документации.

Спасибо, мы рады что смогли помочь Вам. Ниже Вы можете оставить свой отзыв или пожелание :)
Мы стараемся сделать документацию понятнее и доступнее,
и Ваше мнение важно для нас
Курсы разработаны в компании «1С-Битрикс»