Задать вопрос
  • Как вывести св-во инфоблока в любой файл?

    @tgarl
    Просто так где угодно ничего не выводится. Нужно написать запросы для получения нужных данных, для этого в битриксе есть свое API.
    Например список элементов инфоблока с их полями или свойствами можно получить через https://dev.1c-bitrix.ru/api_help/iblock/classes/c..., если нужно конкретного элемента зная его ID https://dev.1c-bitrix.ru/api_help/iblock/classes/c... ну и так далее все завит от задачи.

    Вы вырвали кусок кода из шаблона какого компонента(компонент это целый набор кода с настройками, запросами и шаблоном вывода на экран), поэтому вырванный кусок на других страницах работать не будет, так как для других страниц это просто неизвестные данные
  • Падение mysql сервера отказ входа в админ панель bitrix?

    @tgarl
    MJ98, вам выдало что для более полной информации используйте journalctl -xe. А так почитайте статью на которую дал ссылку Виктор Таран.
    Проверить доступы: у вас запуск выдает failed, значит с доступами все ок.
  • /upload/iblock занимает огромное количество места, что делать?

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

    @tgarl
    Пробую просто скопировать ссылку и вставить в браузер, все равно не открыает.

    я так понял что и файла нет, раз файл есть, то он просто поврежден. Нужно перезагружать картинку заново.
  • Почему могут не отображаться изображения товаров?

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

    @tgarl
    работали нормально, потом через некоторое время немного доработал,

    скорее всего какую-то динамичискую обработку вы занесли в кеш. В этом случае получается что кеш вам выдает html страницу , а ваш обработчик который вы ожидали что что-то проверит , проставит значения не загружается. вот и результат. Чаще всего такое бывает когда в шаблоне компонента используют еще компоненты и получается чтобы отработал 2 компонент нужно чтобы первый не кешировался. При сбросе кеша получается что первый компонент должен выполнится полностью и как раз в этот момент начинает работать 2. Решение: вынести динамическую часть(компонент2 если я правильно догадался о проблеме) component_epilog.php
  • Как правильно сформировать таблицу с размерами и цветами?

    @tgarl
    У вас есть массив $arResult['OFFERS']
    заводите новую переменную и в цикле ее заполняете примерно так
    $arPoColor=[];
    
    foreach($arResult['OFFERS'] as $newEl){
    $arPoColor[$newEl['PROPERTIES']['код свойства содержащий цвет']['VALUE']][]=$newEl;
    }
    
    //а дальше уже где рисуете таблицу используете не $arResult['OFFERS'], а $arPoColor
  • Как выводить элементы в определенном порядке?

    @tgarl Автор вопроса
    Тоже не подходит, версия битрикса ниже чем появилась данная возможность
  • Как выводить элементы в определенном порядке?

    @tgarl Автор вопроса
    Вы немного недопонимаете, что мне нужно. В комментарии у Ирины я описал структуру которую имеем и что хотим. Я не могу воспользоваться такой сортировкой по нескольким причинам: это не разовая ситуация, а каждодневная почти, второе, сортировка нужна не на одной странице, а на разных и для каждой своя, третье, сортировка значений свойств нужна в другом месте.
  • Как выводить элементы в определенном порядке?

    @tgarl Автор вопроса
    Мне стоит наверное расписать как устроен раздел для которого это нужно.
    Есть каталог, элементы которого выгружаются из 1С. Товаров много. Сортировка каталога идет общая своя:
    1. распродажный товар или нет,
    2. новинка или нет
    3. по цене
    У товаров есть свойства линия и бренд.
    Значений брендов что-то около 300, значений линий Если я не ошибаюсь около 10-15000.(тип свойства список). Периодически в каталоге создаются разделы(спецстраницы, 2-3 в неделю, старые могут как оставаться, так и удалятся) со списком фильтров(в свойстве раздела прописывается). Для таких разделов выводятся товары по фильтру, а не по привязке(такие разделы пустые).
    Так вот последние желания появились, что в одном таком разделе требуется чтобы определенная линия шла первой, в другом бренд, в третьем 2 линии, а потом остальные и т.д. До текущего момента хватало сортировки по другим свойствам, чтобы на первые строчки выходило хотя бы 5-10 нужных товаров. Теперь нет.

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

    @tgarl Автор вопроса
    Этот вариант не подойдет. У меня нет сортировки у бренда. И это свойство элемента, не отдельный инфоблок.
  • Как выводить элементы в определенном порядке?

    @tgarl Автор вопроса
    Я рассматривал этот вариант, но он плох тем, что придется на каждое желание его переписывать. Сейчас хотят одну линию, завтра другую для конкретного раздела и т.д.
    Этот вариант не очень хочется, так как на каждый чих писать новый обработчик заполнения свойств + их дублеж когда начнутся для одного раздела так для другого по другому
  • Как пересчитать заказ с учетом всех скидок с использованием события OnSaleOrderSaved?

    @tgarl Автор вопроса
    Я сначала и хотел на событии до сохранения, но на этом событии у меня нет отгрузки почему-то, а если я пытаюсь ее создать и сохранить, то в заказе вообще отгрузка не создается.
  • Как пересчитать заказ с учетом всех скидок с использованием события OnSaleOrderSaved?

    @tgarl Автор вопроса
    Оформление заказа старое, в нем нет D7, соответсвенно нет обработок ExtraServices. Как добавить выбор допуслуг на старом API я не нашел. Поэтому остается вариант событий. У события "перед сохранением" нет еще отгрузок, а у после сохранения (OnSaleOrderSaved) не могу пересчитать заказ со всеми скидками.
  • Как пересчитать заказ с учетом всех скидок с использованием события OnSaleOrderSaved?

    @tgarl Автор вопроса
    и вызываю пересчет
    $basket->refreshData(array('PRICE', 'COUPONS'));
    $discount->calculate();


    если на отдельной странице вызвать
    spoiler

    $order_resave = \Bitrix\Sale\Order::load($now_order_id);
                $discount = $order_resave->getDiscount();
                \Bitrix\Sale\DiscountCouponsManager::clearApply(true);
                \Bitrix\Sale\DiscountCouponsManager::useSavedCouponsForApply(true);
                $discount->setOrderRefresh(true);
                $discount->setApplyResult(array());
    
                if (!($basket = $order_resave->getBasket())) {
                   throw new \Bitrix\Main\ObjectNotFoundException('Entity "Basket" not found');
                }
    
                $basket->refreshData(array('PRICE', 'COUPONS'));
                $discount->calculate();
    
                $order_resave->setField("PRICE", $order_resave->getPrice());
                $order_resave->save();


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

    @tgarl
    Возможно какое-то ограничение в настройках сервера на одномоментное количество записей в файл. Столкнулся с похожей проблемой(и пришел к такому выводу), причем не предсказуемо где это проявится, а где нет. Например, на главной странице file_put_contents без вопросов всегда выполняется, а в контактах вставляешь тот же код фиг вам. Через пару недель наоборот. Из-за такой ситуации картинки в каталоге пропадают - файлы просто не сохраняются на сервере с выгрузкой, а в файле иморта указаны, поэтому старые затираются, а новых нет. Найдете причину отпишитесь, может и нам поможет.
  • Узнать купоны введенные пользователем в Bitrix?

    @tgarl
    Возможно вы что-то не так делаете. Мой пример выдает результат если купон был применен в корзине, но еще заказ не оформлен. Если нужно у сущестующего заказа, то
    сначала нужно заказ подгрузить
    $order = Bitrix\Sale\Order::load($order_id);
    далее
    
    $discounts  =  $order ->getDiscount();
     $res  =  $discounts ->getApplyResult();
    
    foreach($res['COUPON_LIST'] as $cupo_n=>$ar_r){

    кроме того может быть скидка без купона, тогда ключа COUPON_LIST не будет
    распечатайте массив $res и посмотрите что в нем получается
  • Как сделать акцию в битриксе 3 товара по цене 2?

    @tgarl Автор вопроса
    Ну думаю не последний раз у нас такая акция, перед следующим запуском протестирую ваше решение, возможно из описания я не все возможности увидел и понял. В моем решении периодически проскакивают ошибки - мой вариант сильно не оптимизирован(если кто-то им будет пользоваться учтите этот момент) и грузит сайт, что выдает иногда непредсказуемый результат например на 50 товаров 30 по цене 0. А вынос скидочного товара в отдельную позицию плохо сказывается на обмене с 1С(объединяет либо игнорирует товар ) и пересчет заказа у нас на сайте его удваивал.
  • Как сделать акцию в битриксе 3 товара по цене 2?

    @tgarl Автор вопроса
    Модуль полезный, но не подходит для моей задачи.

    Он не определяет самый дешевый товар, 3 товар это количественный или позиционный?
    если я закину 1 позицию на 3 ед по 10р и 1 позицию на 1 ед по 9р:
    итог скидка должна быть на товар за 9 рублей и не важно в какой последовательности я закину товары.

    если 1 позиця на 3 ед по 10 -> должна быть скидка на 10р
    если 1 позиция на 4 ед по 10р и 1 позиция по 2 ед на 11 -> мы должны получить скидку на 20р

    т.е. каждая самая дешевая 3 единица должна быть бесплатно