Меню
Массово изменить коэффициент единицы измерения в каталоге

Задача: всем товарам каталога или товарам определённого раздела изменить коэффициент единицы измерения.
Автоматическая установка коэффициента для товаров при обновлении, например, устанавливать коэффициент равным 2, если цена товара превышает определенное значение:
Код
<?php
use Bitrix\Main\EventManager;
use Bitrix\Main\Loader;

EventManager::getInstance()->addEventHandler("iblock", "OnBeforeIBlockElementUpdate", "setMeasureRatioBasedOnPrice");

function setMeasureRatioBasedOnPrice(&$arFields) {
    if ($_REQUEST['mode'] == 'import') {
        Loader::includeModule('catalog');

        $elementID = $arFields['ID'];
        if (!$elementID) {
            return;
        }

        // Получим актуальную цену товара
        $res = \Bitrix\Catalog\ProductTable::getList([
            'filter' => ['ID' => $elementID],
            'select' => ['PRICE']
        ]);
        if ($item = $res->fetch()) {
            $price = floatval($item['PRICE']);

            // Устанавливаем коэффициент в зависимости от цены
            $newRatio = ($price > 1000) ? 2 : 1;

            // Получаем ID коэффициента
            $curElementRatio = \Bitrix\Catalog\MeasureRatioTable::getList([
                'filter' => [
                    '=PRODUCT_ID' => $elementID,
                ],
                'limit' => 1,
                'select' => ['ID'],
            ])->fetch();

            if ($curElementRatio) {
                // Обновляем коэффициент
                \Bitrix\Catalog\MeasureRatioTable::update($curElementRatio['ID'], [
                    'RATIO' => $newRatio,
                ]);
            }
        }
    }
}
?>
Видеоуроки по
1С-Битрикс
на моем Boosty канале Видео
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 

Блог-note: заметки разработчика

Вывести компонент новостей на страницу в Битрикс

Посмотрел Яндекс метрику на свой сайт, и решил что буду частенько писать сюда именно то, что ищут люди. Итак за последню...

Показать пользователей онлайн на странице сайта

Задача: показать на странице сайта пользователей которые сейчас находятся на сайте. Используется штатный модуль "Ве...

Проверка на наличие элементов, текущего пользователя, в заданном инфоблоке.

Если стоит задача, определить наличие элементов созданных пользователем на сайте. Можно воспользоваться API: CUser и CIB...

Обновление 1С-Битрикс с PHP 7, до поддержки версии PHP 8.3

Задача: обновить устаревший сайт на платформе 1С-Битрикс, который не получал обновлений уже более 4 лет и работает на PH...

Заполнить коэффициент единицы измерения (MEASURE_RATIO) из свойства элемента

Задача: Каталог наполняется из 1С, но 1С не передает коэффициент единицы измерения (особенность конкретной 1С, но во...

Изменить размер картинок по ID файла, в 1C-Битрикс

Задача: изменить размер картинок загруженных в элементы инфоблока, для оптимизации их размера и подгонки под содержимое...

Переключатель валюты в каталоге 1С-Битрикс

Задача: Дать пользователю возможность самостоятельно выбирать валюту, в которой он хочет видеть цены, в разделе каталога...

Показать доступный остаток каждого товара в корзине 1С-Битрикс

Задача: показать остаток каждого товара в корзине 1С-Битрикс, что бы покупатель сразу знал предельное колличество товара...

INPUT type="file" Предпросмотр превью картинки до загрузки

Рассмотрим на примере компонента "Форма добавления-редактирования элементов инфоблока", как сделать ее более удобной для...