Задать вопрос
  • Как из переменной получить значение, а не строку?

    @tgarl Автор вопроса
    И если значение переменной - имя другой переменной с $, скорее всего, это означает, что где-то выше по коду именно этот текст ей и присваивается.

    Это логично.

    Только речь идет о кастомизации условий скидок, поэтому эти данные наследуются из ядра, а не устанавливаются пользователем. И судя по всему вы не сталкивались с задачей написания своих условий.

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

    я передаю , '".$arParams['FIELD']."'
    а нужно без кавычек
    , ".$arParams['FIELD']."

    Я же сразу сказал, что проблема решается очень просто, только я не вижу ошибки
  • Как из переменной получить значение, а не строку?

    @tgarl Автор вопроса
    К чему то?

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

    @tgarl Автор вопроса
    какая мешанина?
    вот метод Generate, делаем в нем распринтовку при сохранении скидки
    public static function Generate($arOneCondition, $arParams, $arControl, $arSubs = false)
        {
           
    		file_put_contents($_SERVER["DOCUMENT_ROOT"]."/event111.txt", "\n\n** ".date("d.m.Y H:i:s")." ****". __FILE__ ." ". __LINE__ ."****E **row arParams****\n".print_r($arParams, true), FILE_APPEND | LOCK_EX);
    		
    $strResult  = "self::checkField('".$arControl['FIELD']."', '".$arOneCondition["value"]."', '".$arParams['FIELD']."')===".$logic;
            return  $strResult;


    получаем
    Array
    (
        [FIELD] => $arProduct
    )


    нет ничего лишнего.

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

    @tgarl Автор вопроса
    я когда-то сталкивался с такой проблемой, решалась она очень просто, но вот как - ни вспомнить не решить не получается
  • Как из переменной получить значение, а не строку?

    @tgarl Автор вопроса
    в смысле потеряна кавычка?
    вот $arParams
    Array
    (
        [FIELD] => $arProduct
    )

    соответсвенно если я сохраняю правило как указал выше, то в обработку уходит не массив, а строка $arParams['FIELD'], т.е. по сути тоже самое что если написать '$arProduct'
  • Как применить купон в оформлении заказа?

    @tgarl
    Попробуйте поменять последовательность действий.
    Корзину берите того пользователя на кого заказ формируете.
    т.е. сначала узнаете на кого заказ делать
    if ($arFields['USER_AUTH'] == "'Y'") {
                $registeredUserID = $arFields['USER_ID'];
            } else {
                $registeredUserID = Site::createUser([
                    'NAME' => $name,
                    'PERSONAL_PHONE' => $phone,
                    'EMAIL' => $email,
                ]);
            }
            if (!$registeredUserID) {
                array("STATUS" => "ERROR", "MESSAGE" => "Ошибка при оформлении заказа");
            }

    после уже

    if(intval($registeredUserID)>0){//все ок и мы получили пользователя, можем работать дальше
    
    $fuser=\Bitrix\Sale\Fuser::getIdByUserId($registeredUserID);
    \Bitrix\Sale\DiscountCouponsManager::init();
    
    //очищаем список купонов для данного хита 
    \Bitrix\Sale\DiscountCouponsManager::clear(); 
    
    //удаляем если что-то есть в корзине
    \CSaleBasket::DeleteAll($fuser,false);
    
    // Получение корзины для текущего пользователя
    $basket = \Bitrix\Sale\Basket::loadItemsForFUser( $fuser, 's1' );
    
    \Bitrix\Sale\DiscountCouponsManager::add($coupon);
    
    $item = $basket->createItem("catalog", $productId);
    $item->setFields($product);
    
    ...
    
    //Сохранение изменений корзины
    $basket->save();
    
    //теперь создаем заказ к которому привяжем готовую корзину
    $order = \Bitrix\Sale\Order::create($siteId, $registeredUserID);
    
    ...
    //купон уже был применен, к текущей корзине пользователя, поэтому в заказе использовать уже не нужно будет
    $result = $order->save();
    }
  • Почему отображаются не все статусы заказов?

    @tgarl
    да, поэтому я и написал, что в проверке сайта будет ошибка.

    Мы столкнулись когда попросили вебстудию настроить маркировку нам, а для этого нужно было обновить битрикс, а чтобы его обновить, нужно было обновить версию php))
    они обновили и пол сайта перестало отображаться. Они ковырялись-ковырялись, в итоге сослались на то что в договоре не было указано, что они должны весь сайт перевести на новые параметры, ковыряйтесь сами(при этом часть админки не отображалась - пустота вместо текстов), мы вам главное по договору настроили- настроили все, оплатите и разбирайтесь с остальным сами. Вот я и сидел разбирался и выяснил, что да битрикс требует ее удалить если эта опция есть, но если поставить старую, то будет все работать.
  • Как клонировать элемент если в количестве указанно "2"?

    @tgarl
    )) просто привычка, да и так было нагляднее для понимания что я имел ввиду
  • Как клонировать элемент если в количестве указанно "2"?

    @tgarl
    А сам цикл for вы расписали или просто скопировали как у меня? Я просто в общих чертах указал применение без синтаксиса, мало ли каким вы решите воспользоваться(есть for, foreach, while)
    например:
    $x=0;
    while ($x++<$A){
    ...
    }
    
    //или 
    for ($x=0; $x<$A; $x++){
    ...
    }
  • Из-за чего компонент может вызывать ошибку при загрузке страницы в режиме инкогнито?

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

    @tgarl
    просто в админке все работает

    Что значит в админке? У вас шаблон выводится в публичной части сайта и в административной?

    Предположу, что вы имеете ввиду под "админкой" - авторизацию под админом, тогда скорее всего у вас кеш. Вы используете/подключаете динамическую часть в кешируемой области. Попробуйте сбросить кеш на сайте, затем посмотреть если сначала все заработает, а потом опять пропадет, значит вы расположили что-то как я сказал выше не там. Если не пропадет, значит все хорошо, просто после изменний вы не сбросили кеш компонента и не пришло его время обновления.
    Еще вариант если у вас включен композит на сайте(опять же вариант кеша) - то нужно смотреть что у вас с динамикой попадает в статическую область.
  • Можно ли оформлять заказы без авторизации?

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

    @tgarl
    мне думается вы не то хотите сделать.
    Вот вы сохранили картинку file_put_contents($file, $data). Все дальше работаете с ней.

    Я так понимаю у вас после отображения картинки появится кнопка типа заказать или нет?
    так вот по клику на нее передаете путь к вашей картинке, в том же скрипте вы будете создавать/добавлять элементы не знаю каталога или корзины или еще чего-то.

    Вы сначала определитесь с процессом. У вас с этим не понятно что и как.
  • Как списках заказа получить заказы со всех сайтов при многосайтовости?

    @tgarl Автор вопроса
    Я так понимаю другого варианта как выпилить из компонента SITE_ID нет(
  • Почему не выгружаются товары из 1С в Битрикс?

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

    @tgarl Автор вопроса
    Заменил на AVTOR, не работает.
    Любое новое свойство не работает, попробовал привязку к элементу другого инфоблока, тоже нет.
    Не понимаю причину
  • Как через ORM правильно сохранить значения в свойства инфоблока?

    @tgarl Автор вопроса
    Строка, не множественное.

    Пока сделал так, но понять бы что не так я сделал
    if ($result->isSuccess()) {
             $elementId=$result->getId();
    	\CIBlockElement::SetPropertyValuesEx($elementId, false, ['MANAGER'=>$this->data['manager'] ]);
     // далее пересохраняем объект еще раз
    
    }


    И из-за этого приходится менять событие с добавления элемента, на обновление элемента
  • Как через ORM правильно сохранить значения в свойства инфоблока?

    @tgarl Автор вопроса
    FeedbackForm - Это API код инфоблока

    соответсвенно подключается таким образом
    use \Bitrix\Iblock\Elements\ElementFeedbackFormTable;
  • Как обновить certbot на centos 7?

    @tgarl Автор вопроса
    Это я видел, сильно эта тема не в помощь.
  • Как добавить в свойство заказа типа Строка html со ссылкой?

    @tgarl
    Т.е. вы хотите чтобы содержимое стало версткой.
    В стандартном варианте никак.

    Но попробуйте на базе события OnAdminSaleOrderView поковыряться, может получится(не пробовал такое)
    Еще как вариант если хорошо дружите с js, то создаете, если нет такого, файл /bitrix/php_interface/admin_header.php
    В нем при помощи скрипта ищите в DOM ваше свойство и его значение, далее приводите к правильному виду и обратно вставляете.

    Можно еще рассмотреть один из вариантов описанных тут, может вам подойдет https://dev.1c-bitrix.ru/learning/course/index.php...