Задать вопрос
  • У кого-нибудь есть демо-версия битрикса версии 17.0?

    @tgarl Автор вопроса
    Для моей задачи подойдет именно дистрибутив с чистой установкой(просто файлы не подойдут), не все же через bitrixsetup ставят, кто-то и скачивает .zip или .tar Потому как больше именно на наличие в ядре тех или иных методов завязано. А разница в 5 версий достаточно большая.

    А с бекапом нет вариантов просто по причине того что проект на сервере занимает 90% места из 512 гигов, соответсвенно бекап не сделаешь, да и у меня локально нет столько места, даже половины. Отдельный сервер тоже никто не предоставит и не оплатит. Отказаться не могу это не фриланс.
  • Битрикс - почему не применяется купон к заказу?

    @tgarl
    попробуйте код немного изменить
    $discountOrder = Sale\Order::load($orderId);
    
            Sale\DiscountCouponsManager::add($coupon);
            $discounts = $discountOrder->getDiscount();
    		$discounts->setOrderRefresh(true);
            $discounts->calculate();
            //$discountOrder->refreshData();
    		$basketOrder = $discountOrder->getBasket();
    		$basketOrder->refreshData(["PRICE", "COUPONS"]);
    		$discountOrder->doFinalAction(true);
            $discountOrder->save();
  • Битрикс - почему не применяется купон к заказу?

    @tgarl
    То что вы неоднократно писали это хорошо, но мы не видим ваши настройки, а вы хотите помощь коллективного разума, вот и приводим возможные варианты.
    Вы показали настройки "действия и условия", а ограничения проверили? там точно нет ограничения на пользователей
  • Битрикс - почему не применяется купон к заказу?

    @tgarl
    Как вам и сказали упростите правила вашей скидки в первую очередь, так будет нагляднее.
    например может быть у вас есть ограничение по пользователю в одном случае работает в другом нет или ещё какое условие. Потому как раз у вас в списках есть скидка, но нет от неё эффекта, то вероятность того что проблема в условиях очень высока, нужно понять в каких именно убирая по одному начиная с ограничения по пользователям.

    а вообще вот вы привели код который не работает и я вижу там очистку буфера, а она вам нужна? вы вроде как не используете подключение обычного хедера, а он много чего очищает.
  • Как в битрикс в админке редактировать css и js файл?

    @tgarl
    Я вроде как написал, что это опасно. Но если знаешь точно, что делаешь, то вероятность минимальная. Редактировать файл как PHP в целом безопасный режим редактирования через админку. Опасность заключена в том, что сервер может быть не настроен хорошо или при сохранении в коде была допущена ошибка. Это не режим html на который действуют определенные правила и из-за их незнание/несоблюдение ломает большинство.

    Но в вопросе шла речь о редактировании только файлов JS и CSS, а тут режиму редактирования php ломать нечего, и если это делать под админом, а не редактором, то ничего не сломается.

    Вообще для проектов которые предполагается что будут поддерживать/править люди не знающие более -менее Битрикс обычно заводят для таких правок всякие custom.css и custom.js которые можно править не боясь
  • Кнопка загрузки файла в настройках модуля?

    @tgarl
    С моей стороны никаких шуток не было. Зачастую автор вопроса сам его задает в таком ключе(я не исключение, сам косноязычен сильно, в этом плане есть очень хорошая фраза - правильно поставленный вопрос это половина решения задачи ), что кроме как ответить в таком же никто не может.

    Одно дело, как подобные вещи реализуются на простой php-страничке, и другое - в рамках структуры модуля Bitrix

    Страница настроек модуля это та же php страница и с ней можно работать так же как и с любой страницей на сайте, вплоть до размещения на ней компонента(сам так делал, единственное управление параметрами только напрямую через код). Я например со страниц настройки модуля отправляю запросы в папку /ajax и не парюсь. Так что если вы понимаете как пользоваться и обрабатывать input type="file", то большего вряд ли вы найдете, все остальное на ваше усмотрение.
  • Кнопка загрузки файла в настройках модуля?

    @tgarl
    То есть, вы утверждаете, что если приведенный выше код разместить в любом php-файле модуля, то на странице настроек модуля появится кнопка... Правильно?

    нет, это все нужно прописать вам самому на странице модуля. т.е. открываете свою страницу модуля туда прописываете кнопку далее прописываете сохранение переданного файла через эту кнопку по своему постоянному пути. По другому никак. и согласно того как была описана задача вам дали очень точный ответ
    Нужно добавить на страницу настроек модуля кнопку для загрузки файла. Кнопка должна открывать окно выбора файла на компьютере
    именно это и делает данная кнопка

    а вот обработку действия сохранения файла по нужному пути и размещение этой кнопки на нужной вам странице за вас никто сделать не сможет. А по поводу статей как это делается скопируйте в любой поисковик код кнопки и почитаейте наиболее понравившуюся статью.
  • Как дать скидку на произвольную сумму в момент оформления заказа, чтобы не затронуть остальные скидки?

    @tgarl Автор вопроса
    Нашел ошибку - ключ должен быть не MODULE_ID, а MODULE. 100 раз смотрел на распринтовку и не видел отличия
  • Как дать скидку на произвольную сумму в момент оформления заказа, чтобы не затронуть остальные скидки?

    @tgarl Автор вопроса
    Столкнулся с проблемой, никак понять не могу как побороть, если в изначальной скидке завести ограничения по свойствам товаров, то требуются еще методы DiscountModuleTable::updateByDiscount и DiscountEntitiesTable::updateByDiscount.
    Первый отрабатывает нормально, а вот со вторым никак не выходит
    он не отрабатывает и скидка не активируется

    делаю так
    //получаем базовую информацию
    $entityList2 = \Bitrix\Sale\Internals\DiscountEntitiesTable::getByDiscount([$idProto], array());
    //собираем весь массив рекурсивно
    		$entityListItogo = \entitirequrs($entityList2);

    в итоге вместо общего получаю частный
    //вместо такого
    Array
    (
        [main] => Array
            (
                [USER] => Array
                    (
                        [USER_ID] => Array
                            (
                                [MODULE_ID] => main
                                [ENTITY] => USER
                                [FIELD_ENTITY] => USER_ID
                                [FIELD_TABLE] => USER_ID
                            )
    
                    )
    
            )
    
        [catalog] => Array
            (
                [ELEMENT_PROPERTY] => Array
                    (
                        [PROPERTY_203_VALUE] => Array
                            (
                                [MODULE_ID] => catalog
                                [ENTITY] => ELEMENT_PROPERTY
                                [FIELD_ENTITY] => PROPERTY_203_VALUE
                                [FIELD_TABLE] => 26:203
                            )
    
                        [PROPERTY_198_VALUE] => Array
                            (
                                [MODULE_ID] => catalog
                                [ENTITY] => ELEMENT_PROPERTY
                                [FIELD_ENTITY] => PROPERTY_198_VALUE
                                [FIELD_TABLE] => 26:198
                            )
    
                        [PROPERTY_440_VALUE] => Array
                            (
                                [MODULE_ID] => catalog
                                [ENTITY] => ELEMENT_PROPERTY
                                [FIELD_ENTITY] => PROPERTY_440_VALUE
                                [FIELD_TABLE] => 26:440
                            )
    
                    )
    
            )
    
    )
    получаю такой
    Array
    (
        [0] => Array
            (
                [MODULE_ID] => main
                [ENTITY] => USER
                [FIELD_ENTITY] => USER_ID
                [FIELD_TABLE] => USER_ID
            )
    
        [1] => Array
            (
                [MODULE_ID] => catalog
                [ENTITY] => ELEMENT_PROPERTY
                [FIELD_ENTITY] => PROPERTY_203_VALUE
                [FIELD_TABLE] => 26:203
            )
    
        [2] => Array
            (
                [MODULE_ID] => catalog
                [ENTITY] => ELEMENT_PROPERTY
                [FIELD_ENTITY] => PROPERTY_198_VALUE
                [FIELD_TABLE] => 26:198
            )
    
        [3] => Array
            (
                [MODULE_ID] => catalog
                [ENTITY] => ELEMENT_PROPERTY
                [FIELD_ENTITY] => PROPERTY_440_VALUE
                [FIELD_TABLE] => 26:440
            )
    
    )

    далее вызываю обновление
    \Bitrix\Sale\Internals\DiscountEntitiesTable::updateByDiscount($DISCOUNT_ID, $entityListItogo, false);


    но таблица b_sale_discount_entities остается пустой и скидка не работает
  • Как сделать рамку в виде продолжения цифры?

    @tgarl Автор вопроса
    или чтобы текст обтекал цифру?
  • Как сделать рамку в виде продолжения цифры?

    @tgarl Автор вопроса
    Спасибо, круто.
    А если нужно также, но цифра за пределами рамки?
  • Как дать скидку на произвольную сумму в момент оформления заказа, чтобы не затронуть остальные скидки?

    @tgarl Автор вопроса
    Отмечаю решением. Спасибо. Решил все же остановится на копировании скидки, посидел-подумал, там не должно быть более пары сотен скидок в месяц создаватся, а скидки которым больше месяца буду удалять чтобы не загромождали
  • Как дать скидку на произвольную сумму в момент оформления заказа, чтобы не затронуть остальные скидки?

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

    Есть мысль с кастомной скидкой завязанной на купоны и сохранением суммы скидки и пользователя в справочнике, но возник вопрос внутри скидки я могу понять какой купон её вызвал? т.е. на уровне метода generate могу я узнать каким купоном был вызван метод расчета или нет?
  • Как дать скидку на произвольную сумму в момент оформления заказа, чтобы не затронуть остальные скидки?

    @tgarl Автор вопроса
    // заменяем id пользователя
    $dctPrototype['CONDITIONS_LIST']['CHILDREN'][0]['DATA']['value'][0] = $UserId;


    а почему тут должен быть $UserId?
    у меня вообще при распринтовке
    [PRIORITY] => 149
        [LAST_DISCOUNT] => N
        [LAST_LEVEL_DISCOUNT] => Y
        [VERSION] => 3
        [CONDITIONS_LIST] => Array
            (
                [CLASS_ID] => CondGroup
                [DATA] => Array
                    (
                        [All] => AND
                        [True] => True
                    )
    
                [CHILDREN] => Array
                    (
                    )
    
            )
    
        [UNPACK] => function($arOrder){return ((1 == 1)); };
        [ACTIONS_LIST] => Array

    может нужно ACTIONS_LIST править?
    [ACTIONS_LIST] => Array
            (
                [CLASS_ID] => CondGroup
                [DATA] => Array
                    (
                        [All] => AND
                    )
    
                [CHILDREN] => Array
                    (
                        [0] => Array
                            (
                                [CLASS_ID] => ActSaleBsktGrp
                                [DATA] => Array
                                    (
                                        [Type] => Discount
                                        [Value] => 15
                                        [Unit] => Perc
                                        [Max] => 0
                                        [All] => AND
                                        [True] => True
                                    )

    но тут [Value] => 15 это величина скидки, а не id пользователя

    и ещё сразу вопрос если я добавлю скидку вот таким образом
    $result = \Bitrix\Sale\Internals\DiscountTable::add($dctPrototype);

    это же ведь копия текущей? И если использовать этот метод я получу +100500 скидок в которых просто потеряюсь
  • Где создаётся пользователь при оформлении заказа в 1с-битрикс?

    @tgarl
    Нужно перенести компонент в свое пространство имен(так как все что лежит вот тут /bitrix/components/bitrix/ править нельзя) и изменить его логику
  • Почему не выводятся свойство типа файл в news.list?

    @tgarl
    Хорошо что разобрались).

    Вы используете var_dump и я так понимаю плохо ориентируетесь по полученному дереву массива
    Используйте такую комбинацию
    echo "<pre>";print_r($value);echo "</pre>";
    так будет для вас нагляднее пока не привыкнете, а потому уже вернетесь к более информативному выводу
  • Как сделать редирект из телеграма в браузер?

    @tgarl Автор вопроса
    либо я не понимаю как это использовать либо мне не подходит, но при таком раскладе это не работает
    $inline_keyboard_auth=[
    			[
    				[
    					'text' =>'Кнопка',
    					'callback_data' => 'k_btn,
    					"web_app"=> [
    						"url"=>"https://revenkroz.github.io/telegram-web-app-bot-example/index.html"
    					]
    				]
    			]
    		];

    'callback_data' => 'я получаю, обрабатываю и возвращаю ответ что все супер, но ридерект как в этом случае на браузер сделать?
  • Почему спам-бот обходит серверную валидацию данных формы?

    @tgarl
    У вас вся проверка по сути сводится к foreach ( $_POST as $key => $value ) - т.е. вы считаете что должен прийти массив, но нигде нет проверки что действительно пришел _POST и это массив., а без этого если передан гет или вообще никакие данные не переданы вы не проверяете от слова вообще