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

    @tgarl
    В вашем случае только самому сортировку делать, штатно не будет
    Ответ написан
    Комментировать
  • Как запретить скидку для типа цен в Битрикс?

    @tgarl
    Оптовики ограничены группой, вот у скидки ограничение на группу также добавьте
    Ответ написан
    1 комментарий
  • Почему автоматически не создается событие при заполнении веб-формы Bitrix?

    @tgarl
    Результат заполнения вебформы у вас создается, верно?
    У вас сейчас стоит расширенный режим вебформы, верно?

    Проверьте доступ у этой вебформы, кто имеет право устанавливать статус (у вас как я вижу ID вебформы 'FORM_ID' => '19' ), тогда статус можно посмотреть на странице
    /bitrix/admin/form_status_list.php?lang=ru&WEB_FORM_ID=19

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

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

    @tgarl
    1. Вы забыли при отборе элементов поставить фильтр на нужные разделы, поэтому берутся все и из других тоже, т.е. лишние (добавив фильтр вы избежите делать отдельные проверки)
    $arFilter = array("IBLOCK_ID" => $IBLOCK_ID, "ACTIVE_DATE" => "Y", "ACTIVE" => "Y", "SECTION_ID" => $idSections, "INCLUDE_SUBSECTIONS" => "Y",);

    2. формируйте нужный массив на уровне foreach ($arResult["ITEMS"] as $key => $arItem) , тогда вы избежите 3 вложенных циклов(3 вложенных цикла очень сильно нагружают, старайтесь такие конструкции избегать)
    Ответ написан
    Комментировать
  • Как сделать права на запись в временную папку?

    @tgarl
    сначала нужно проверить есть ли такая папка, и какой пользователь у вас
    bitrix:bitrix - а вы уверены что у вас такой?
    он легко может отличаться, пользователь bitrix в основном встречается если была установлена виртуальная машина от битрикса, а если ставили сайт без нее, то пользователь может очень сильно отличатся, у меня на одном проекте это 500:500

    Поставьте какую-нибудь ftp программу чтобы можно было визуально просмотреть пользователей, структуру сайта... Мне очень нравится winscp, всякие filezila нет, найдите какая вам больше по душе и ваш вопрос решится легко
    Ответ написан
  • Как добавить картинку к MORE_PHOTO?

    @tgarl
    $elementId=1; //ID элемента в который нужно добавить
    $tmpFilePath=$_SERVER['DOCUMENT_ROOT']."/upload/picatest.jpg";
    $arFile=array("VALUE" => \CFile::MakeFileArray($tmpFilePath),"DESCRIPTION"=>"");
    \CIBlockElement::SetPropertyValueCode($elementId, 'MORE_PHOTO', $arFile);


    таким обновлением он картинки не удаляет если были, а дописывает

    если нужно несколько картинок к элементу
    то собираем все в массив $arFile (пример без циклов и прочего)

    $elementId=1; //ID элемента в который нужно добавить
    
    $tmpFilePath=$_SERVER['DOCUMENT_ROOT']."/upload/picatest1.jpg";
    $arFile[]=array("VALUE" => \CFile::MakeFileArray($tmpFilePath),"DESCRIPTION"=>"");
    
    $tmpFilePath=$_SERVER['DOCUMENT_ROOT']."/upload/picatest2.jpg";
    $arFile[]=array("VALUE" => \CFile::MakeFileArray($tmpFilePath),"DESCRIPTION"=>"");
    
    $tmpFilePath=$_SERVER['DOCUMENT_ROOT']."/upload/picatest3.jpg";
    $arFile[]=array("VALUE" => \CFile::MakeFileArray($tmpFilePath),"DESCRIPTION"=>"");
    
    
    \CIBlockElement::SetPropertyValueCode($elementId, 'MORE_PHOTO', $arFile);
    Ответ написан
    Комментировать
  • Bitrix как убить обмен между БУС и 1С?

    @tgarl
    Понятно что это не очень-то похоже на решение проблемы, но вариантов как я вижу 3:
    1. Поставить ограничение на количество позиций в заказе(в большинстве случаев это и есть решение, для оптовиков это не удобно, но зато работать все будет более менее штатно)
    2. переписать оформление заказа разбивая его на несколько
    3. переписать обмен заказами с 1С чтобы сбор заказов был не налету, а подготовленные файлы, в этом случае если заказ большой, чтобы он отдавался только один
    Ответ написан
  • Как добавить в корзину товар с его скидкой по купону?

    @tgarl Автор вопроса
    нашел решение: после сохранения корзины вызываем новый ее объект и работаем дальше с ним и все скидки от корзины применяются. Странно конечно, но работает
    $basket->save();
    $basket = \Bitrix\Sale\Basket::loadItemsForFUser( $fuser,   's1'   );
    Ответ написан
    Комментировать
  • Как вызывать пагинацию для своего orm объекта в админке сайта?

    @tgarl
    Я еще прописывал вызовы
    $nav = new \Bitrix\Main\UI\PageNavigation("nav-more-notice");
    $nav->allowAllRecords(true)
       ->setPageSize(15)
       ->initFromUri();

    и убрать в навигации "TABLE_ID" => "my_table_id",
    Ответ написан
    Комментировать
  • Как обойти запрет кликов в BX.PopupWindow?

    @tgarl Автор вопроса
    Есть 2 решения этой задачи:
    1. как написал PetrPo добавить параметр
    compatibleMode: false

    2. я нашел такое
    events: {
    		onAfterPopupShow: function(popup) {
    					var obj= BX.findChild(popup.contentContainer, {className: 'form__btn1'}, true);
    					if (obj)
    					{
    						BX.bind(obj, 'mousedown', function(){ 
    							alert('111');
    						});
    					}
    		}
    Ответ написан
  • Не обновляются цены при выгрузке?

    @tgarl
    первое что можно включить - это сохранение файлов выгрузки - так хотя бы будете знать все файлы приходят или нет, полные или обрезаны
    в /bitrix/php_interface/dbconn.php добавить строку
    define("BX_CATALOG_IMPORT_1C_PRESERVE", true);
    но помните оставлять без присмотра после этого обмен нельзя иначе место на сервере очень быстро закончится.
    если все в порядке, то тут как вариант пробовать ковырять код и логировать его выполнение.

    Вообще такое может быть если файл очень большой(у нас на проекте было что файл весом более 400Мб не читался - улетало все в 502 ошибку, от полной выгрузки после этого отказались потом 1С-ник написал ограничение на количество товаров в файлах за раз обмена, а потом вообще пришлось писать новый обмен через справочники и свою обработку), попробуйте выгрузить только пару товаров.
    Ответ написан
  • Bitrix как передать переменную с одного шаблона на другой и использовать её?

    @tgarl
    result_modifier.php - тут конечно вы можете получить свои данные, но их нужно поместить в кеш компонента, если отсутвуют уже там, чтобы передать в component_epilog.php
    Если вам данные не нужны в template, то и получать их можно сразу в там же не задействуя result_modifier.
    а там уже все просто
    $GLOBALS['peremen'] = $arResult["AR_LIST_SERVICES_FILTER"];

    теперь ниже за пределами компонента ниже у вас есть $peremen, которую передаете в компонент в виде параметра

    ...
    'NEW_PARAM'=>$peremen,
    ...
    Ответ написан
    Комментировать
  • ЧПУ, как сделать такую ссылку?

    @tgarl
    если именно через htaccess, хотя зачем непонятно, когда есть urlrewrite, то примерно так(за точность не ручаюсь, не тестил):
    RewriteRule ^qr/([^/\.]+)/?$  https://site.ru/qr/index.php?id=$1 [L]

    прописывается ниже RewriteEngine On
    Ответ написан
    Комментировать
  • Как сделать фильтрацию для getlist между двумя свойствами?

    @tgarl
    "<=PROPERTY_MAX_PROCENT" => $l, 
    ">=PROPERTY_MIN_PROCENT" => $l
    Ответ написан
    Комментировать
  • Как задать пользовательское свойств заказа (Bitrix\Sale\Order, getPropertyCollection())?

    @tgarl
    так?
    $propertyCollection = $order->getPropertyCollection();
    foreach ($propertyCollection as $property) {
    	if ($property->getField('CODE') == $code) $property->setValue('Быстрый заказ');
    }
    Ответ написан
  • Что не так с настройками каталога?

    @tgarl
    Скорее всего в шаблоне так прописано, свойства выводятся через ['PROPERTIES'], а не через ['DISPLAY_PROPERTIES']. Смотрите его.
    Ответ написан
  • Как совместить композитный сайт owl-carousel?

    @tgarl Автор вопроса
    Вот ищешь-ищешь решение, стоит только задать вопрос и тут же находится.
    в общем для таких вещей можно либо области со скриптами обернуть в динамику, либо дописать в шаблон вызов

    if (window.frameCacheVars !== undefined) 
    {
            BX.addCustomEvent("onFrameDataReceived" , function(json) {
                 //тут наш вызов
             }
    }
    Ответ написан
    Комментировать
  • Почему UTM - метки пропадают внутри сайта?

    @tgarl
    Что такое UTM-метка - это по сути просто параметр в адресной строке. В основном нужны для отслеживания в метрике сколько человек перешло по внешней ссылке откуда-то на конкретные страницы. К примеру пришло 1000 человек на страницу в целом, метка позволяет понять что например из письма всего 1, значит толку от такого письма. Так что логично что если на данную страницу человек пришел с метками, то дольше они не передаются. По вашему вопросу видимо вы что-то хотите получить, но для этого решили использовать инструмент меток. Объясните общую задачу.
    Ответ написан
    3 комментария
  • Существует ли модуль bitrix для создания тестов вопрос-ответ?

    @tgarl
    есть встроенный
    Опросы, голосования (vote)
    Модуль позволяющий организовать систему опросов и голосований посетителей сайта.

    Проверьте установлен он или нет и позволяет ваша редакция его использовать или нет
    /bitrix/admin/module_admin.php?lang=ru
    Ответ написан
  • Как добавить свою запись в историю изменений заказа?

    @tgarl
    Найти в сети примеры не так уж и сложно, но не все примеры понятны
    Привожу свой кусок кода который я использовал
    //https://doc.budagov.ru/class_bitrix_1_1_sale_1_1_order_history.html
    $order_resave = \Bitrix\Sale\Order::load($orderID);
    $historyEntityType = 'ORDER'; //Наименование - В данном случае для заказа
    $historyType = 'ORDER_COMMENTED'; //Нужный тип можно посмотреть в классе \CSaleOrderChangeFormat в $operationTypes
                                        \Bitrix\Sale\OrderHistory::addAction(
                                            $historyEntityType,
                                            $order_resave->getId(),
                                            $historyType,
                                            $order_resave->getId(),
                                            $order_resave,
                                            ['COMMENTS' => 'Первый пересчет заказа - component.php']
                                        );


    есть еще addLog(), но в чем принципиальная разница, не разбирался
    Ответ написан