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

    @sevnet Автор вопроса
    Системный аналитик, бизнес-консультант
    $FieldCode = 'UF_CRM_1728545307';
    $UF_instance = \Bitrix\Crm\UserField\UserFieldManager::getUserFieldEntity(CCrmOwnerType::Company); //entityTypeID
    $UF_arr = $UF_instance->GetFieldById($FieldCode);
    $UF_title = $UF_arr['EDIT_FORM_LABEL'];

    Очень дорогой для БД запрос, но другого я не придумал.
    Ответ написан
    Комментировать
  • Как получить пользовательское название поля типа crm_status?

    @sevnet Автор вопроса
    Системный аналитик, бизнес-консультант
    use Bitrix\Crm\Service;
    $instanceOfCRM = Service\Container::getInstance();
    $factoryDeal = $instanceOfCRM->getFactory(2);
    $factoryCompany = $instanceOfCRM->getFactory(4);
    $Deal = $factoryDeal->getItem($DEAL_ID);
    $COMPANY_ID = $Deal->get('COMPANY_ID');
    $Company = $factoryCompany->getItem($COMPANY_ID);
    $Status = new CCrmStatus('INDUSTRY');
    $CompanyINDUSTRY = ($Status->GetStatusByStatusId($Company->get('INDUSTRY')))['NAME'];
    $CompanyINDUSTRY = ($CompanyINDUSTRY) ?: 'Сфера деятельности не указана';
    Ответ написан
    Комментировать
  • Каким событием ядра D7 PHP Битрикс24 можно отловить входящее письмо?

    @sevnet Автор вопроса
    Системный аналитик, бизнес-консультант
    Плохо искал((
    событие на получение почты onMailMessageNew
    
    <?php
    
    use Bitrix\Main\Diag\Debug;
    use Bitrix\Mail\Helper\Message;
    use \Bitrix\Main\Entity\Event;
    
    CModule::IncludeModule('mail');
    $eventManager = \Bitrix\Main\EventManager::getInstance();
    
    $eventManager->addEventHandler('mail', 'onMailMessageNew', 'onMailMessageNew');
    function onMailMessageNew($event)
    {
       $message = $event->getParameter('message');
       Debug::dumpToFile( $message);
    }
    Ответ написан
    Комментировать
  • Как передать в форму создании элемента списка с значения полей?

    @sevnet Автор вопроса
    Системный аналитик, бизнес-консультант
    Нашел решение сам (подсмотрел как в объекте CRM он сам же подвязывается к спискам, при создании элемента связанного списка из него):
    https://{портал Б24}/services/lists/{ID списка}/element/0/0/?external_context=creatingElementFromCrm&fieldId=PROPERTY_562&defaultValue=D_4062
    Ответ написан
    Комментировать
  • Как правильно скопировать шаблон компонента Битрикс24?

    @sevnet Автор вопроса
    Системный аналитик, бизнес-консультант
    Разобрался сам при помощи debug_backtrace(), его вставил с выводом результата в файл в оригинальный файл
    ./bitrix/components/bitrix/report.view/stexport.ajax.php
    и оказалось, что вызывался он из файла другого компонента:
    Array
    (
        [0] => Array
            (
                [file] => /home/bitrix/www/bitrix/components/bitrix/crm.report.view/stexport.ajax.php
                [line] => 5
                [function] => include_once
            )
    
    )

    перекопировал весь компонент crm.report.view в папку ./local/components/bitrix/report.view, сделал подмену ./bitrix/ на ./local/ во всех файлах компонента crm.report.view (искал grep -rn "/bitrix/com" .) и вуаля, всё взлетело!
    Ответ написан
  • Как записать адрес Контакта Битрикс 24?

    @sevnet Автор вопроса
    Системный аналитик, бизнес-консультант
    Кароче, методом тыка разобрался, всё таки даже если надо добавить только адрес, всё равно надо передавать в массиве поле "NAME", как минимум, правда, если передать только его, потом в реквизиты не зайти, ругается, что не определён шаблон реквизитов, так что его тоже надо передавать, в итоге вот так заработало:

    CModule::IncludeModule("crm");
    $arRQAddr['6'] = [ //1 - Физический адрес, 6 -Юридический адрес
            'ADDRESS_1' => 'ул. Семашко, д.1',
            'ADDRESS_2' => '',
            'POSTAL_CODE' => '355029',
            'PROVINCE' => 'Ставропольский край',
            'CITY' => 'город Ставрополь',
            'COUNTRY' => "Россия"
        ];
        $fields =
            [
                'PRESET_ID' => 1,
                'NAME' => 'Организация',
                'ACTIVE' => 'Y',
                'ENTITY_TYPE_ID' => '3',
                'ENTITY_ID' => '144333',
                'ADDRESS_ONLY' => "Y",
                'RQ_ADDR' => $arRQAddr,
            ];
    
        $requisite = new \Bitrix\Crm\EntityRequisite();
        $res = $requisite->add($fields);
    Ответ написан
  • Как настроить push&pull WebSocket RTC на ВМ Битрикс 24 с обратным проксированием nginx?

    @sevnet Автор вопроса
    Системный аналитик, бизнес-консультант
    Всё таки сам разобрался, с двадцать второй попытки всё взлетело.
    4hRoelc.png
    4hRodMd.png
    Сначала про нюансы и проблемы, с которыми столкнулся конкретно я.
    1. На Б24 ВМ в моём случае порты 8010:8015,9010,9011 прослушивались не на localhost (127.0.0.1), а на IP локальной сети (сетевого интерфейса). Поэтому в моём случае необходимо было добавить в цепочку INPUT iptables правила (на Б24 ВМ):
    iptables -I INPUT -p tcp --match multiport --dport 8010:8015 -j ACCEPT
    iptables -I INPUT -p tcp --match multiport --dport 9010:9011 -j ACCEPT

    Для того чтобы проверить, какие порты и на каких интерфейсах прослушиваем ВМ Б24 вводим:
    netstat -ntulp
    2. Вот в этой инструкции от Б24 всё прекрасно, кроме одного, но очень существенного момента. В ней указывается, что необходимо скачать на реверс-прокси вот этот файл bx/settings/rtc-im_settings.conf и включить его в секцию http nginx.conf. Если сделать так как сказано, у нас в данном файле окажется следующая настройка:
    upstream nodejs_sub {
      ip_hash;
      keepalive 1024;
      server push:8010;
      server push:8011;
      server push:8012;
      server push:8013;
      server push:8014;
      server push:8015;
    }
    upstream nodejs_pub {
      ip_hash;
      keepalive 1024;
      server push:9010;
      server push:9011;
    }

    и даже если вы подмените переменную push на реальный IP ВМ Б24, у вас реверс-прокси в директиве
    location ~* ^/bitrix/subws/ {
        access_log off;
        proxy_pass http://nodejs_sub;
        ...

    будет передавать весть трафик не на 443й порт ВМ Б24, который слушает nginx ВМ Б24, а напрямую на порты push-server'а ВМ Б24, а тот в свою очередь ожидает этот трафик от nginx ВМ Б24, поэтому так работать не будет. Сам по себе push-server это модуль разработки Б24, никаких исчерпывающий инструкций по его работе в интернет просто не существует, поэтому пытаться его настроить на получение трафика от реверс-прокси гиблая идея на корню.
    Следовательно действовать согласно инструкции от Б24 можно и нужно, но в указанной выше части, нужно пропустить обе директивы upstream nodejs_sub в файле bx/settings/rtc-im_settings.conf, оставить надо только обе директивы map.
    3. В этом посте на форуме Б24 в предложенном конфиге для реверс-прокси nginx есть параметр
    proxy_set_header Authorization "" ;
    есть его применить, у вас навсегда разлогинится мобильное приложение, и даже при указании верного пароля вы не сможете залогиниться в него обратно.
    4. Ни где (ни в инструкция ни на форуме Б24) не указано, что необходимо привести в соответствие в директиве http nginx.conf реверс прокси ряд параметров, которые содержатся в аналогичной директиве ВМ Б24. А это логично и соответственно необходимо для корректной работы.

    В итоге вот сборка 100% работающая (быстро и без сбоев) из моих конфигов для реверс-прокси nginx:
    1. Обновляем Nginx на реверс прокси, минимум до такой же версии как и на ВМ Б24, в моём случае это была версия 1.20.2, которая уже содержала необходимые пакеты nginx-extras, необходимые для передачи специальных заголовков websocket.
    2. Настройки реверс-прокси nginx.
    В nginx.conf в директиву http добавляем параметры из nginx.conf ВМ Б24 (у меня они собраны в bx/bx_general_proxy_settings.conf) и директивы map из файла bx/settings/rtc-im_settings.conf:
    include bx/settings/rtc-im_settings.conf;
            include bx/bx_general_proxy_settings.conf;

    bx/bx_general_proxy_settings.conf
    proxy_connect_timeout           300;
            proxy_send_timeout              300;
            proxy_read_timeout              300;
            proxy_buffer_size               64k;
            proxy_buffers                   8 256k;
            proxy_busy_buffers_size         256k;
            proxy_temp_file_write_size      10m;
    
            gzip                            on;
            gzip_proxied                    any;
            gzip_static                     on;
            gzip_http_version               1.0;
            gzip_types                      application/x-javascript application/javascript text/css;
    
            default_type application/force-download;
    
            tcp_nopush                      on;
            tcp_nodelay                     on;
    
            client_max_body_size            1024m;
            client_body_buffer_size         4m;

    bx/settings/rtc-im_settings.conf
    log_format simple '$time_local $status $request';
    
    # if connection ti not set
    map $http_upgrade $connection_upgrade {
      default upgrade;
      '' 'close';
    }
    
    map $http_upgrade  $replace_upgrade {
      default $http_upgrade;
      ''      "websocket";

    Конфиг для DNS Б24:
    server {
        listen       80;
        if ($host = {DNS name}) {
            return 301 https://$host$request_uri;
        } # managed by Certbot
    }
    server {
            listen       443 ssl;
            server_name {DNS name} www.{DNS name};
            access_log /var/www/httpd-logs/{DNS name}.access.log;
            error_log /var/www/httpd-logs/{DNS name}.error.log notice;
            ssl_certificate /etc/letsencrypt/live/{DNS name}/fullchain.pem; # managed by Certbot
            ssl_certificate_key /etc/letsencrypt/live/{DNS name}.su/privkey.pem; # managed by Certbot
            ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
            ssl_prefer_server_ciphers on;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    
            location / {
    
                    proxy_ignore_client_abort on;
                    proxy_pass https://{IP VM B24}:443;
                    proxy_redirect https://{IP VM B24}:443 /;
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-Port $server_port;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header X-Forwarded-Proto $scheme;
                    proxy_set_header HTTPS YES;
    
                # for Push&Pull
                location /bitrix/subws/ {
                    access_log off;
                    proxy_max_temp_file_size 0;
                    proxy_read_timeout  43800;
                    proxy_http_version 1.1;
                    proxy_pass https://{IP VM B24}:443;
                    proxy_set_header Upgrade $replace_upgrade;
                    proxy_set_header Connection $connection_upgrade;
                    proxy_redirect https://{IP VM B24}:443 /;
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-Port $server_port;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header X-Forwarded-Proto $scheme;
                    proxy_set_header HTTPS YES;
                }
                location /bitrix/sub/ {
                    access_log off;
                    rewrite ^/bitrix/sub/(.*)$ /bitrix/subws/$1 break;
                    proxy_pass https://{IP VM B24}:443;
                    proxy_max_temp_file_size 0;
                    proxy_read_timeout  43800;
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-Port $server_port;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header X-Forwarded-Proto $scheme;
                    proxy_set_header HTTPS YES;
                }
    
                location /bitrix/rest/ {
                    access_log off;
                    proxy_pass https://{IP VM B24}:443;
                    proxy_max_temp_file_size 0;
                    proxy_read_timeout  43800;
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-Port $server_port;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header X-Forwarded-Proto $scheme;
                    proxy_set_header HTTPS YES;
                }
             }

    Для перечитывания конфигов используем
    nginx -s reload
    Для тестирования
    nginx -t
    Для перезагрузки
    systemctl restart nginx
    На ВМ Б24 не забываем включить модуль real_ip в BitrixVM – создаем конфигурационный файл bx/settings/real_ip.conf:
    set_real_ip_from {IP revers-proxy};
    real_ip_header X-Forwarded-For;

    3. ОБЯЗАТЕЛЬНО копируем SSL сертификат и ключ c реверс-прокси на ВМ Б24 и прописываем его в bx/conf/ssl.conf. Без него - не работает! И этого ни в одной инструкции не было! При этом с реверс-прокси, мы весь трафик отправляем на https 443й порт ВМ Б24.
    4. Если всё равно не работает переустановите Push-server на ВМ Б24:
    4hRqc87.png
    4hRqebM.png
    4hRqhdx.png
    Ответ написан
    Комментировать
  • Папка upload/crm и папка upload/mail стали расти в день на 10-20 ГБ?

    @sevnet
    Системный аналитик, бизнес-консультант
    А при резервном копировании у вас папки ./upload и ./bitrix/backup исключены?
    4hMyCAB.png
    И ещё просмотрите какая папка занимает максимум места, а потом смотрите в ней другие папки, и так до файлов:
    введите в командной строке:
    du -hc --max-depth=1
    Сначала в папке
    /home/bitrix/www/
    затем в тех папках которые сильно много весят, затем в их подпапках, и т.д. пока не найдёте чем занято место.
    Ответ написан
    Комментировать
  • Изменить меню в живой ленте Битрикс24 (Коробка)?

    @sevnet
    Системный аналитик, бизнес-консультант
    Переходите по ссылке https://ваш.портал/bizproc/processes/
    И вот так:
    6089a5d3a51f4894729610.jpeg
    Ответ написан
    Комментировать
  • Как поменять ответственного, который автоматически назначается лидам, создаваемым при звонке на определенный номер телефона?

    @sevnet
    Системный аналитик, бизнес-консультант
    Гляньте, вот это не оно: 6089a385d3359240402842.png?
    Ответ написан
    Комментировать
  • Долго грузится Bitrix24 на удаленном сервере, в чем причина?

    @sevnet
    Системный аналитик, бизнес-консультант
    Для ответа на ваш вопрос требуется прояснить структуру сети и таблицы маршрутизации и NAT.
    Я подозреваю, что трафик где-то не по тому маршруту идёт и только когда происхоит тайм аут, переходит по другому маршруту.
    Скорее всего у вас коробка Б24 за тем же NAT, что и удалёньщики.
    Ответ написан