• Как из объекта Bitrix\Crm\ItemIdentifier вытащить нужные данные?

    @sevnet Автор вопроса
    Системный аналитик, бизнес-консультант
    Вот такую вот дичь навоял:
    foreach ($parents as $parent) {
        $objArr = (array)$parent;
        foreach ($objArr as $key => $value) {
            $ID[explode("\0",$key)[2]] = $value;
        }
        file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/cust_app/php_applets_for_bp/logRelRes.txt', print_r($ID, 1));
    }

    Вот такой выхлоп:
    Array
    (
        [entityTypeId] => 4
        [entityId] => 115695
        [categoryId] => 
    )
    Не знаю как красивее сделать, нужна помощь экспертов.
    Ответ написан
  • Каким событием ядра 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);
    Ответ написан
  • Как сделать изменение поля из одной таблицы в другую с сопоставлением по другому полю?

    @sevnet Автор вопроса
    Системный аналитик, бизнес-консультант
    UPDATE b_uts_crm_company SET `UF_CRM_1696186645` = (SELECT REVENUE FROM b_crm_company WHERE b_crm_company.ID = b_uts_crm_company.VALUE_ID AND b_crm_company.REVENUE IS NOT NULL);
    Ответ написан
    Комментировать
  • CentOS 7 загружается только в rescue режиме после изменения диска ВМ с IDE на SCSI, как загрузить в обычном режиме?

    @sevnet Автор вопроса
    Системный аналитик, бизнес-консультант
    В общем разобрался сам. Но не как исправить сложившуюся ситуацию, а как её не допустить.
    Проблема оказалась в том, что я перед клонированием диска IDE обновил ВМ Битрикс 24 (выбрав Update все пакеты "all").
    Как решил.
    Я просто залил на ESXi ещё одну копию ВМ Б24, затем склонировал диск. Я клонировал самым коротким путём, в ESXi SSH набрал
    vmkfstools -i disk.vmdk -d zeroedthick disk1.vmdk
    Но можно клонировать и в clonezilla или rDriveImage, как предложил Drno (спасибо, кстати, за такой прекрасный инструмент как clonzilla, раньше его не знал).
    И потом подцепил новый диск в SCSI 0:0, вместо старого IDE.
    И всё взлетело.

    П.с.: почему на обновлённой ВМ это не работало и почему она работала без проблем только в rescue моде, для меня вопрос. Скорее всего где-то в конфигах initramfs (кроме rescue) не было нужного драйвера для контроллера SCSI (virtIO drivers). Но разбираться с этим было бы дольше для меня.
    Ответ написан
  • Как настроить 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/
    затем в тех папках которые сильно много весят, затем в их подпапках, и т.д. пока не найдёте чем занято место.
    Ответ написан
    Комментировать
  • Как преобразовать текстовый вид чисел с разделителями порядков (триад) в тип "число" в exel?

    @sevnet Автор вопроса
    Системный аналитик, бизнес-консультант
    В общем, я не знаю, что за символ на месте пробела попадает при экспорте на место разделителя триад, но работает поиск и замена только в том случае, если я именно копирую "пробел" из разделителя триад, а если просто в поиске в поле "Что ищем" ставлю пробел - то он не ищется(((
    Ответ написан
    Комментировать
  • Где взять инсталлер OS X для установки на VMWare?

    @sevnet Автор вопроса
    Системный аналитик, бизнес-консультант
    Да, нашёл уже на rutracker.net
    Ответ написан
  • Как настроить запись с камеры DCS-2103 (fw. 1.24) к серверу Samba (Version 4.13.5-Debian)?

    @sevnet Автор вопроса
    Системный аналитик, бизнес-консультант
    РЕШЕНО!!!
    1. Понизил версию самба на 4.5.6.
    2. Нашел путём последовательного уточнения запросов на просторах интернетов
    zo0mik 10.08.17 16:06:53:
    "Ну вот почему нельзя написать об этом во всех руководствах, что если не написать всего лишь одну эту строчку, то в каких-то случаях хоть голову о клаву разбей, оно может и не заработать вообще?!!! А вообще, желательно: client min protocol = NT1 client max protocol = SMB3 ntlm auth = yes create mask = 0664 directory mask = 0775 acl allow execute always = True и обязательно проверить наличие директории в локальной файловой системе и права на неё!"

    Вот такой конфиг на выходе:
    [global]
    #workgroup = WORKGROUP
    security = user
    map to guest = bad user
    wins support = no
    dns proxy = no
    log level = 3
    client min protocol = NT1
    client max protocol = SMB3
    ntlm auth = yes
    acl allow execute always = True
    log file = /var/log/samba/log.%m
    
    [183]
    path = /home/cams/captures/183
    valid users = cams
    guest ok = no
    browsable = yes
    writable = yes
    read only = no
    create mask = 0665
    directory mask = 0775
    Ответ написан
    Комментировать
  • Как понизить используемую версию протокола Samba до SMBv1?

    @sevnet Автор вопроса
    Системный аналитик, бизнес-консультант
    РЕШЕНО!!!
    1. Понизил версию самба на 4.5.6.
    2. Нашел путём последовательного уточнения запросов на просторах интернетов zo0mik 10.08.17 16:06:53:
    "Ну вот почему нельзя написать об этом во всех руководствах, что если не написать всего лишь одну эту строчку, то в каких-то случаях хоть голову о клаву разбей, оно может и не заработать вообще?!!! А вообще, желательно: client min protocol = NT1 client max protocol = SMB3 ntlm auth = yes create mask = 0664 directory mask = 0775 acl allow execute always = True и обязательно проверить наличие директории в локальной файловой системе и права на неё!"

    Из меня такой бисячий дьявол вышел, когда я увидел:
    4dmcN9E.png
    3 дня мучений!!!
    Как только соседи дурку не вызвали))))
    Ответ написан
    Комментировать
  • Постоянно отваливаются диски подключенные к ESXi через LSI 9260-8i, в чём проблема, как диагностировать?

    @sevnet Автор вопроса
    Системный аналитик, бизнес-консультант
    Кулер приколхозил, завтра буду смотреть, как будет работать....
    Ответ написан
  • Сбой LVM на debian 9. Root каталог на LVM, система недоступна для записи, fsck помогает на несколько часов, потом рецидив. Как быть?

    @sevnet Автор вопроса
    Системный аналитик, бизнес-консультант
    Выцепил проблему.
    ESXi стоит на SSD винте Intel S3710 200Gb, и вот он почему-то - просто теряет способность к записи через некоторое время(((
    В системе ESXi пишет 0B Объём, 0В Занято 0В свободно.
    Тестирую его под виндой кристалмарком, всё ок!
    ESXi только вчера переустанавливал, освежал релиз, при этом делал полное форматирование.
    Может ещё из-за БП, по 5В линии есть просадка до 4,83-4,85В
    В общем загадка.
    Ответ написан
  • Системный винт ESXi 6.5 u2 показывает 0 байт места, не сохраняются настройки, почему и что делать?

    @sevnet Автор вопроса
    Системный аналитик, бизнес-консультант
    В общем с 3й попытки я успел остановить включение и перенёс машину на другой винт!
    Ответ написан
    Комментировать
  • Почему ошибка отсутствующего эктеншена при входящем с GoIP на FreePBX?

    @sevnet Автор вопроса
    Системный аналитик, бизнес-консультант
    Разобрался сам, но скорее интуитивно.
    Почем так работает, не понимаю!
    В общем, всё что надо было сделать, это удалить "-custom" в строке "context=from-trunk-sip-9651234567-custom"
    Как я к этому пришел? Очень просто, все другие транки не имели этой приписки в конце, но появлялись с ней в файле extensions_additional.conf автоматически. Я логичным путём сделал вывод, что это какая-то техническая приписка выставляемая автоматически, и удалил её, как только я это сделал, всё заработало.

    P.s.: Замечу одну деталь, у меня не просто FreePBX, а доработанная платная FreePBX под названием MetPBX, от компании Postmet.de
    Ответ написан
    Комментировать
  • Как решить проблему с курсором мыши, при подключении монитора к ноутбуку?

    @sevnet
    Системный аналитик, бизнес-консультант
    Я сталкивался с подобным когда битность вывода на экран была разная. Например, на один 16бит, на другой 32бит.
    Скорее всего надо пробовать другие драйвера на видео карту ноута ставить, кстати на монитор тоже попробуйте.
    Ответ написан
    Комментировать
  • Изменить меню в живой ленте Битрикс24 (Коробка)?

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

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