Задать вопрос
  • Как выбрать текст задав исключения?

    yous
    @yous Автор вопроса
    dodo512, вот пример, смысл такой что,
    [19.3см] [19.3 см] [d 19.3 см] [d=19.3 см] [D=19.3] могут стоять вообще в любом порядке и смешаны с другими параметрами. Задача выцепить из названия Высоту, Диаметр, Объём итд... я показал пример только на Диаметре...
    https://regex101.com/r/fGBeGq/1

    PHP для разбора, потом всё в excel и там уже наводить порядок по всем позициям
  • Как выбрать текст задав исключения?

    yous
    @yous Автор вопроса
    нужно универсальное, эта строка как пример я показал
  • Вопрос для программистов bitrix: как вы решали проблемы с Cross-Site Scripting?

    yous
    @yous
    оберни переменные так

    $ym_uid = ($_COOKIE['_ym_uid']?$_COOKIE['_ym_uid']:false);
  • Bitrix как убить обмен между БУС и 1С?

    yous
    @yous Автор вопроса
    1. у нас в основном оптовики (
    2. думали, то разбивать заказ на 1000 позиций хотябы по 100, будет 10 заказов, клиенту это ненужно, да и как он потом оплатит онлайн, 10 раз ходить в эквайринг не очень интересно... или 10 счетов
    3. на стороне 1с уже переписан штатный обмен с бус, но мы пропихивали именно 1 заказ, т.е. сначала убрали его из обмена, пропустили все нормальные и потом воевали с ним отдельно. Любое движение этого заказа в 1С приводит к выгрузке его на сайт, а это опять тупняк.
    1С приняла этот заказ без проблем, а вот в обратную БУСу со стандартным обменом его тяжело изменить.
  • Bitrix таблица b_sale_fuser сильно растет?

    yous
    @yous Автор вопроса
    Ярослав Александров, Нет в логах нет от ботов добавления в корзину, есть только "POST /ajax/basket_fly.php HTTP/1.0" 200 но от реальных пользователей да и не такое кол-во как пишется в базу, за 1 день в b_sale_fuser добавляется около 90 000 записей...
  • Bitrix таблица b_sale_fuser сильно растет?

    yous
    @yous Автор вопроса
    Роман Грицук,
    Добавил сюда
    //    CSaleUser::Add()
    //    /bitrix/modules/sale/mysql/basket.php:991
    
        public static function Add()
        {
        ...
    
    }
    
    file_put_contents($_SERVER['DOCUMENT_ROOT']."/temp/logs/CSaleUser/add_".$ID.".txt", json_encode(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS)));
    ...
    		return $ID;
    }


    спам идёт активный, куча файлов за короткое время за 3 минуты почти 108 файлов создал, т.е. 108 INSERT в базу

    60e577611377f434083921.jpeg

    добавил $_SERVER['REMOTE_ADDR'] в этот файл, и вот что заметно сразу, есть кучу совпадений IP.
    b_stat_session сделал фильтр по этим Ip и вот что получилось.

    60e57ce06ba6b540133242.jpeg

    debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS) в файле
    [
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/modules/sale/general/basket.php",
        "line": 3818,
        "function": "Add",
        "class": "CSaleUser",
        "type": "::"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/modules/sale/general/basket.php",
        "line": 1798,
        "function": "GetID",
        "class": "CAllSaleUser",
        "type": "::"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/modules/sale/general/basket.php",
        "line": 1810,
        "function": "Init",
        "class": "CAllSaleBasket",
        "type": "::"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/include/footer/comp_viewed.php",
        "line": 18,
        "function": "GetBasketUserID",
        "class": "CAllSaleBasket",
        "type": "::"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/local/templates/aspro_next/components/bitrix/main.include/basket/template.php",
        "line": 17,
        "args": [
          "/home/bitrix/ext_www/test.com/include/footer/comp_viewed.php"
        ],
        "function": "include"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/modules/main/classes/general/component_template.php",
        "line": 790,
        "args": [
          "/home/bitrix/ext_www/test.com/local/templates/aspro_next/components/bitrix/main.include/basket/template.php"
        ],
        "function": "include"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/modules/main/classes/general/component_template.php",
        "line": 885,
        "function": "__IncludePHPTemplate",
        "class": "CBitrixComponentTemplate",
        "type": "->"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/modules/main/classes/general/component.php",
        "line": 766,
        "function": "IncludeTemplate",
        "class": "CBitrixComponentTemplate",
        "type": "->"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/modules/main/classes/general/component.php",
        "line": 714,
        "function": "showComponentTemplate",
        "class": "CBitrixComponent",
        "type": "->"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/components/bitrix/main.include/component.php",
        "line": 280,
        "function": "includeComponentTemplate",
        "class": "CBitrixComponent",
        "type": "->"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/modules/main/classes/general/component.php",
        "line": 605,
        "args": [
          "/home/bitrix/ext_www/test.com/bitrix/components/bitrix/main.include/component.php"
        ],
        "function": "include"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/modules/main/classes/general/component.php",
        "line": 682,
        "function": "__includeComponent",
        "class": "CBitrixComponent",
        "type": "->"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/modules/main/classes/general/main.php",
        "line": 1068,
        "function": "includeComponent",
        "class": "CBitrixComponent",
        "type": "->"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/local/templates/aspro_next/footer.php",
        "line": 66,
        "function": "IncludeComponent",
        "class": "CAllMain",
        "type": "->"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/modules/main/include/epilog_before.php",
        "line": 93,
        "args": [
          "/home/bitrix/ext_www/test.com/local/templates/aspro_next/footer.php"
        ],
        "function": "include_once"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/modules/main/include/epilog.php",
        "line": 2,
        "args": [
          "/home/bitrix/ext_www/test.com/bitrix/modules/main/include/epilog_before.php"
        ],
        "function": "require"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/footer.php",
        "line": 4,
        "args": [
          "/home/bitrix/ext_www/test.com/bitrix/modules/main/include/epilog.php"
        ],
        "function": "require_once"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/404.php",
        "line": 37,
        "args": [
          "/home/bitrix/ext_www/test.com/bitrix/footer.php"
        ],
        "function": "require"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/modules/iblock/lib/component/tools.php",
        "line": 66,
        "args": [
          "/home/bitrix/ext_www/test.com/404.php"
        ],
        "function": "require"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/components/bitrix/catalog/component.php",
        "line": 111,
        "function": "process404",
        "class": "Bitrix\\Iblock\\Component\\Tools",
        "type": "::"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/modules/main/classes/general/component.php",
        "line": 605,
        "args": [
          "/home/bitrix/ext_www/test.com/bitrix/components/bitrix/catalog/component.php"
        ],
        "function": "include"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/modules/main/classes/general/component.php",
        "line": 682,
        "function": "__includeComponent",
        "class": "CBitrixComponent",
        "type": "->"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/modules/main/classes/general/main.php",
        "line": 1068,
        "function": "includeComponent",
        "class": "CBitrixComponent",
        "type": "->"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/catalog/index.php",
        "line": 579,
        "function": "IncludeComponent",
        "class": "CAllMain",
        "type": "->"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/modules/main/include/urlrewrite.php",
        "line": 160,
        "args": [
          "/home/bitrix/ext_www/test.com/catalog/index.php"
        ],
        "function": "include_once"
      },
      {
        "file": "/home/bitrix/ext_www/test.com/bitrix/urlrewrite.php",
        "line": 2,
        "args": [
          "/home/bitrix/ext_www/test.com/bitrix/modules/main/include/urlrewrite.php"
        ],
        "function": "include_once"
      }
    ]
  • Bitrix подмена статуса заказа при изменении заказа?

    yous
    @yous Автор вопроса
    PetrPo, всё как есть убрал save() и событие изменил на OnSaleOrderBeforeSaved
  • Bitrix подмена статуса заказа при изменении заказа?

    yous
    @yous Автор вопроса
    PetrPo, ты понимаешь что такое зависание?? какой может быть ответ если всё висит... срабатывает timeout 504 getway.. в логе тоже нет ошибок ни в битриксе ни в nginx

    я уже сделал что мне нужно, немного по другому
  • Bitrix подмена статуса заказа при изменении заказа?

    yous
    @yous Автор вопроса
    PetrPo, висит при

    $order->setField('STATUS_ID', 'PQ');
    $order->save();
  • Bitrix подмена статуса заказа при изменении заказа?

    yous
    @yous Автор вопроса
    PetrPo, вот полная версия

    \Bitrix\Main\EventManager::getInstance()->addEventHandler('sale', 'OnSaleStatusOrderChange', ['Handler', 'OnSaleStatusOrderChange']);
    
    class Handler {
      function OnSaleStatusOrderChange(Bitrix\Main\Event $event)
      {
        /** @var \Bitrix\Sale\Order $order */
        $order = $event->getParameter("ENTITY");
        $value = $event->getParameter("VALUE");
        $oldValue = $event->getParameter("OLD_VALUE");
        $paymentCollection = $order->getPaymentCollection();
        $isPaid = $paymentCollection->isPaid();
    
    
        if ($value === 'PA' && $isPaid === true) {
          $order->setField('STATUS_ID', 'PQ');
          $order->save();
    
        }
  • Bitrix подмена статуса заказа при изменении заказа?

    yous
    @yous Автор вопроса
    мне и нужно при смене статуса
  • Bitrix подмена статуса заказа при изменении заказа?

    yous
    @yous Автор вопроса
    PetrPo, так висит

    \Bitrix\Main\EventManager::getInstance()->addEventHandler('sale', 'OnSaleStatusOrderChange', ['Handler', 'OnSaleStatusOrderChange']);
    
    class Handler {
      function OnSaleStatusOrderChange(Bitrix\Main\Event $event)
      {
    
          $order->setField('STATUS_ID', 'PQ');
          $order->save();
      }
  • Bitrix подмена статуса заказа при изменении заказа?

    yous
    @yous Автор вопроса
    PetrPo, я же говорю, мне нужно не менять статус, а подменить входящие данные
  • Bitrix подмена статуса заказа при изменении заказа?

    yous
    @yous Автор вопроса
    я так пробовал, зависает битрикс...
    Мне нужна не смена статуса, а подмена входящих параметров.
  • Интеграция Xiaomi Mi Home Hub с Yandex.Розеткой?

    yous
    @yous
    s4q, блин ну странный увлажнитель без датчиков температуры и влажности
  • Интеграция Xiaomi Mi Home Hub с Yandex.Розеткой?

    yous
    @yous
    а для чего включать выключать увлажнитель через умную розетку?
    у меня увлажнитель сам по себе умный, в нем есть условия и тот же датчик влажности встроенный, увлажнитель сам понимает когда ему включаться и выключаться + набор своих правил в него прописывается
  • ServiceWorker неправильно определяет где лежит файл?

    yous
    @yous Автор вопроса
    Eddi_Jagger,

    файл manifest.json и pwabuilder-sw.js лежать в корне сайта

    /home/bitrix/ext_www/site.ru/manifest.json
    /home/bitrix/ext_www/site.ru/pwabuilder-sw.js

    в вызов
    вызов скрипта pwabuilder-sw.js
    в файле /home/bitrix/ext_www/site.ru/local/templates/front/js/custom.min.js
    "serviceWorker"in navigator&&(navigator.serviceWorker.controller?console.log("[PWA Builder] active service worker found, no need to register"):navigator.serviceWorker.register("pwabuilder-sw.js",{scope:"./"}).then(function(a){console.log("[PWA Builder] Service worker has been registered for scope: "+a.scope)}));


    Вот мой манифест.
    {
        "dir": "ltr",
        "lang": "Russian",
        "name": "Site интернет-магазин",
        "scope": "/",
        "display": "standalone",
        "start_url": "https://site.ru/",
        "short_name": "Site",
        "theme_color": "#A12121",
        "description": "Site Site Site",
        "orientation": "any",
        "background_color": "#A12121",
        "related_applications": [],
        "prefer_related_applications": false,
        "categories":["shopping","business"],
        "icons": [
            {
                "src": "https://site.ru/images/icons/android-icon-36x36.png",
                "sizes": "36x36",
                "type": "image/png"
            },
            {
                "src": "https://site.ru/images/icons/android-icon-48x48.png",
                "sizes": "48x48",
                "type": "image/png"
            },
            {
                "src": "https://site.ru/images/icons/android-icon-72x72.png",
                "sizes": "72x72",
                "type": "image/png"
            },
            {
                "src": "https://site.ru/images/icons/android-icon-96x96.png",
                "sizes": "96x96",
                "type": "image/png"
            },
            {
                "src": "https://site.ru/images/icons/android-icon-144x144.png",
                "sizes": "144x144",
                "type": "image/png"
            },
            {
                "src": "https://site.ru/images/icons/android-icon-192x192.png",
                "sizes": "192x192",
                "type": "image/png",
                "purpose": "any maskable"
            },
            {
                "src": "https://site.ru/images/icons/android-icon-512x512.png",
                "sizes": "512x512",
                "type": "image/png"
    
            }
        ],
        "screenshots": [
            {
                "src": "https://site.ru/images/screenshot_1.png",
                "sizes": "600x900",
                "type": "image/png"
            },
            {
                "src": "https://site.ru/images/screenshot_2.png",
                "sizes": "600x900",
                "type": "image/png"
            },
            {
                "src": "https://site.ru/images/screenshot_3.png",
                "sizes": "600x900",
                "type": "image/png"
            },
            {
                "src": "https://site.ru/images/screenshot_4.png",
                "sizes": "1280x720",
                "type": "image/png"
            }
        ],
        "url": "https://site.ru/"
    }
  • ServiceWorker неправильно определяет где лежит файл?

    yous
    @yous Автор вопроса
    Eddi_Jagger, не скажу точно, но глянул файл там написано так

    .register("pwabuilder-sw.js", {

    т.е. без /
  • Bitrix изменение свойства CIBlockElement::SetPropertyValuesEx?

    yous
    @yous Автор вопроса
    Роман Грицук, String

    foreach($propertiesJson AS $key=>property){
    ...
    $properties["S"][$arProperty["CODE"]] = $property["UF_PROP_VALUE_VALUE"]; 
    //$property["UF_PROP_VALUE_VALUE"] = "20008404080S";
    ...
    }
    
    ...
    
    if(sizeof($properties["S"])){
    	CIBlockElement::SetPropertyValuesEx($arData['PRODUCT_ID'], $arData['IBLOCK_ID'], $properties["S"]);
    		}
  • Bitrix изменение свойства CIBlockElement::SetPropertyValuesEx?

    yous
    @yous Автор вопроса
    Роман Грицук, я пытаюсь через SetPropertyValuesEx записать значение VALUE=>"20008404080S"
    на что мне sql говорит ты охренел, поле в базе VALUE_ENUM максимум 10 символов и выкидывает исключение Out of range. Почему в VALUE_ENUM пишется число, а не NULL т.к. моё значение string я выше написал, VALUE_ENUM берет значение из VALUE и приводит его к intval("20008404080S"), и intval возвращает 8404080, а не 0. Хотя моё значение STRING, но так работает функция intval,
    ещё пример 5 + intval(5ПОПУГАЕВ) = 10, а вот 5 + intval(ПОПУГАЕВ5) = 5

    мне нужно как-то задать параметры VALUE_ENUM и VALUE_NUM что бы стандартный метод не делал то, что он делает с ошибкой.

    В принципе наверное нужно подсоединиться к классу CIBlockElement и модифицировать SetPropertyValuesEx, т.к. в методе явные проблемы на условия записи значений

    6067048669f0f996546375.png