• Как автоматически создавать профиль пользователя из 1С и убирать из внешней группы sale?

    @PetrPo
    Darklt, мне кажется ты не видишь разницу между юзер и профиль юзера, поправь если ошибаюсь...
    Импорт пользователей есть, а где ты увидел импорт профилей?
  • Как автоматически создавать профиль пользователя из 1С и убирать из внешней группы sale?

    @PetrPo
    Darklt,
    1. угу
    2. угу, внутрь своего метода
    2. ну посмотри $arFields, в нем должен быть. Если есть, удаляй его из филдов
    if(isset($arFields['EXTERNAL_AUTH_ID']))
        unset($arFields['EXTERNAL_AUTH_ID']);


    P.S.
    нажимай на ответить, чтобы мой акк. добавился в твой коммент и я увидел твое сообщение
  • Как настроить использование произвольных параметров URL?

    @PetrPo
    Павел Сидоров, видать для этого лишние скобки и нужны
    #^/catalog/([^/]+?)/\??(.*)#
  • Как настроить использование произвольных параметров URL?

    @PetrPo
    гуглится же как два пальца

    из гугла, но непонтно нах все эти лишние скобки
    #^/catalog/([0-9a-zA-Z_-]+)/\?.*

    мой вариант
    "#^/catalog/(.*?)/\?.*#"
  • Как автоматически создавать профиль пользователя из 1С и убирать из внешней группы sale?

    @PetrPo
    Darklt,
    в админке используется CUser::Add
    1. Почему у тебя after событие? используй событие OnBeforeUserAdd
    2. Говоришь Вызывает ошибки и даже не показываешь что за ошибки, наверняка о том что класс CSaleOrderUserProps undefined, надо подключить модуль в событии
  • Как в битрикс построить графики?

    @PetrPo
    anriko, я уж думал чудо случилось и ты отметил ответ решением, но нет убрал галку...
    Ясен хер, что в админке данные должны быть, я тебе говорю не по твоему скиллу задача - надо будет изучать api amcharts, а ты читать документацию и пользоваться ей не хочешь/не умеешь.

    Рассказывать как это сделать особо нечего:
    1. определяешься где будешь хранить данные инфоблок, хайлоад, свои сущности (при этом варианте придется писать интерфейс для админки - тоже явно не твой уровень)
    2. изучаешь api amcharts для понимания того какие входные данные и в каком виде надо предоставить скрипту
    3. пишешь свой компонент в котором
    - получаешь свои данные
    - составляешь их в нужном виде
    4. пишешь template для компонента с выводом графиков
  • Как добавить фото пользователя в личный кабинет аспро медик?

    @PetrPo
    anriko, в стандартном main.profile есть загрузка и вывод аватарки
  • Как добавить фото пользователя в личный кабинет аспро медик?

    @PetrPo
    Ты вопрос в теге 1С-Битрикс задаешь или в теге Аспро? Что за вопрос такой - есть личный кабинет аспро медик, хочу добавить аватарку....

    Какой компонент стоит?
    Что именно не получается?

    Ты уже такую кучу вопросов задавал, а все как в первый раз.
  • Не работает добавление в корзину битрикс?

    @PetrPo
    Алексей Иванов, лучшее спасибо - это отметить ответ решением)
  • Как вывести товары из разных инфоблоков?

    @PetrPo
    Zikdelk, лучшая благодарность - это отметить ответ решением
  • Как вывести товары из разных инфоблоков?

    @PetrPo
    Zikdelk, если надо в переменную записать таблицу, тогда надо буферизацию добавить
    <?ob_start();?>
        <?if($elements):?>
    .................................................
        <?endif;?>
    <?$MESSAGE = ob_get_clean();?>


    P.S.
    не надо uppercase в переменных использовать ($MESSAGE), всегда должен быть camelcase
  • Как вывести товары из разных инфоблоков?

    @PetrPo
    Zikdelk, ну ты что не знаешь как сделать foreach по полученным данным?
    Весь код предыдущий закомментируй, он не нужен
    <?
    //...................
    // это не надо
    /*
    CModule::IncludeModule("iblock");
    CModule::IncludeModule("catalog");
    CModule::IncludeModule("sale");
    */
    
    \Bitrix\Main\Loader::includeModule('catalog');
    
    $iblockIds = [65, 66];
    $elements = \Bitrix\Catalog\ProductTable::getList([
      'select' => ['ELEMENT_ID' => 'IBLOCK_ELEMENT.ID', 'ELEMENT_NAME' => 'IBLOCK_ELEMENT.NAME', 'QUANTITY'],
      'filter' => ['IBLOCK_ELEMENT.IBLOCK_ID' => $iblockIds, '>QUANTITY' => 0]
    ])->fetchAll();
    
    // дальше все комментируешь до своей таблицы
    ?>
    
    <?if($elements):?>
    	<table border="1" cellpadding="1" cellspacing="1" style="width: 850px">
    	  <tbody>
    		<?foreach($elements as $element):?>
    			<tr>
    			  <td style="width: 100px;"><?=$element['ELEMENT_ID'];?></td>
    			  <td><?=$element['ELEMENT_NAME'];?></td>
    			  <td style="width: 80px;"><?=$element['QUANTITY'];?></td>
    			</tr>
    		<?endforeach;?>
    	  </tbody>
    	</table>
    <?endif;?>
  • Как вывести товары из разных инфоблоков?

    @PetrPo
    Zikdelk, остаток - это свойство SVOB_OZHIDAEMYY_OSTATOK ? или все же остаток в торговом каталоге?

    Если в торговом каталоге
    \Bitrix\Main\Loader::includeModule('catalog');
    
    $iblockIds = [65, 66];
    $elements = \Bitrix\Catalog\ProductTable::getList([
    	'select' => ['ELEMENT_ID' => 'IBLOCK_ELEMENT.ID', 'ELEMENT_NAME' => 'IBLOCK_ELEMENT.NAME', 'QUANTITY'],
    	'filter' => ['IBLOCK_ELEMENT.IBLOCK_ID' => $iblockIds, '>QUANTITY' => 0]
    ])->fetchAll();
    
    print_r($elements);

    Если свойство
    $elements = [];
    $iblockIds = [65, 66];
    
    $iterator = \CIBlockElement::GetList(['ID' => 'ASC'], ['IBLOCK_ID' => $iblockIds, '>PROPERTY_SVOB_OZHIDAEMYY_OSTATOK' => 0], false, false, ['ID', 'NAME', 'PROPERTY_SVOB_OZHIDAEMYY_OSTATOK']);
    while($row = $iterator->Fetch()) {
    	$elements[] = $row;
    }
    
    print_r($elements);
  • Как вывести товары из разных инфоблоков?

    @PetrPo
    Zikdelk, я не про то, расскажи как должно работать:
    Зачем вообще изначально указывать id разделов, а потом получать их потомков? Т.е расскажи какая логика должна быть, ну типа ТЗ какое?

    UPD
    У тебя getlist неправильный, открой документацию для начала и посмотри какие аргументы принимает этот метод
    // твой
    $res = CIBlockElement::GetList(Array("ID"=>"ASC"), $arFilter, Array("ID","NAME","DETAIL_PAGE_URL","CODE","SVOB_OZHIDAEMYY_OSTATOK","CATALOG_MEASURE_NAME"));
    
    // правильный
    $res = CIBlockElement::GetList(Array("ID"=>"ASC"), $arFilter, false, false, Array("ID","NAME","DETAIL_PAGE_URL","CODE","SVOB_OZHIDAEMYY_OSTATOK","CATALOG_MEASURE_NAME"));

    У тебя вместо селекта, группировка указана
  • Как вывести товары из разных инфоблоков?

    @PetrPo
    Сформулируй как это должно работать, по коду вообще все печально...
    1. Ты говоришь хочешь выбрать данные из нескольких инфоблоков, при этом указываешь id раздела
    $IBLOCK_SECTION_ID_ARR = Array(
      0 => 23590
    );

    и передаешь его в фильтр, логично ведь что этот раздел находится в одном инфоблоке???

    2. Для чего этот цикл
    foreach($IBLOCK_SECTION_ID_ARR as $k => $IBLOCK_SECTION_ID) {

    в getlist можно передавать массивы, а запросы в цикле это плохо

    3. Дальше ты пишешь
    $sectArr[$IBLOCK_SECTION_ID] = $IBLOCK_SECTION_ID; // т.е. $sectArr[23590] = 23590

    и дальше зачем-то делаешь еще один запрос от родительской категории и даже не группируешь по ней, а просто дописываешь в масссив
    while ($arSect = $rsSect->GetNext())
       {
           // получаем подразделы
         // echo $arSect["ID"].'<br />';
         $sectArr[$arSect["ID"]] = $arSect["ID"]; // тут дописываешь в массив
       }

    Вопрос, зачем тогда такой геморой с циклами и запросами?

    Вообщем резюмируя, из кода непонятно что ты хочешь сделать, опиши задачу подробно. Если коротко ответить просто на твой вопрос, то как можно не догадаться что надо передавать не id инфоблока а массив, ведь id разделов ты передаешь как массив???
    $IBLOCK_ID = [65, 66];
    $IBLOCK_SECTION_ID_ARR = Array(
      0 => 23590
    );
  • Не работает добавление в корзину битрикс?

    @PetrPo
    Алексей Иванов,
    1. Первый вариант:
    - ставишь bitrix:catalog
    - файл sections.php в нем выводишь свой фильтр по разделам (раздел в фильтре должен быть ссылкой) и catalog.section, перед ним глобальный фильтр по твоему бренду (если не знаешь как, напиши, объясню), у catalog.section указываешь параметры
    'INCLUDE_SUBSECTIONS' => 'Y',
    'SHOW_ALL_WO_SECTION' => 'Y',
    'BY_LINK' => 'Y'

    - файл section.php - все тоже самое, только в catalog.section передаешь id раздела, он будет в $arResult['VARIABLES'], добавляешь параметр INCLUDE_SUBSECTIONS если нужен (2 других параметра не надо)
    - в вызове bitrix.catalog на index.php раздела ставишь параметры
    'AJAX_MODE' => 'Y',
    'AJAX_OPTION_STYLE' => 'Y',
    'AJAX_OPTION_HISTORY' => 'Y'

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

    2. Второй вариант
    - примерно как у тебя сейчас, есть обработчик ajax в него передаешь url на текущую страницу и в data передаешь некоторый ключ, например
    //.......
    url: '<?=$APPLICATION->GetCurDir()?>'
    data: {SECTION_ID: idSection, BRAND_AJAX: 'Y'}
    //.......

    - подставляешь свой SECTION_ID в параметры catalog.section, если он есть в request
    - находишь часть контента которую ты хочешь получить обновленную
    <?
    $request = \Bitrix\Main\Application::getInstance()->getContext()->getRequest();
    $bBrandAjax = $request->isAjaxRequest() && isset($request['BRAND_AJAX']) && $request['BRAND_AJAX'] == 'Y';
    ?>
    <?// оборачиваешь в div для простоты вставки через js, можно поколдовать и сделать без этого контейнера, но тут уже сам))?>
    <div id="ajax_brand_container">
    <?
    if($bBrandAjax) {
        $APPLICATION->RestartBuffer();
    }
    
    // твой ajax-вый контент (вероятно только catalog.section)
    
    if($bBrandAjax) {
        die();
    }
    ?>
    </div>

    - В onsuccess ajax обработчика пишешь
    var ajaxContainer = document.querySelector('#ajax_brand_container');
    
    BX.ajax({
    	//........
    	onsuccess: async function(data) {
    		if(ajaxContainer) {
    			var obResult = BX.processHTML(data);
    			
    			await !(function() {
    				ajaxContainer.innerHTML = data;
    			})();
    			
    			BX.ajax.processScripts(obResult.SCRIPT);
    		}
    	}
    	//........


    P.S.
    Писал без тестирования, попробуй, если будут ошибки пиши...

    P.P.S.
    при втором варианте я бы посоветовал тоже использовать bitrix.catalog, но тут сам смотри
  • Не работает добавление в корзину битрикс?

    @PetrPo
    Алексей Иванов, ну я так и не понял какие компоненты ты используешь, bitrix:catalog?
  • С чем связана ошибка?

    @PetrPo
    BX.ready(function() {
    // здесь твой скрипт
    });
  • Не работает добавление в корзину битрикс?

    @PetrPo
    Подробнее опиши где, что и как выводишь?

    Почему
    По клику на каждый раздел, получаю SECTION_ID и через ajax вставляю на страницу результат работы компонента bitrix:catalog.section

    а не стандартный AJAX_MODE или $APPLICATION->RestartBuffer() ?

    UPD
    На крайняк в onsuccess
    var obResult = BX.processHTML(data);
    BX.ajax.processScripts(obResult.SCRIPT);

    но лучше все-таки опиши чем стандартные средства не устраивают?