+7 495 008 8452 пн.-пт. 10:00 – 17:00
Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


Массовое изменение цен товаров.

UPD. Появилось стандартное решение битрикса: https://dev.1c-bitrix.ru/learning/cour...ON_ID=8019

Доброго времени суток!
Периодически в техподдержку поступают вопросы вида:
Как поднять цены на все товары? Через наценки не получается
Обычно такие запросы приходят перед праздниками или после роста курса валют.
Через наценки действительно не получится в несколько кликов поднять цены сразу на весь каталог.
Если товаров на сайте много, а поднять цены надо, то выручить может API.

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

Рассмотрим простейший пример каталога без торговых предложений.
Есть 5 товаров в каталоге, в колонке справа видно цену этих товаров.
1.png  
Перед нами встала задача поднять цену на эти товары на 30%.
Первым делом, собираем нужную нам информацию.
Смотрим ID инфоблока, в котором хранятся товары.  Это можно сделать разными способами, один из самых простых:
 2.png
3.png

ID нашего инфоблока – 4.
Теперь надо выяснить ID типа цены и код валюты.
Открываем карточку товара и смотрим, в каком типе цены мы храним цену, а так же какая валюта используется:
4.png

После этого переходим на страницу «Рабочий стол – Магазин – Настройки - Типы цен» и находим ID нашего типа цены:
5.png
ID нашего типа цены – 1.
Валюта RUB

Переходим непосредственно к скрипту.
Скрипт нужно скопировать и вставить на странице "Рабочий стол - Настройки - Инструменты - Командная PHP-строка". Сам скрипт расположен чуть ниже в статье.
Не запускайте код сразу!
Сначала нужно внести данные, которые мы получили.
В строке:
 "CATALOG_GROUP_ID" => 1, //ID типа цены
мы вносим ID типа цены (1).

"CURRENCY" => "RUB" // Валюта
В этой строке указываем валюту.
"ELEMENT_IBLOCK_ID" => 4, //ID инфоблока с товарами
Тут указываем ID нашего инфоблока с товарами (4).


Теперь самое главное, строка в которой меняется цена.
$UpdatedPrice = $ar_res["PRICE"] * 1.3; // Здесь мы меняем цену
Если перевести на человеческий язык, то получится так:
Новая цена = старая цена * 1.3 (то есть умножили старую цену на 130%).

Теперь весь код полностью:
Cmodule::IncludeModule("catalog");

$db_res = CPrice::GetList(
        array(),
        array(
      "ELEMENT_IBLOCK_ID" => 4, //ID инфоблока с товарами
        "CATALOG_GROUP_ID" => 1, //ID типа цены
      "CURRENCY" => "RUB" // Валюта
        )
    );
while($ar_res = $db_res->Fetch())
{
    $UpdatedPrice = $ar_res["PRICE"] * 1.3; // Здесь мы меняем цену
    CPrice::Update($ar_res["ID"], Array("PRICE" => $UpdatedPrice));
}


Я выполнил этот код и цены обновились на все товары на 30%:

6.png

На этом всё!
Данный код можно использовать как в чистом виде, если у вас простой каталог, либо как заготовку для доработки.
Код не подойдет тем, у кого, например, используется 2 валюты в каталоге.
Рассмотрю варианты по доработке статьи и скрипта, оставляйте в комментариях пожелания.


Дополнительная информация по API:
http://dev.1c-bitrix.ru/api_help/iblo.../index.php
http://dev.1c-bitrix.ru/api_help/cata...7c2a3e.php
http://dev.1c-bitrix.ru/api_help/cata...update.php




Назад в раздел

Подписаться на новые материалы раздела:












CAPTCHA