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

    @tgarl
    В корзину добавляется товар, а не картинка.
    Поэтому вариантов решения как я вижу 2:
    1. Вы после нажатия на кнопку в корзину обрабатываете данные, создаете новый товар с ценой и прочим, в том числе и с картинкой и отправляете его в корзину
    2. если это дополнение к существующему товару, то генерите картинку, регистрируете ее в битриксе и идентификатор/путь прикрепляете как свойство товара которое и отправляете в корзину.
    Ответ написан
    3 комментария
  • Можно ли оформлять заказы без авторизации?

    @tgarl
    По умолчанию, нет, нельзя. Заказ должен быть привязан к пользователю.
    Но если вы никуда выгружать не планируете в дальнейшем, то можно завести отдельного пользователя и кастомизировать оформление указав автоматическую регистрацию, но вместо создания пользователя подставлять вашего.
    Еще вариант написать свое оформление заказа, но опять же привязка к пользователю должна быть обязатаельна.

    Еще минус таких вариантов - это то что пользователи никак не смогут посмотреть историю когда и что они заказывали.
    Ответ написан
  • Почему не выгружаются товары из 1С в Битрикс?

    @tgarl
    Судя по логу вы выгружаете 1 товар и он выгрузился. Что именно вы имеете ввиду когда говорите, что не выгружается?

    Нет вашего товара? Проверьте не появился ли новый инфоблок, может не туда выгружается куда вы хотели.
    Не обновляются свойства? Включите сохранение файлов обмена, в dbconn добавьте define("BX_CATALOG_IMPORT_1C_PRESERVE", true); - возможно файлы приходят без свойств.
    Ответ написан
    1 комментарий
  • Как изменить цену при добавлении/изменении элемента торгового каталога?

    @tgarl
    Главная ваша ошибка, это то что вы просто хотите добавить цену, а она может уже у товара есть. Следовательно вам сначала нужно получить идентификатор цены товара. Если его нет, то тогда добавлять, иначе обновлять.

    Если посмотреть в документации, то там есть наглядный пример
    $res = CPrice::GetList(
            array(),
            array(
                    "PRODUCT_ID" => $PRODUCT_ID,
                    "CATALOG_GROUP_ID" => $PRICE_TYPE_ID
                )
        );
    
    if ($arr = $res->Fetch())
    {
        CPrice::Update($arr["ID"], $arFields); //если есть обновляем
    }
    else
    { //иначе добавляем
        CPrice::Add($arFields);
    }
    Ответ написан
  • Bitrix как сделать сортировку по дате создания раздела первого уровня в catalog.section.list?

    @tgarl
    В вашем случае только самому сортировку делать, штатно не будет
    Ответ написан
    Комментировать
  • Как обновить certbot на centos 7?

    @tgarl Автор вопроса
    Решилось все довольно просто. Команда работает, просто что-то зависло и перезапуск сервера убрал зависшее.

    далее запускаем обновление(нашу команду и ждем когда прочитает все депозитории), далее подтверждаем скачивание обновлений и готово.
    ну и после запускаем renew.
    Он скажет что там что-то с регистрацией связано указываем почту - в общем идет процесс как будто первый раз установили. далее находит настройки сайтов и все, все сертификаты обновляет
    После незабываем рестартануть службы от которых идет конфигурация(нжинкс, апач , у кого что)и вуаля все работает, обновлять отдельно acme не требуется
    Ответ написан
    Комментировать
  • Как запретить скидку для типа цен в Битрикс?

    @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
    Ответ написан
    Комментировать
  • Почему не видит папку или файл?

    @tgarl Автор вопроса
    В моем случае решением является комментарий Lynn «Кофеман»
    Пересохраните файл с UNIX-овыми окончаниями строк

    Пересохранил и все заработало.

    Виктор Таран , спасибо за скрипт
    Ответ написан
    Комментировать
  • Как сделать бустрап колонки с объединением как в таблицах?

    @tgarl Автор вопроса
    Все чаще и чаще торможу.
    вот решение
    <div class="row">
    					<div class="col-12 col-md-6">1</div>
    					<div class="col-12 col-md-6">2</div>
    					<div class="col-12 col-md-6 order-md-1 order-2">3</div>
    					<div class="col-12 col-md-6 order-md-2 order-1">4</div>
    				</div>
    Ответ написан