Ответы пользователя по тегу Битрикс24
  • Почему не регистрируется обработчик события в своем модуле?

    @Nentra
    После установки модуля нужно проверить в таблице битрикс "b_module_to_module" установилось ли событие.
    И дальше уже отталкиваться от этого.

    Если использовать автозагрузку классов из модуля, то файлы с классами нужно называть полностью маленький буквами, а не верблюжьим стилем как в файле с классом.

    Файл с классом должен лежать в модуле в папке lib
    Если используются пространства имён, то делать в этой папке соответствующей пространству имён подпапки

    Пример для обработки события обновления поля Highload-блока.
    Конкретно для Highload-блоков имя модуля, событие которого перехватываем не указывается,
    к самому названию события приписывается название Highload-блока.

    Файл
    www\local\modules\red.october\install\index.php

    <?php
    	......................
    	class red_october extends CModule
    	{
    		function installDB()
    		{
    			Loader::includeModule($this->MODULE_ID);
    			
    			//Регистрация события
    			$eventManager = \Bitrix\Main\EventManager::getInstance();
    			$eventManager->registerEventHandlerCompatible(
    			'',
    			'DollarExchangeRateOnAfterUpdate',
    			'red.october',
    			'\\red\\october\\Events\\RecordDataFinalSellingPrice',
    			'RecordData'
    			);
    			
    			...................
    		}
    		
    		........................
    		
    		function unInstallDB()
    		{
    			
    			//Отмена регистрации события
    			$eventManager = \Bitrix\Main\EventManager::getInstance();
    			$eventManager->unRegisterEventHandler(
    			'',
    			'DollarExchangeRateOnBeforeUpdate',
    			'red.october',
    			'\\red\\october\\Events\\RecordDataFinalSellingPrice',
    			'RecordData'
    			);
    			
    		}	
    	}	
    	?>


    Файл с обработчиком события
    \www\local\modules\red.october\lib\events\recorddatafinalsellingprice.php

    <?
    	namespace red\october\Events;
    
    
    class RecordDataFinalSellingPrice
    { 
        public static function RecordData($recordId)
        {
    	\Bitrix\Main\Diag\Debug::writeToFile($recordId, $varName = __DIR__, $fileName = "/local/debug/debug.log");
    	}
    }
    Ответ написан
    Комментировать
  • Как подписаться на событие создания сделки в локальном приложении?

    @Nentra Автор вопроса
    Подписку на события я прописал в файле "install.php", который запускается 1 раз при установке приложения или переустановке приложения

    <?php
        require_once __DIR__ . "/lib/AuthorizationAndRestBitrix24.php"; //класс с описанием методов для работы с REST. В обработчике события нужно подключать файл с авторизацией и после выполнения действия получать новый файл с авторизацией, так как токены доступа одноразовые. Новый токен получается без участия человека. 
     
        // Установка приложения
        if ($_REQUEST['event'] == 'ONAPPINSTALL') {
            \AuthorizationAndRestBitrix24::saveAuth($_REQUEST["auth"], "GetCourse");  //сохраняю данные авторизации
    
            //подключить прослушивание события создания элемента смарт-процесса
            $entityTypeId=181;
            $handlerBackUrl = 'https://bace/handlers/lments.php';
            $result = \AuthorizationAndRestBitrix24::restCommand('event.bind', array(
                'EVENT' => 'onCrmDynamicItemAdd_' . $entityTypeId,
                'HANDLER' => $handlerBackUrl
            ), $_REQUEST["auth"]);  
        }
    Ответ написан
    Комментировать
  • Почему в сделку не добавляется товар?

    @Nentra Автор вопроса
    невнимательно посмотрел, эта штука должна была быть в массиве.

    $products = \CRest::call(
                    'crm.deal.productrows.set',
                    [
                        'id' => $result['result'],  // id  сделки
                        'rows' => [
                            [
                                "PRODUCT_ID" => 9,  // id товара
                                "PRICE" => 100.00, //цена
                                "QUANTITY" => 4, //количество
                            ]
                        ]
                    ]);
    Ответ написан
    Комментировать
  • Битрикс24 Bot API, как правильно получать события через вебхуки?

    @Nentra
    Можно
    https://мой_портал/devops/edit/
    6454f073a3d4a992818590.png
    Ответ написан
    Комментировать
  • По какой причине не работает фильтр?

    @Nentra Автор вопроса
    Нужно писать
    filter
    Ответ написан
    Комментировать
  • Как с помощью входящего вебхука bizproc.task.complete передать поля в активити «Запрос дополнительной информации»?

    @Nentra Автор вопроса
    Выполнение задания Запрос дополнительной информации через REST - версия для PHP:

    <?
        require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
        require($_SERVER["DOCUMENT_ROOT"]."/local/test6/in_hook/crest.php");    
        
        $ID=7; // ID Задания бизнес-процессов
        $STATUS=3; // или ok - ответ "Ок" (ознакомлен)
        $comment="Комментарий пользователя"; //Комментарий пользователя, обязательность зависит от параметров задания
        
        //Запрос дополнительной информации
        $params = array(    
        "TASK_ID" => $ID,
        "STATUS" => $STATUS,
        "COMMENT" => $comment,   
        
        "FIELDS" => [
        "ID_business_process" => "Значение Бизнес-процесс",  // ID_business_process - ID поля (он же идентификатор переменной из БП)
        "sat_response" => "Значение Бизнес-процесс sat_response", // sat_response - ID поля (он же идентификатор переменной из БП)
        "sat_comment" => "Значение Бизнес-процесс sat_comment", // sat_comment - ID поля (он же идентификатор переменной из БП)
        ],    
        ); //end $params = array(
        
        $result = CRest::call(
        'bizproc.task.complete',
        $params
        );
        
    echo "<pre>Template arParams: "; print_r($result); echo "</pre>";
    Ответ написан
    Комментировать
  • Как авторизоваться с помощью CURL в битрикс24 коробка со стороннего портала?

    @Nentra Автор вопроса
    Если на файл будет право доступа "чтение" для всех пользователей, то запрос авторизации с подключенным прологом не будет происходить.
    Запрос авторизации с подключенным прологом происходит, так как на файл у вас скорее всего разрешен доступ только для авторизованных пользователей.
    Пройти авторизацию можно если в отправляемом запросе передать basic авторизацию.
    Пример отправки запроса в basic авторизацией через curl можно посмотреть в статье https://vk-book.ru/projti-avtorizaciyu-basic-http-...
    Ответ написан
    Комментировать
  • Как создать вебхук для bizproc.workflow.start?

    @Nentra
    777 - в данном случае это элемент из списка у которого id = 777
    Список находится в адинке тут:
    Рабочий стол - Контент - Процессы - Название бизнес-процесса, такое же как в публичной части.

    Вам нужно создать новый элемент списка, написать в него что ни будь, получить ID созданного элемента списка и написать его вместо 777

    Всё остальное у вас правильно.
    Ответ написан
    Комментировать
  • Какая версия php нужна для работы битрикс24 коробка?

    @Nentra Автор вопроса
    https://dev.1c-bitrix.ru/learning/course/?COURSE_I...
    Для работы продукта требуется наличие PHP версии не ниже 7.4.0.
    6398444775a55745899282.png
    Ответ написан
    1 комментарий
  • Как пользоваться методом BX.rest.callMethod(method, param, test.debug); в коробочном битрикс24 из административной части?

    @Nentra Автор вопроса
    Никак.
    Нужно всё делать через ORM и обычные методы Bitrix Framework.
    Ответ написан
    Комментировать
  • Как в Бизнес-процессе записать, получить в блоке PHP-код значение глобальной переменной?

    @Nentra Автор вопроса
    В итоге вот это помогло

    Boris, [22.11.2021 0:56]
    [В ответ на Andrey DEV(Джейс) ↑]
    /*
     * Комментарии к изменению глобальных переменных через БП PHP блок
     * Если указывать из БП глобальную переменную с _ будет ошибка исполнения (просто флоу до конца не дойдет, без каких то ошибок в логи)
     * Если \Bitrix\Bizproc\Workflow\Type\GlobalVar::getById возвращает пустоту, значит глобальная переменная в недопуступом имени
     * Если в \Bitrix\Bizproc\Workflow\Type\GlobalVar::upsert отдать что-то недопустимое, будет ошибка без логов
     * Если создать произвольный массив типа $var['idGlobVar'] = ['Name'=>'Имя глобальной переменной','Description'=>'','Type'=>bool,'Required'=>'','Multiple'=>'','Options'=>'','Default'=>'Y'];
     *   а после скормить этот массив в \Bitrix\Bizproc\Workflow\Type\GlobalVar::upsert то создастся ещё одна глобальная переменная idGlobVar несмотря на то, что она уже будет (да, две переменные будут, с одинаковыми идентификаторами)
     * Изменение значения происходит через изменение Default параметра
    */
    
    $var = \Bitrix\Bizproc\Workflow\Type\GlobalVar::getById('orderVacancy');
    $var['Default'] = 'Y';
    if($var)
    {
      \Bitrix\Bizproc\Workflow\Type\GlobalVar::upsert('orderVacancy', $var);
    }
    Ответ написан
    1 комментарий
  • Почему не запускается функция при наступлении события?

    @Nentra Автор вопроса
    Вот это у меня не работает, хотя должно работать

    $eventManager = \Bitrix\Main\EventManager::getInstance();
    $eventManager->addEventHandlerCompatible(
      'main',
      'OnAfterUserAdd',
      [
        'AddUserToGroupChatsClass',
        'AddUserToGroupChats'
      ],
      100,
      $_SERVER["DOCUMENT_ROOT"] . "/local/php_interface/event_handlers/add_user_to_group_chats_class.php"
    );


    Работает вот это:
    AddEventHandler("main", "OnAfterUserAdd", Array("AddUserToGroupChatsClass", "AddUserToGroupChats") );
    require_once($_SERVER['DOCUMENT_ROOT'] . "/local/php_interface/event_handlers/add_user_to_group_chats_class.php");


    но получается у меня файл
    add_user_to_group_chats_class.php
    вообще каждый раз загружается, а мне бы хотелось сделать чтобы он загружался только при срабатывании события.
    Ответ написан
  • Как в битрикс24 получить ID чата?

    @Nentra Автор вопроса
    https://helpdesk.bitrix24.ru/open/5504913/
    Ввести в нужном чате команду:
    /getDialogId – получить идентификатор чата для внешних интеграций
    Ответ написан
    1 комментарий