Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос

Борис

Backend developer
  • 1
    вклад
  • 1
    вопрос
  • 3
    ответа
  • 33%
    решений
Комментарии
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Профили службы доставки в Битрикс. Почему не выводятся все?

    Борис @boris4682
    Получилось решить проблему?
    Написано 01 дек. 2022
  • Как запретить скидку если действует другая скидка?

    Борис @boris4682
    т.е. если пользователь будет в двух группах, то получит обе, поэтому приоритеты разные,

    Это никак не связано, если приоритеты были бы одинаковыми, то все равно обе скидки бы сработали, если у вас не стоит прекратить дальнейшее применение скидок на тек. уровне приоритетов.
    Что касается вашего вопроса: не внятно расписано, что вы хотите. Если скидка Н приоритетна и должна срабатывать тогда когда не сработали скидки А и Б, то нужно ставить ее по приоритетам выше чем эти скидки. Скидка Н для всех поэтому сначала сработает она и ставим этой скидке прекратить дальнейшее применение правил и уже она не просуммируется со скидками А и Б.
    Итого, должно получиться так.
    637357c9882d6427908364.png
    Написано 15 нояб. 2022
  • Как изменить свойство в элементе через D7?

    Борис @boris4682
    Держи будет полезно почитать, чтобы разобраться.
    Написано 11 окт. 2022
  • Как определить, является заказ новым или нет?

    Борис @boris4682
    Что в твоем понимании новый? Если не забрала еще 1С в обмен, то после обмена 1С-ка может ставить флаг. А тот флаг isNew в OnOrderSave, он будет true только при создании заказа. Если заказ уже создан и ты хочешь еще где-то попробовать узнать, то заказ уже не новый.
    Написано 11 окт. 2022
  • Как получить разделы в которых есть активные товары?

    Борис @boris4682
    tgarl, 5-10 это не так больно как в моем случае было. Где разделов 1 и 2 уровня было за 50шт. И грузилось это 10сек, на каждом хите. Написал подзапросом итог 0,5сек
    Написано 27 сент. 2022
  • Как получить разделы в которых есть активные товары?

    Борис @boris4682
    Я бы на вашем месте сделал по-другому. Приложу ниже код который использовался в другой задаче, в построении списка разделов первых двух уровней в виде дерева, т.е. родитель и дочерний раздел. Вместо того, чтобы делать запрос на кол-во элементов в цикле, можно отдать эту работу СУБД и получать эту информацию подзапросом. Код можно адаптировать под свои задачи. Все что вам нужно там есть.
    <?
    $sectionEntity = (\Bitrix\Iblock\Model\Section::compileEntityByIblock(self::IB_ID))::getEntity();
    $sectionEntity->addField(
        (
            new Reference(
                'ONE_LEVEL_UP',
                $sectionEntity,
                Join::on('this.IBLOCK_SECTION_ID', 'ref.ID')
            )
        )->configureJoinType('LEFT')
    );
    
    
    $subQueryCountAll = new \Bitrix\Main\Entity\Query(\Bitrix\Iblock\Elements\ElementPortalTable::getEntity());
    $subQueryCountAll
        ->setSelect([
            new ExpressionField(
                'COUNT_ALL',
                "COUNT(%s)",
                ['ID']
            ),
        ])
        ->setFilter([
            'ACTIVE' => 'Y',
            'IBLOCK_SECTION_ID' => new Bitrix\Main\DB\SqlExpression('%s'),
        ]);
    
    $subQuerySqlCountAll = $subQueryCountAll->getQuery();
    
    $query = new Bitrix\Main\Entity\Query($sectionEntity);
    
    $query
        ->setFilter([
            'IS_HIDE' => 'N',
            '<DEPTH_LEVEL' => 3,
        ])
            ->setSelect([
                'ID',
                'PARENT_ID' => 'ONE_LEVEL_UP.ID',
                'DEPTH_LEVEL',
                'TEXT' => 'NAME',
                'count_shown',
                'count_all',
                new ExpressionField(
                    'IS_HIDE',
                    "CASE WHEN %s = 0  THEN 'Y' ELSE 'N' END",
                    array('count_all')
                ),
            ])->setOrder(["left_margin"=>"asc"])
    
                ->registerRuntimeField('count_all', [
                    'expression' => ['(' . $subQuerySqlCountAll . ')', 'ID'] 
                ]);
    
    $result = $query->exec()->fetchAll();
    foreach($result as $key => $el){
        // Построение дерева разделов
    }
    Написано 27 сент. 2022
  • Как получить разделы в которых есть активные товары?

    Борис @boris4682
    И весь этот ужас с запросами в цикле происходит на каждом хите каталога товаров? Это в случае если ваш список разделов находится в меню.
    Написано 27 сент. 2022
  • Как проверить с помощью API существует ли Highload-блок?

    Борис @boris4682
    HighloadBlockTable - класс для работы с таблицей highload-блоков
    Написано 27 сент. 2022
  • Никак не получается сделать многоуровневое меню из инфоблока в Битрикс. Где у меня ошибка?

    Борис @boris4682
    scottparker, Он точно возвращает именно разделы
    Написано 20 сент. 2022
  • Как в Битрикс модифицировать купон на скидку при вводе?

    Борис @boris4682
    Мы на этот случай еще заводили файл, в котором был json массив всех таких купонов, которые должны быть одинаковы на всех сайта, т.е. дописываться site_id. Этот файл подгружался в template.php и передавался в script.js класс компонента и там происходила проверка, что если введенный купон в корзине, это купон всех сайтов, до сделать приписку site_id. Но такую же историю нужно будет дописать не только в компоненте sale.basket.basket, но и в компоненте sale.order.ajax, т.к. там купон будет отображаться привязанный к заказу и будет дописан Site_id нужно будет это тоже поправить
    Написано 14 сент. 2022
  • Как узнать количество товаров в битриксе?

    Борис @boris4682
    Товары лежат в инфоблоке, смотрите сколько активных элементов в инфоблоке, который является каталогом
    Написано 24 авг. 2022
  • Как задать email в CEvent::Send?

    Борис @boris4682
    Заходите в админку: Настройки - Почтовые шаблоны. Ищете там по событию "APPSWEB_NEW_LEAD" и находите нужный почтовый шаблон. И смотрите в нем какая переменная указана в качестве получателя. Вот ее и передадите своим почтовым ящиком
    Написано 23 авг. 2022
  • Как задать URL адрес ngrok?

    Борис @boris4682
    А зачем? Ngrok пробрасывает твой localhost в интернет. Он не пробрасывает только конкретный endpoint. Ты уже сам на локалхосте настрой нужную обработку в nginx'e или apache
    Написано 17 авг. 2022
  • Как одним запросом посчитать кол-во элементов по свойствам в инфоблоке?

    Борис @boris4682
    Что конкретно у вас не получилось? вы хотели чтобы каждый результат был такой строкой?
    dep1 = 2
    dep2 = 3
    dep3 = 1
    Написано 15 авг. 2022
  • Как восстановить раздел, если нет резервной копии, но есть локальная версия?

    Борис @boris4682
    BEKa T, вы удалили раздел из инфоблока. Инфоблок это обертка над таблицей, так что вы удалили данные из БД. Восстановить просто без бекапа не получится. Только вручную самому заполнить, создав раздел и элементы в нем
    Написано 15 авг. 2022
  • Как записать данные из таблицы MySQL в JSON?

    Борис @boris4682
    NewSantaClaus, Так тега php нет. Он вообще не пояснил веб это или нет. Может он настолько хорош, что выгружает файл, качает его и работает с ним на проекте. Может он так дамп бд делает)
    Написано 12 авг. 2022
  • Как записать данные из таблицы MySQL в JSON?

    Борис @boris4682
    Вот тут посмотрите, все понятно объяснено.
    Написано 12 авг. 2022
  • Как при оформлении заказа передать ID местоположения в заказ?

    Борис @boris4682
    RecentForce99, такой код должен сработать, проверил все отрабатывает.

    $propertyCollection = $order->getPropertyCollection();
                    $regionProp = $propertyCollection->getItemByOrderPropertyId(1014);
                    if($regionProp){
                        $regionProp->setValue($locationId);
                    }
    Написано 11 авг. 2022
  • Как при оформлении заказа передать ID местоположения в заказ?

    Борис @boris4682
    Нужно делать $order->save(). Посмотрите пример
    Написано 11 авг. 2022
  • Как сохранить переносы строк из textarea и как разбить массив на строки?

    Борис @boris4682
    Дмитрий, упс, увидел, что надо в docx
    Написано 10 авг. 2022
  • 1
  • 2
  • Следующие →
Самые активные сегодня
  • Drno
    • 7 ответов
    • 0 вопросов
  • vabka
    Василий Банников
    • 6 ответов
    • 0 вопросов
  • mayton2019
    • 6 ответов
    • 0 вопросов
  • Evgenii
    • 5 ответов
    • 0 вопросов
  • OpenAI
    OpenAI
    • 5 ответов
    • 0 вопросов
  • firedragon
    Владимир Коротенко
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации