Задать вопрос
  • Как создать строку '-x-xx-xxx-xx-x-'?

    мой вариант:
    const divider = '-';
    const symbol = 'x';
    let x = symbol;
    let prefix = divider;
    let suffix = divider;
    for (let i = 0; i < 2; i++) {
        prefix += x + divider;
        suffix = divider + x + suffix;
        x += symbol;
    }
    let result = prefix + x + suffix;
    console.log(result);
    Ответ написан
    3 комментария
  • Поврежденный файл с расширением .NEF, как открыть?

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

    Делайте так же, что Вас останавливает? Если не хотите плодить строчки, то я вижу 2 пути:
    1) использовать в "Тип условия" значение "Выражение PHP", а в "Условие" регулярное выражение. Вот пример от коробочного правила:
    preg_match("#^/video/([\.\-0-9a-zA-Z]+)(/?)([^/]*)#", $GLOBALS['APPLICATION']->GetCurPage(0))

    2) сделать комплексный компонент, регулярку задать в нём, поместить его, например, в /test/index.php . Или аналогично сделать через роутинг. Тогда в настройках сайта будет достаточно одной строчки с типом "Для папки или файла" .
    Ответ написан
    Комментировать
  • Как в Битриксе отключить товарное предложение?

    к ответу tgarl добавлю только, что если делать обработчик для onBefore события, то в нём не надо самому делать апдейт в базе, а надо делать
    $arFields['ACTIVE'] = 'N';
    Именно для этого $arFields и принимают по ссылке. И надо не забывать, что на том же событии могут быть другие обработчики, со своими изменениями
    Ответ написан
    Комментировать
  • Как настроить nginx + php fpm для 1c bitrix?

    попробуйте вот это:
    try_files $uri $uri/ /bitrix/urlrewrite.php$is_args$args;

    заменить на:
    try_files $uri $uri/ @bitrix;
    И добавить именованный location по образцу PHP-шного:
    location @bitrix {
      include fastcgi_params;
      fastcgi_intercept_errors on;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root/bitrix/urlrewrite.php;
      try_files $uri =404;
      fastcgi_read_timeout 3600;
      fastcgi_send_timeout 3600;
      fastcgi_param HTTPS "on";
      fastcgi_param SERVER_PORT 443;
      fastcgi_pass 127.0.0.1:{{php_fpm_port}};
      fastcgi_param PHP_VALUE "{{php_settings}}";
    }

    ( я это не проверял)
    Ответ написан
  • Почему иногда не срабатывает событие?

    Вы неправильно используете аргументы в CCrmCompany::getList(), из-за этого получаете вообще все компании и вынуждены их перебирать. Плюс, для событий "OnBefore....Add" ключ ID не может существовать - ведь такие события происходят до создания новой записи ( в смысле элемента, раздела, компании ).

    Должно быть что-то такое ( префиксный фильтр в arFilter должен работать, но я не проверял ):
    function OnBeforeCrmCompanyAddHandler(&$arFields)
    {
        $res = CCrmCompany::getList(['ID' => 'ASC'], ['=TITLE' => $arFields["TITLE"]], ['ID'], 1);
        if ($res->Fetch()) {
            $arFields["RESULT_MESSAGE"] = "Данная компания уже существует!";
            return false;
        }
        return true;
    }

    Список префиксов можно посмотреть в файле bitrix/modules/main/classes/general/sqlwhere.php , в свойстве $operations
    Ответ написан
    Комментировать
  • Как изменять инфу на сайте?

    ткните в любой из сетевых запросов ( в Вашем случае - картинку в середине скриншота ), и увидите заголовки запроса и ответа. И погуглите "http cache control".
    По рекомендациям гугла, ресурсы ( assets ) надо кешировать на год, а изменять через изменение пути к ресурсу.
    Ответ написан
    5 комментариев
  • Как настроить чпу для компонента news для подразделов?

    моя гипотеза
    по скриншотам понять трудно, но попробуйте в параметрах компонента в поле "страница раздела" убрать начальный слеш; должно быть "#SECTION_CODE_PATH#/"
    Ответ написан
    Комментировать
  • Как победить ошибку 500 в 1С-Битрикс: УС?

    $_SERVER[HTTP_HOST]

    а должно быть $_SERVER['HTTP_HOST']
    В PHP 8 окончательно отказались от преобразования неопределённых констант в строки.
    и у Вас в ссылке 'http://' , в 2024 году это уже моветон.
    Ответ написан
    1 комментарий
  • Как найти функцию в файлах проекта?

    ответ при наличии Linux:
    find . -type f -exec grep 'function showMsg2'  '{}' \+

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

    Вариант 2: разобраться с подключением и настройкой xdebug и использовать режим отладки в IDE или трассировку (она идёт в файл, так что IDE не нужна)

    Вариант 3: в main_frame.php
    $temp = _top();
    echo get_class($temp);
    die;

    а затем найти этот класс и копаться в нём.
    Ответ написан
    Комментировать
  • Как сократить данные выводимые на сайте из доп. поля?

    Javascript варианты:
    если задачу понять как "ссылки должны быть в разметке, но видна должна быть только первая", то оберните список ссылок в контейнер с фиксированной высотой и overflow: hidden.
    А если ссылки, кроме первой, не нужны - то querySelectorAll(), forEach() и remove() в помощь.
    Ответ написан
    Комментировать
  • Как реализовать мониторинг приложения на Bitrix?

    в Bitrix VA для мониторинга предлагается использовать munin и nagios. Увы, ни разу не настраивал.
    Сервер Zabbix - да, прожорлив, но на целевых машинах запускаются клиенты, а они гораздо скромнее.
    Ответ написан
    Комментировать
  • Почему страницы элементов инфоблока открывают главную страницу?

    Если я Вас правильно понял, то при переходе по ссылке на товар в каталоге отображается главная страница (хотя URL в адресной строке браузера верный). Варианта вижу два:
    1) смотрите в urlrewrite.php правила выше (то есть блихе к началу файла) того, что Вы показали в комментариях:
    'CONDITION' => '#^/catalog/#',

    Помните, что ни ключи массива ( 2 в Вашем случае ), ни параметр SORT не несут никакого смысла.

    2) что-то не так в .htaccess или в конфигурации nginx
    Ответ написан
    Комментировать
  • Как обернуть все таблицы с помощью preg_replace?

    Решение Вашего затыка - в модификаторе "s": https://www.php.net/manual/en/reference.pcre.patte...
    Ответ написан
    Комментировать
  • Как в битриксе обновить товары в заказе?

    https://dev.1c-bitrix.ru/api_d7/bitrix/sale/techni... тут вроде все расписано
    Ответ написан
    Комментировать
  • Раздувает кэш bitrix menu?

    посмотрите, есть ли в параметрах меню "учитывать группы пользователей" (MENU_CACHE_USE_GROUPS). Если есть, но проект позволяет отключить ( верно для в 99% проектов), то выключите. И в других компонентах выключите тоже
    В Битриксе кому-то взбрело в голову для уникализации анонимных ( не залогиненных) посетителей присваивать каждому случайный фейковый ID группы пользователей. Таким образом, каждый аноним ( например, боты в этом плане хороши) провоцирует новые файлы кеша.
    Ответ написан
    Комментировать
  • Почему не работает CFile::MakeFileArray(); в агенте?

    искать в проекте копию Psr\Http\Message\StreamInterface другой версии . ( Одна копия запихана в недра модуля main ).
    Ответ написан
    1 комментарий
  • Как составить SQL запрос для отчета с разным количеством строк по категории?

    если исходную таблицу можно трансформировать, то я добавил столбец item_id и получил естественный первичный ключ (department_id, type_id, item_id). Столбец item идёт в довесок и, в общем-то, не нужен.
    данные для воспроизведения:
    CREATE TABLE `items` (
      `department_id` int(10) unsigned NOT NULL,
      `type_id` int(10) unsigned NOT NULL,
      `item_id` int(10) unsigned NOT NULL,
      `item` varchar(255) NOT NULL,
      PRIMARY KEY (`department_id`,`type_id`,`item_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    
    INSERT INTO `items` (`department_id`, `type_id`, `item_id`, `item`) VALUES
    (1,	1,	1,	'1_1_0001'),
    (1,	1,	2,	'1_1_0002'),
    (1,	2,	1,	'1_2_0001'),
    (1,	3,	1,	'1_3_0001'),
    (1,	3,	2,	'1_3_0002'),
    (1,	3,	3,	'1_3_0003'),
    (1,	3,	4,	'1_3_0004'),
    (1,	3,	5,	'1_3_0005'),
    (2,	1,	1,	'2_1_0001'),
    (2,	2,	1,	'2_2_0001'),
    (2,	3,	1,	'2_3_0001');


    Запрос для решения задачи:
    SELECT t.department_id, 
    IFNULL( t1.item, '' ) as type_1,
    IFNULL( t2.item, '' ) as type_2,
    IFNULL( t3.item, '' ) as type_3,
    IFNULL( t4.item, '' ) as type_4
    FROM `items` t
    LEFT JOIN `items` t1 ON ( t.department_id=t1.department_id AND t.item_id=t1.item_id AND t1.type_id=1 )
    LEFT JOIN `items` t2 ON ( t.department_id=t2.department_id AND t.item_id=t2.item_id AND t2.type_id=2 )
    LEFT JOIN `items` t3 ON ( t.department_id=t3.department_id AND t.item_id=t3.item_id AND t3.type_id=3 )
    LEFT JOIN `items` t4 ON ( t.department_id=t4.department_id AND t.item_id=t4.item_id AND t4.type_id=4 )
    GROUP BY t.department_id, t.item_id

    Я добавил 4-й столбец для иллюстрации NULL . Таким образом, есть 2 подхода:
    1) перед конструированием знать уникальные значения столбца type_id. Тогда надо добавить в таблицу ещё один индекс ( просто INDEX) чисто по этому столбцу, для скорости предварительного запроса.
    2) предполагать максимальный type_id и тупо строить по диапазону 1..type_id_max
    Ответ написан
    4 комментария
  • Как правильно реализовать доступ по SSH?

    если просто хочется при подключении вводить что-то человеческое, а не ip, то в этом очень помогает ~/.ssh/config
    Ответ написан
    Комментировать
  • Как в map вернуть развернутый массив?

    обязательно надо через map ? Без него всё тривиально:
    func = function (arr) {
        return [].concat( ...arr );
    };

    А с ним какой-то выверт получается:
    func = function (arr) {
        let tmp = [];
        return arr.map( (item => tmp = tmp.concat(item)) ).pop();
    };
    Ответ написан
    Комментировать