Задать вопрос
  • Как в bitrix24 с помощью входящего вебухка получать из задачи только определённые поля?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Но проблема в том, что в таком случае возвращаются абсолютно все поля у задачи, даже те, которые мне не нужны.


    Метод task.item.getdata устарел и не имеет параметров фильтрации полей. Возвращаются ВСЕ поля задачи.

    Используйте метод tasks.task.get который и вернет необходимые вам поля.
    Ответ написан
    Комментировать
  • Bitrix24 перенос на ubuntu?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Кто сталкивался переноса сетевого окружения и cms bitrix24 c centos7 на убунту?


    Если вы обладаете достаточными знаниями в Битрикс24 и в системном администририровании то можно поднять на чем угодно.
    Если хотя бы один из этих пунктов отсутствует (например вы разработчик, но никогда не трогали linux-сервер ИЛИ вы системный администратор но в php и битриксе ни бум-бум), то лучше сразу оставить это дело и перейти на Fedora-based дистрибутивы в качестве сервера.

    С технической точки зрения Битрикс24 представляет собой целый комплекс программного обеспечения: помимо рутинной базы данных с картинками сюда же входит достаточно сильная зависимость от серверного ПО. Можно ли пользоваться Битрикс24 на голом Apache или PHP-FPM? Конечно можно, однако из-за некачественной настройки будет страдать конечный пользователь. Системному администратору все равно, а вот пользователю явно не будет комфортно, если вдруг какие-то из заявленных возможностей (например скачивание файлов в архиве, загрузка больших файлов или быстрая отдача файлов) работать не будут.

    Bitrix Env это подготовленное окружения для платформы Битрикс (вне зависимости БУС это или Б24). Уже "из коробки" будут произведены настройки некоторого системного программного обеспечения (SElinux), установлены необходимое ПО (nginx, apache, percona, php и другие) и поготовлены ansible playbook'и для установки/изменения сопутствующего ПО. Ну и конечно обертка в виде bash-меню для их запуска.

    В целом из чего состоит bitrix env не секрет, это явно описано в документации. Не смотря на то что вся документация пишется по Fedora-based дистрибутивы, при наличии должных знаний и опыта не составит труда перенести все это на Ubuntu или любой другой дистрибутив.
    Ответ написан
  • Как внедрить фотогалерею в карточку клиента в CRM Bitrix24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Подскажите пожалуйста решение.


    Стандартного способо (активировал и поехали) нет, т.е. слишком узкая потребность.
    Есть несколько способов штатно добиться чего-то подобного:
    1. Использовать в качестве файлов и папок элементы универсального списка, привязанные к компании
    2. Сделать БП, который при создании компании на общем диске будет создавать папку под клиента и сохранять ссылку в пользовательское поле.

    Есть другой вариант: написать свое rest приложение с встройкой в карточу компании вкладкой - там можно будет делать все что вам угодно, но без навыков и знаний программирования вы просто не сможете это сделать.
    Ответ написан
    Комментировать
  • Почему \Bitrix\Crm\FieldMultiTable::getList не находит компанию с номером телефона +7, а с 7 видит?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Дело в том что у вас номер телефона хранится в международном формате, т.е. "+7...", а вы в первой регулярке указываете что он должен начинаться строго с цифры.

    Надо сказать что искать по сырым значениям телефонного номера это то еще занятие и так лучше не делать.

    Лучше воспользоваться методом поиска дубликатов:

    \Bitrix\Main\Loader::requireModule('crm');
    
    /**
     * Телефон который будем искать
     * @var string
     */
    $phone = '2131164';
    
    /**
     * Список всех ID лидов с этим телефонным номером
     * @var int[]
     */
    $leadIds = [];
    
    
    $adapter = \Bitrix\Crm\EntityAdapterFactory::create([
            'FM' => [
                'PHONE' => [
                    ['VALUE' => $phone]
                ]
            ]
        ],
        \CCrmOwnerType::Lead
    );
    
    $dups = (new \Bitrix\Crm\Integrity\ContactDuplicateChecker())
        ->findDuplicates(
            $adapter,
            new \Bitrix\Crm\Integrity\DuplicateSearchParams([
                'FM.PHONE'
            ])
        );
    
    foreach($dups as &$dup)
    {
        if(!($dup instanceof \Bitrix\Crm\Integrity\Duplicate))
        {
            continue;
        }
    
        $entities = $dup->getEntities();
        if(!(is_array($entities) && !empty($entities)))
        {
            continue;
        }
    
        //Each entity type limited by 50 items
        foreach($entities as &$entity)
        {
            if(!($entity instanceof \Bitrix\Crm\Integrity\DuplicateEntity))
            {
                continue;
            }
    
            if ( $entity->getEntityTypeID() != \CCrmOwnerType::Lead)
            {
                continue;
            }
    
            $leadIds[] = $entity->getEntityID();
        }
    }
    Ответ написан
    Комментировать
  • Как вы делаете бекап портала большого объема?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Это сильно зависит от целевой потребности, от архитектуры используемого Битрикс24, от навыков системного администратора. Надо сказать что 500ГБ это не большой портал.

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

    1. Бекап базы данных снимать через Percona XtraBackup.
    Можно использовать mysqldump с разными опциями производительности, но тут уже зависит от разных обстоятельств.

    2. Файловая часть.
    Тут зависит от способа ведения разработки и других требований.
    В самом простом случае: просто tar'ом в архив и отправка на сервер бекапов
    Если места не очень много: rsync на удаленный сервер as is

    Если есть разработка то снимается 2 бекапа: ядро (все кроме папки upload) и файлы (только upload).
    Методы те же.

    Т.е. по факту разработчикам отдается дамп базы и ядро, а пользовательские файлы не передаются.
    Если есть git с внешним репозиторием, то можно снимать вообще 2 бекапа: ядро (только папка bitrix) и файлы (только папка upload)

    Иногда используется сокращенный бекап: средствами системы формируется бекап без поискового индекса и папки upload и хранится он в облаке б24, а файлы в файловом хранилище (AWS S3-совместимое хранилище, например Yandex.Object Storage).

    Все очень индивидуально.
    Ответ написан
    Комментировать
  • Как заставить работать обработчик событий битрикс?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Нужно больше контекста.

    Я сейчас поставил вот такой код в PHP консоль:
    AddEventHandler("crm", "OnBeforeCrmLeadAdd", "CheckOnBeforeCrmLeadAdd");
    AddEventHandler("crm", "OnAfterCrmLeadAdd", "CheckOnBeforeCrmLeadAdd");
    AddEventHandler("crm", "OnAfterExternalCrmLeadAdd", "CheckOnBeforeCrmLeadAdd");
    
    function CheckOnBeforeCrmLeadAdd(&$arFields) {
    file_put_contents($_SERVER["DOCUMENT_ROOT"]."/log_lead.log",print_r($arFields,true)."\n",FILE_APPEND);
    }
    
    \Bitrix\Main\Loader::IncludeModule('crm');
    
    $obLead = new \CCrmLead(false);
    $ID = $obLead->Add(
    	$leadfields = ['TITLE'=>'test'],
    	true,
    	array("REGISTER_SONET_EVENT" => true, "DISABLE_USER_FIELD_CHECK" => true)
    );


    Файл создался.

    Проверь права на папку куда записываешь файл и проверь подключен ли модуль crm на странице.
    Ответ написан
    Комментировать
  • Как добиться отображения Чатов в мобильном приложении Битрикс аналогично приложению Битрикс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Вам нужно не открывать iframe в чаты, а разработать код, который будет делать то же самое.
    Т.е. это не какая-то галочка или другой шаблон компонента, а уже более нативная разработка.
    Ответ написан
    Комментировать
  • Как получить id лида созданного через плагин WooCommerce(Интеграция wooCommerce с bitrix)?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    вопрос в том, как можно получить id созданного лида


    Замените вызов архаичного метода с логином и паролем на вебхук crm.lead.add
    В результате вызова он вернет вам идентификатор созданного лида, который вы сможете использовать для заполнения товарных позиций
    Ответ написан
    1 комментарий
  • Как отобразить файлы на физическом диске в диске Битрикс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Подскажите, пожалуйста, можно ли создать на диске Битрикс24 папку, в котором отобразятся физические файлы с подключенного диска?


    Нельзя.
    Архитектурно программным продуктом не заложена такая возможность.
    Ответ написан
    Комментировать
  • Как проверить будет ли день рождения в определенный период?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Как вариант, пытался от system:now отнять дату рождения с помощью datediff с параметром '%y' чтобы вычислить разницу в годах, а потом прибавить к дате рождения и сравнить с датами заселения и выселения.


    Создаете 2 переменные:
    - День рождения (дата)
    - Разница в годах (число)

    Первым делом вычисляете разницу (datediff с параметром y) между текущей датой и датой рождения и записываете результат в "Разница в годах". Именно в числовое поле, а не в дату - иначе будет результат 1970 год.
    Вторым - устанавливаете "День рождения" как результат dateadd между "Дата рождения" и разницей в годах.
    Третьим - сравниваете :)

    Можно ли использовать substr с переменной типа "дата"?


    Нельзя, однако поле типа "Дата" можно привести к строке и тогда можно.
    Ответ написан
    Комментировать
  • Как сопоставить параметры в CRM при интеграции через входящий вебхук?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Добавляется пустой лид, как сделать, чтобы данные добавлялись в соответствующие поля?


    В документации (https://dev.1c-bitrix.ru/rest_help/crm/leads/crm_l...) сказано что метод crm.lead.add принимает 2 параметра: fields и params.
    Вы НЕ передаете эти параметры, но передаете параметры NAME и PHONE.

    Отсюда можно сказать что ваш запрос должен выглядеть так:

    bitrix.site.ru/rest/107/dklsaubnbfsdfsfanh3a/crm.lead.add.json?fields[NAME]=111111&fields[PHONE]=1111111111111

    Однако я не рекомендую передавать параметры напрямую в query string, а использовать вместо этого payload часть вашего запроса.

    Как ее использовать?
    1. Выполняете не GET, а POST запросы
    2. В Content-type заголовке передаете application/json
    3. В payload-части передаете json.
    Ответ написан
    Комментировать
  • Даст ли освоение Битрикс24 преимущества Laravel фрилансеру?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    TLDR: Если вы рассматриваете Битрикс24 (облако) и свои приложения - флаг вам в руки. Если хотите взять коробку и отпилить у нее фронтент - лучше откажитесь от этой затеи.

    давать возмоность клиенту интегрировать свой портал с Б24 и использовать Б24 в качестве даже админки.


    Когда вы говорите про использование Б24 в качестве админки вы очень сильно заблуждаетесь. Битрикс24 это не 1С-Битрикс: Управление сайтом, а ваше утверждение растет из архаичных "Возьмем БУС, оставим админку, публичку напишем на ХХХ" (которые были довольно распространены чисто относительно БУСа лет эдак 5-10 назад), однако в Б24 публичка играет не менее важную роль чем админка (например классической админки для модуля СРМ просто нет). Сама по себе идея использовать Laravel не для отдельный частей а для "фронта в целом" довольно утопична.
    Это не будет легкой прогулкой по документации, с примерами и понятным маршрутом.

    То есть появится возможность зарабатывать и на настройке Битрикс 24, и на продаже коробок, и на настройке интеграции с сайтом и на разработке самого сайта.


    А вот это уже довольно хороший контекст.
    Если вы изучите REST API Битрикс24, научитесь писать приложения для самого Битрикс24, то ваша ценность как компании только вырастет.
    Вы действительно получите возможность И заработать на создании сайта И заработать на интеграции с Битри24 И продаже облачных/коробочных лицензий И на настройке Битрикс24.
    Но вот точно не стоит связываться с разработкой сложных и нестандартных механик коробки, которые невозможно выполнить без кастомизации кода. Там опыт Laravel будет только мешать.
    Ответ написан
  • Как вызывать методы rest api Bitrix24 коробки из блока php-кода в бизнес-процессе?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Как вызывать методы rest api Bitrix24 коробки из блока php-кода в бизнес-процессе?


    Методы REST API изложены в https://dev.1c-bitrix.ru/rest_help/
    Через REST вы не можете вызвать нативное API.

    Или как например выполните те же действия через методы классов https://dev.1c-bitrix.ru/api_help/crm/index.php

    Основы разработки вы можете начать постигать здесь: https://dev.1c-bitrix.ru/learning/course/index.php...
    Ответ написан
    Комментировать
  • Как сделать адаптивную темную тему на сайте?

    gromdron
    @gromdron
    Работаю с Bitrix24
    1. Разрабатываете сайт
    1.1 Делаете светлую тему
    1.2 Делаете темную тему

    2. Делайте таким образом, чтобы авторизованный пользователь в настройках пользователь мог выбрать тему.
    2.1 Делаете селектор
    2.2 Модифицируете код вашего сайта чтобы он на основании авторизации пользователя подменял тему.

    3. Если хотите чтобы и у неавторизированных пользователей была такая возможность, то сохраняйте тему в cookie и при заходе на сайт в код п. 2.2 добавляете проверку cookie.

    Какой пункт осветить подробнее?
    Ответ написан
    3 комментария
  • PHP Fatal error: Uncaught TypeError: array_rand(): Argument #1 ($array) must be of type array, string given in?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Метод array_rand принимает первым аргументом массив, а вы передаете в него строку.

    Возможно вам бы смогли подсказать как именно модифицировать код, если бы вы сказали что он должен делать.
    Ответ написан
  • Возникла проблема при попытке войти на свой сервер битрикс при помощи десктопного приложения. Выдает сообщение "несовместимый сервер?". Что делать?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    • Какой версии Битрикс24?
    • Когда обновляли последний раз? Обновляли до последней стабильной или бета? Прошло ли обновление успешно?
    • Нет ли кастомизаций? Или сторонних разработок/модулей?


    Можете выложить на pastebin содержимое следующих файлов:
    /home/bitrix/www/desktop_app/login/helper.php
    /home/bitrix/www/desktop_app/login/index.php
    /home/bitrix/www/bitrix/modules/intranet/lib/util.php


    Предполагаю что произошло одно из нескольких вариантов:
    - Некорректно сконфигурирован веб-сервис (и настройки php)
    - Модификация ядра или программного кода
    Ответ написан
  • Битрикс облако, не работает свое действие через приложение?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Дело в том что "localhost" - это адрес только для вашего компьютера. Например для вашего компьютера localhost это вы, для сервера битрикс24 - это он.
    Для того чтобы работать с облачным битрикс24, необходимо использовать веб-сервера доступный из интернета.

    Как проверить? Откройте без wifi со своего мобильного эту ссылку (по моб.интернету). Если откроется - работать можно. Нет - значит нужно делать иначе.

    Вот тут очень хорошо про это написано: https://qna.habr.com/q/228439
    Ответ написан
    Комментировать
  • BX.SidePanel.Instance.open - Uncaught ReferenceError: BX is not defined. Как подключить класс?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Окей.

    0. Для начала проверить версию своего Битрикс24.
    В идеале она должна быть последняя, но точно не ниже 20.

    1. Это можно делать только на странице где подключено ядро.
    Причем код можно замещать как непосредственно в файле где подключается, так и в подключаемых файлах на этой странице.
    Что такое страница: https://dev.1c-bitrix.ru/api_help/main/general/pag...

    2. Для того чтобы это можно было использовать, на странице должна быть подключена библиотека
    \Bitrix\Main\UI\Extension::load(['sidepanel']);

    Судя по ошибке, которую я вижу у тебя либо не соблюден пункт 1 (не ядра вообще), либо твой скрипт отрабатывает до того как подключается библиотека.

    P.S. Я надеюсь ты речь ведешь про коробочную версию, потому как если ты делаешь REST-приложение (на твоем сервере находящееся), то тебе сюда: https://dev.1c-bitrix.ru/rest_help/js_library/addi...
    Ответ написан
    Комментировать
  • Как определить событие JS b и решить ошибку Uncaught Error: The toolbar instance with the same 'id' already exists?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    После обновления мы добавили файл result_modifier.php в темплейт crm.entity.details немного видоизменив из предыдущего итерфейса. Нужные табы добавились


    Этот компонент больше не нужно модифицировать.
    Вкладки можно добавлять на событии: https://dev.1c-bitrix.ru/api_d7/bitrix/crm/systemc...
    Это наиболее превильный путь

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


    Все верно - просто способ который раньше использовали не подходит для новой карточки.

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

    Теперь про работу грида.
    Для того чтобы принемить настройки, грид использует POST-запрос. Если параметры куда нужно отправлять POST запрос не переданы, то этот запрос будет направлен на ту же страницу, которая сейчас открыта. Т.е. понимаете, что вы не передали url, соответственно у вас происходит ситуация выше - отправляется POST запрос на страницу, где вашего компонента с гридом нет. Отсюда он не может получить ответ и его поведение такое какое вы видите.

    Как это счастье побороть?

    1. Создать физическую страницу, на которой разместите компонент.
    2. На этой странице у компонента грида задайте параметры OPTIONS_HANDLER_URL и BACKEND_URL
    3. Используйте события, чтобы добавить страницу из п.1 в таб.
    Ответ написан
    4 комментария
  • Как перенести поле из сделки в счет (или как копировать данные)?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Хочу создать бизнес процесс, который будет переносить данные из поля типа "Дата"


    Пока на счетах нет бизнес-процессов, то единственным корректным способом остается обработчик события и API.
    Что в облаке, что в коробке алгоритм тот же:
    - Подписываемся на событие создания счета (либо onCrmInvoiceAdd (для старых), либо onCrmDynamicItemAdd (для новых, помните про ограничения)
    - Получаем счет, находим привязанную сделку.
    - Достаем поля сделки
    - Обновляем счет
    Ответ написан
    Комментировать