Ответы пользователя по тегу 1С-Битрикс
  • Почему могут не отображаться Торговые предложения в списке товаров?

    @photosho Автор вопроса
    Проблема решена.

    =)
    Помимо прочего, нужно было установить параметр "PRODUCT_DISPLAY_MODE" (Схема отображения = Расширенный).
    Ответ написан
  • Как автоматически получить значение свойства Файл?

    @photosho Автор вопроса
    Можно автоматически обработать свойства в зависимости от типа:

    $props = $item->getProperties();
    
    foreach ($props as $key => $prop) {
        if ($prop['PROPERTY_TYPE'] == 'F')
            $result[$key] = CFile::getPath($prop['VALUE']);
    
        else $result[$key] = $prop['VALUE'];
    }
    Ответ написан
  • Как организовать отправку цели Я.Метрики при регистрации пользователя?

    @photosho Автор вопроса
    Решил задачу при помощи блокировки отправки формы кнопкой "submit" и отправки ее самостоятельно посредством ajax-запроса. Хотя, вариант из комментариев к вопросу кажется более жизнеспособным, если нужны именно "реальные" пользователи, подтверждающие свою учетную запись, а не отслеживание самого процесса регистрации. Зависит от задачи и того, что хотят от вас специалисты по рекламе.

    Опишу здесь свой вариант решения.

    1. "/template_name/components/bitrix/system.auth.registration/template_name/template.php"

    Здесь поставил на "submit button" событие onclick:

    onclick = "registerSubmit(event);"

    2. В основном файле скрипта (или в любом другом, загружающемся на странице):

    function registerSubmit(event) {
    	event.preventDefault();
    
    	var form = jQuery(event.target).closest('.registration-form');
    
    	if (form.length) {
    		form.find('[name="USER_EMAIL"]').val(form.find('[name="USER_LOGIN"]').val());
    
    		BX.ajax.post(
    			form.attr('data-ajax'),
    			form.serialize(),
    			function(result) {
    				var parent;
    
    				result = jQuery(result);
    
    				if (result.attr('id') == 'bx_incl_area_1') {
    					yaCounter52684615.reachGoal('LK');
    					location.href = '';
    				}
    				else {
    					/*
    						Обработка действий в случае неудачной попытки регистрации,
    						в этом случае в result приходит разметка формы с текстом ошибок.
    					*/
    				}
    			}
    		);
    	}
    
    	return false;
    }


    То же - и для авторизации, за исключением, что путь к шаблону компонента другой и некоторые изменения в самой функции. Некоторые действия, возможно, специфичны для конкретно моего решения и установленного шаблона - не знаю, какие изменения в шаблоны были внесены до меня. Эта строка:

    form.find('[name="USER_EMAIL"]').val(form.find('[name="USER_LOGIN"]').val());


    Заполняет невидимый input "USER_EMAIL" данными из input'а "USER_LOGIN" (туда пользователь, как ни странно, вводит свой email-адрес). Она может быть не нужна в стандартном (или любом другом) шаблоне.

    Но суть остается прежней: получаем форму-родителя кнопки "submit", на которую нажали, смотрим, чтобы все необходимые для регистрации поля были заполнены, сериализуем форму и посылаем post-запросом на требуемый адрес (у меня этот адрес был записан в "data-ajax"). Если все прошло успешно - перезагружаем страницу, а если нет - выполняем другие действия. Например, заменяем содержимое родителя формы тем, что пришло от сервера. Код в этой секции намеренно удалил, потому что он-то уж точно был специфичным.

    Для определения, прошло ли все успешно, смотрим, что возвращает сервер в обоих случаях, ищем различия между двумя результатами и так проверяем. У меня при успешной регистрации сервер возвращает пустой "div" с "id = bx_incl_area_1".
    Ответ написан
  • Как реализовать двухсоставное свойство инфоблока?

    @photosho Автор вопроса
    Комментарий Никита Ермиличев оказался полезен, но в данном вопросе помогла активация настройки "Выводить поле для описания значения" свойства инфоблока. Ссылка, таким образом, записывается в массив "DESCRIPTION" при считывании свойства.
    Ответ написан
  • Где в компоненте "bitrix:catalog.comments" задается шаблон комментария?

    @photosho Автор вопроса
    Проблема была нестандартная, может быть, кому-нибудь пригодится ее описание. На сайте производится смена шаблона, и основным шаблоном установлен старый, тогда как для конкретной страницы со списком комментариев установлен новый шаблон.

    Внутри "catalog.comments/template/ajax.php" есть строки, подключающие компонент, загружающий комментарии посредством ajax-запроса:

    $APPLICATION->IncludeComponent(
    			'bitrix:catalog.comments',
    			'',
    			$commParams,
    			null,
    			array('HIDE_ICONS' => 'Y')
    		);


    Здесь не указано имя шаблона. Пытался указать, передав тот шаблон компонента, с которым я его подключаю, но Bitrix выводит сообщение: "Cannot find template 'name' of page ''" - вот этот пустой параметр "page" меня смутил. Подозрения оказались верными: видимо, если параметр "page" (или что это) не установлен, то шаблон компонента ищется в папке с шаблоном сайта, установленным по умолчанию.

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

    @photosho Автор вопроса
    Проблема была в том, что неверно задавалась стоимость заказа при его создании (заказ создавался вручную) - не учитывалось количество товара. В результате, значения полей "Сумма заказа" и "Оплата > Стоимость > Сумма к оплате" были разными.
    Ответ написан
  • Почему не меняется флаг оплаты после успешной оплаты заказа?

    @photosho Автор вопроса
    Вопрос решен установкой галочки "Автоматически оплачивать заказ при получении успешного статуса оплаты" в настройках обработчика платежной системы.
    Ответ написан
  • Почему не заполняется наименование контрагента при экспорте заказов из Bitrix?

    @photosho Автор вопроса
    Разобрался, следовало настроить Профили обмена: "Магазин > Настройки > Интеграция с 1С > Профили обмена".
    Ответ написан