Ответы пользователя по тегу 1С-Битрикс
  • Как загрузить товары из файла импорта независимо от того, были ли они изменены?

    @photosho Автор вопроса
    Нужно было один раз выполнить импорт всех товаров независимо от того, менялись они или нет, для заполнения определенного свойства значением, приходящим со склада. Так как такой импорт нужно было сделать только один раз, прибег к изменению файлов ядра (которые потом отменил). Если кому-нибудь будет нужно, объясняю, как сделал.

    /bitrix/modules/iblock/classes/general/cml2.php

    Строка 2973:

    if($bMatch && $this->use_crc)

    Здесь производится проверка контрольной суммы, а в "else" после этого блока - как раз действия, выполняемые, если товар был изменен. Нужно отключить этот блок, самый простой способ:

    if($bMatch && $this->use_crc && false)

    Тогда все товары будут импортироваться, даже если они не были изменены. Только после импорта изменения необходимо отменить - менять файлы ядра запрещено.
    Ответ написан
    Комментировать
  • Можно ли отключить блок "Дополнительные свойства" на странице заказа?

    @photosho Автор вопроса
    Разобрался. За это отвечает поле "PRODUCT_COLUMNS_HIDDEN" при подключении компонента "sale.order.ajax". В визуальном редакторе это, видимо, называется так:

    Свойства товаров отображаемые в свернутом виде в списке товаров:
    Ответ написан
    Комментировать
  • Как правильно масштабировать изображение при добавлении элемента инфоблока?

    @photosho Автор вопроса
    Проблему решил, не знаю, насколько правильным способом. Такое ощущение, что изменения в массиве "PREVIEW_PICTURE" в "arFields" события не влияют на изображение. Сделал так:

    $file = CFile::resizeImageGet(
      $arFields['PREVIEW_PICTURE_ID'],
      ['width' => 405, 'height' => 300],
      BX_RESIZE_IMAGE_PROPORTIONAL
    );
    
    $file['del'] = 'Y';
    
    $fields = [
      'PREVIEW_PICTURE' => CFile::makeFileArray($file['src'])
    ];
    
    $el = new CIBlockElement;
    $el->update($arFields['ID'], $fields);
    Ответ написан
  • Почему могут не отображаться Торговые предложения в списке товаров?

    @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 Автор вопроса
    Вопрос решен установкой галочки "Автоматически оплачивать заказ при получении успешного статуса оплаты" в настройках обработчика платежной системы.
    Ответ написан
    2 комментария
  • Почему не заполняется наименование контрагента при экспорте заказов из Bitrix?

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