Задать вопрос
Ответы пользователя по тегу 1С-Битрикс
  • Bitrix пропадает привязанные элементы сами?

    @tgarl
    скорее всего срабатывает какое-то событие по обновлению элементов(тут вам виднее какое обновление элементов происходит с некой периодичностью), например какого-то свойства, и обновление происходит через element->Update, при этом свойства не перечислены все, вот не перечисленные и пропадают.
    Ответ написан
  • Почему может не работать 404 ошибка?

    @tgarl
    Либо в настройках компонента не включена настройка, либо если это старый сайт(т.е. каталог был настроен несколько лет назад когда настроек не было) никто не прописал проверку в комплексный.
    Ответ написан
    Комментировать
  • Как правильно удалить модуль из bitrix?

    @tgarl
    Все установленные модули удаляются на странице Рабочий стол -> Marketplace -> Установленные решения
    /bitrix/admin/partner_modules.php?lang=ru

    Если по какой-то причине удаления не происходит, нужно либо задать вопрос разработчикам, либо посмотреть что и куда он устанавливал (через ftp перейти в папку модуля и посмотреть файл index.php в папке install)
    Ответ написан
    Комментировать
  • Падение mysql сервера отказ входа в админ панель bitrix?

    @tgarl
    Проверьте место на сервере. Возможно оно закончилось. через консоль команда df -h
    если с местом все ок, то проверьте статус mysql, если ошибка просто попробуйте стартануть ее. а вот если не взошло то придется разбираться. А и еще проверьте, доступы не меняли случаем, было такое, как-то сталкивался
    Ответ написан
    7 комментариев
  • Почему при синхронизации 1С и Битрикс происходит конфликт между инфоблоками?

    @tgarl
    Скорее всего время выгрузки из 1С пересекается.

    При обработке выгрузки данные из файлов записываются во временную таблицу с названием b_xml_tree. И если выгрузки у вас по времени пересекаются, то во время разбора файлов идет запись в одну и туже таблицу. Вот и получается один скрипт еще с этой таблицей работает , а вы уже второй направили туда же. Запись появилась - да, обработать нужно - да, вот и получается первый скрипт так как еще не закончил работу с этой таблицей, то увидел в ней новые записи и обработал их.
    Ответ написан
    Комментировать
  • Bitrix купон применяется, но не показывает что он использован?

    @tgarl
    Подпишусь на эту тему, вдруг когда-нибудь кто-то выяснит причину.
    Подтверждаю, если на сайте активно используются скидки + скидки по купонам, то периодически сталкиваешься с такой же ситуацией. Купон применяется в заказе, но не деактивируется. Следовательно его можно повторно использовать. А иногда и не один раз.
    Я для поиска таких периодически использую скрипт
    \Bitrix\Sale\Internals\DiscountCouponTable::getList - берем активные купоны по определенной скидке
    $rsSales = CSaleOrder::GetList(array("DATE_INSERT" => "ASC"), $arFilter); - проверяем заказы на наличие этих купонов
    "BASKET_DISCOUNT_COUPON" => $coupon['COUPON'], - фильтр для заказов
    сохраняем себе список заказов если нашел такие и далее решается что с этим делать

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

    @tgarl Автор вопроса
    Нашел решение: необходимо для групп пользователей прописать Маска сети для привязки сессии и Маска сети для привязки сохраненной авторизации 0.0.0.0
    Ответ написан
    Комментировать
  • Отправка информации из заказа BITRIX на электронную почту?

    @tgarl
    Для этой задачи используют события https://dev.1c-bitrix.ru/api_help/main/events/onbe...
    Есть ли готовые модули не подскажу.
    Ответ написан
    Комментировать
  • Как сделать нестандартную детальную страницу новостей?

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

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

    @tgarl
    Судя по всему у вас не корректно цикл сформирован.
    вы сначала получили сетку размеров, тут наверное я бы то же по этому пути пошел,
    а затем по каждому ТП отмечаете строчку.
    вам же нужно сформировать массив наподобие
    'цветной'=>[44,46,48,50]
    'не цветной'=[свои размеры]

    и вот по нему уже заполнять таблицу
    Ответ написан
  • Можно ли в оформление заказа отдавать более 1го Email?

    @tgarl
    Заведите дополнительное свойство заказа. А на событии отправки писем добавьте проверку на заполненность этого дополнительного свойства и если заполнено, то содержимое в поле копия прописывайте.
    Ответ написан
    Комментировать
  • Почему битра отвечает "200 OK" на несуществующие в url-е section_code?

    @tgarl
    Потому что по умолчанию проверяется не весь путь, а только та часть которая отвечает за вывод или раздела или товара.
    В последних версиях настроек компонента есть галочка проверять весь путь(не помню как точно она обзывается) включите ее, тогда будет проверяться именно весь путь. Если такого нет, то придется вам самому делать такую проверку. Просто ЧПУ это правило подмены гет запроса вида 'RULE' => 'SECTION_CODE=$1&ELEMENT_CODE=$2',
    когда загружается раздел проверяется только SECTION_CODE=$1, когда товар только ELEMENT_CODE=$2 - одним словом это древняя тема которая тянется с первых версий существования битрикса.
    Ответ написан
    2 комментария
  • Как создать скидку 10% в корзине только на товары добавленных линий более 2 штух?

    @tgarl Автор вопроса
    Решил.
    1. Есть событие на действия и условия. Нужно различать когда когда и какое использовать(это была моя главная ошибка)
    2. в моем случае нужно использовать OnCondSaleActionsControlBuildList, а не OnCondSaleControlBuildList
    3. само решение:

    public static function Generate($arConditions, $arParams, $control, $subs = false)
        {
    
            $resultValues = array();
            $arValues = false;
    
            if (is_string($arControl))
            {
                $arControl = static::GetControls($arControl);
            }
            $boolError = !is_array($arControl);
    
            if (!$boolError)
            {
                $arValues = static::Check($arOneCondition, $arOneCondition, $arControl, false);
                $boolError = (false === $arValues);
            }
    
    
            if($arOneCondition['logic']=='Equal')
            {
                $logic='true';
            }
            else
            {
                $logic='false';
            }
    $strResult  = '(SaleActionDeactivateDiscount::qDiscAction('.$arParams['BASKET_ROW'].','.$arConditions['value'].'))=='.$logic;
            return  $strResult;
    
        }
     public static function qDiscAction($row,$arCond)
        {
    //пришлось использовать \Bitrix\Sale\Basket::loadItemsForFUser, т.к. кроме $arParams['BASKET_ROW'] другие параметры по какой-то причине пустые и при попытке их передать в свою функцию напрочь ломают скидки
    		$basket = \Bitrix\Sale\Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(), 's1');
    		$linia=[];
    		foreach ($basket as $basketItem) {
    			$mxResult = \CCatalogSku::GetProductInfo($basketItem->getProductId())['ID'];
    			$dbEl = \CIBlockElement::GetList(array('sort' => 'asc'), array('ID' => $mxResult), false, false, Array('ID','PROPERTY___2'));
    			while($obEl = $dbEl->Fetch())	
    			{
    				$linia[$obEl['PROPERTY___2_VALUE']]['ID'][]=$basketItem->getProductId();
    				$linia[$obEl['PROPERTY___2_VALUE']]['CNT']+=$basketItem->getQuantity();
    			}			
    		}
    		
    		foreach($linia as $ln=>$massa){
    			if($massa['CNT']>=$arCond && in_array($row['PRODUCT_ID'],$massa['ID'])){
    				return false;
    			}
    		}
    		
           return true;
        }
    Ответ написан
  • Как пересчитать заказ с учетом всех скидок с использованием события OnSaleOrderSaved?

    @tgarl Автор вопроса
    Я был не прав что отказался от before. Нужно все же на событии до сохранения. Но беда остается, что нет пересчета окончательной цены с учетом скидок на доставку. По логике пересчет должен производится сам, но этого не происходит. Заказ по своей цене, доставка по своей.
    Ответ написан
    Комментировать
  • Как для getlist получить все элементы кроме + исключая?

    @tgarl Автор вопроса
    я нашел причину, ошибка написании фильтра - лишняя вложенность в массив
    правильный вариант:

    $GLOBALS[$arParams['FILTER_NAME']][]=[
            "LOGIC"=>"OR",
            
                ['PROPERTY_195'=>[1747], 'PROPERTY_362'=>[1753,1754]], //элементы принадлежат сетям, но относятся к бренду
                ['!PROPERTY_362'=>[1753,1754]], // или все элементы не принадлежащие сетям
         
        ];
    Ответ написан
    Комментировать
  • Как изменить состав отгрузки в заказе?

    @tgarl
    Понимаю что тема старая, но в итоге какое решение?
    //собираем id которые нужно снести с корзины
    foreach ($basket as $basketItem) {  
    $zapjmnimID[] = $basketItem->getField('ID');  
    }
    //добавляем новый товар
    $item = $basket->createItem('catalog', $obEl['ID']); //создаём новый товар в корзине
    $item->setFields(array(
       'QUANTITY' => 1,
       'CURRENCY' => \Bitrix\Currency\CurrencyManager::getBaseCurrency(),
       'LID' => 's1',
       'PRODUCT_PROVIDER_CLASS' => 'CCatalogProductProvider',
       "CATALOG_XML_ID" => $obEl['IBLOCK_EXTERNAL_ID'],
       "PRODUCT_XML_ID" => $obEl['XML_ID'],
       'CUSTOM_PRICE'=>'Y',
       'PRICE' => $PlProductInfo['PRICE'],
       'NAME'=>$arParams['NAME']['VALUE']
    ));
       
    $item->getPropertyCollection()->setProperty($arParams);
    
    //удаляем не нужные товары
    foreach($zapjmnimID as $delitem){
       $basket->getItemById($delitem)->delete();
    }
    //сохраняем корзину
    $basket->save();
    
    //отгрузка, доставка
    $shipmentCollection = $order->getShipmentCollection();
    удаляем текущую отгрузку
    foreach ($shipmentCollection as $shipment) {
      $shipment->delete();
    }
    //добавляем доставку под другой тип               
    $shipment = $shipmentCollection->createItem();
    $service = \Bitrix\Sale\Delivery\Services\Manager::getById(15);
    $shipment->setFields(array(
       'DELIVERY_ID' => $service['ID'],
       'DELIVERY_NAME' => $service['NAME'],
    ));
    $shipmentItemCollection = $shipment->getShipmentItemCollection();
    //добавляем товары в отгрузку
    foreach ($basket as $basketItem)
    {
       $item = $shipmentItemCollection->createItem($basketItem);
       $item->setQuantity($basketItem->getQuantity());
    }
    //сохраняем заказ
    $result = $order->save();


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

    @tgarl
    Я список купонов перед заказом получаю так:
    $basket  = \Bitrix\Sale\Basket::loadItemsForFUser(
       \CSaleBasket::GetBasketUserID(),
        "s1" 
    );
     $order  = Bitrix\Sale\Order::create( "s1" , \Bitrix\Sale\Fuser::getId());
     $order ->setPersonTypeId( 1 );
     $order ->setBasket( $basket );
     $discounts  =  $order ->getDiscount();
     $res  =  $discounts ->getApplyResult();
     foreach($res['COUPON_LIST'] as $cupo_n=>$ar_r){
    ...
    тут проводим манипуляцую с купоном
    ...
    }

    Примерно как нужно я показал, дальше отталкивайтесь от своей задачи.
    Ответ написан
    4 комментария