Как в Битрикс убрать цену массово

Как в битрикс групповым способом убрать цену

В интернет-магазинах на Битрикс часто возникает задача временно скрыть или полностью убрать цены с большого количества товаров. Это может быть связано с подготовкой к акции, сменой прайс-листов или обновлением ассортимента. Ручное редактирование карточек занимает часы, поэтому без массовых инструментов здесь не обойтись.

В административной панели Битрикс доступен модуль импорта и экспорта, позволяющий обнулять или удалять значения цен через CSV или Excel-файлы. При правильной настройке достаточно одного файла, чтобы внести изменения в сотни позиций одновременно. Такой метод особенно удобен, если база товаров регулярно обновляется и необходимо централизованное управление данными.

Альтернативный способ – использование массовых действий в списке товаров. С помощью фильтров можно выделить нужные категории и применить команду для удаления цен. Этот подход подходит для локальных задач, например, при скрытии стоимости только в определённой линейке продукции.

Удаление цен через массовое редактирование в списке товаров

Перейдите в раздел Каталог → Товары и отметьте позиции, где необходимо убрать цену. В верхней панели выберите действие Изменить и подтвердите переход в режим массового редактирования.

В открывшейся таблице найдите колонку Цена. Для всех отмеченных товаров очистите значения в поле ввода. Если предусмотрено несколько типов цен, удалите значения во всех соответствующих полях.

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

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

Использование экспорта и импорта для очистки цен

В административной панели откройте раздел «Каталог» → «Экспорт». Выберите формат CSV, отметьте поля: ID товара, Артикул и Цена. Сохраните файл и откройте его в редакторе таблиц.

Удалите значения в колонках с ценами. При необходимости оставьте заголовки колонок и идентификаторы товаров без изменений. Сохраните таблицу в том же формате CSV.

Затем перейдите в «Импорт» → «CSV для товаров». Укажите совпадение по ID или Артикулу. В настройках импорта выберите обновление существующих элементов и разрешите замену цен пустыми значениями.

После запуска импорта система очистит цены у всех указанных товаров. Перед массовой операцией рекомендуется протестировать процесс на небольшом количестве позиций.

Применение правил обработки данных в торговом каталоге

В Битрикс массовое управление ценами в каталоге реализуется через настройки правил обработки данных (Data Processing Rules). Эти правила позволяют автоматически изменять, скрывать или модифицировать цену товаров без ручного редактирования каждого элемента.

Для скрытия цены необходимо создать правило с условием «Цена > 0» и действием «Скрыть поле». Это правило применяется ко всем товарам, у которых цена установлена, включая варианты с разными типами цен и валютами.

Рекомендуется использовать фильтры по разделам и свойствам товаров, чтобы ограничить действие правила только нужными категориями. Например, можно скрывать цену только для товаров с типом «Услуга» или с флагом «Акционный».

При массовом применении правил важно проверять их на тестовой выборке. Битрикс позволяет предварительно просмотреть результаты обработки, что предотвращает случайное удаление или скрытие данных у всех товаров.

Для обновления каталога после изменения правил используют механизм «Пересчет цен» или задают автоматический запуск через планировщик (cron). Это обеспечивает актуальность данных при добавлении новых товаров или изменении существующих.

Использование правил обработки данных повышает эффективность администрирования каталога и снижает риск ошибок при ручной корректировке цен. Особенно полезно для крупных интернет-магазинов с тысячами товаров и множеством вариантов цен.

Очистка цен с помощью SQL-запроса в базе данных

Для массового удаления цен в Битрикс напрямую через базу данных необходимо работать с таблицами b_catalog_price и b_catalog_product. Перед выполнением запросов обязательно создайте резервную копию базы данных.

Пример запроса для очистки всех цен определенного типа (например, тип цены с CATALOG_GROUP_ID = 1):

DELETE FROM b_catalog_price WHERE CATALOG_GROUP_ID = 1;

Если требуется обнулить цену, сохранив записи, используйте:

UPDATE b_catalog_price SET PRICE = 0, CURRENCY = '' WHERE CATALOG_GROUP_ID = 1;

Для массового удаления цен конкретных товаров по ID:

DELETE FROM b_catalog_price WHERE PRODUCT_ID IN (101, 102, 103);

Для проверки текущих цен перед удалением используйте запрос:

SELECT PRODUCT_ID, PRICE, CURRENCY FROM b_catalog_price WHERE CATALOG_GROUP_ID = 1;

Важно учитывать связи с таблицей b_catalog_product, чтобы не нарушить целостность данных. Например, при удалении цен у товаров с набором торговых предложений следует также проверять b_catalog_product на наличие TYPE = 3 (SKU).

Действие SQL-запрос
Очистка всех цен определенного типа DELETE FROM b_catalog_price WHERE CATALOG_GROUP_ID = 1;
Обнуление цены без удаления записи UPDATE b_catalog_price SET PRICE = 0, CURRENCY = » WHERE CATALOG_GROUP_ID = 1;
Удаление цен конкретных товаров DELETE FROM b_catalog_price WHERE PRODUCT_ID IN (101, 102, 103);
Проверка текущих цен SELECT PRODUCT_ID, PRICE, CURRENCY FROM b_catalog_price WHERE CATALOG_GROUP_ID = 1;

После выполнения SQL-запросов рекомендуется выполнить пересчет кэша цен через административную панель или агент Битрикс для корректного отображения на сайте.

Удаление цен через API Bitrix

Для массового удаления цен в Битрикс используется метод catalog.product.update или catalog.price.delete через REST API. Работа проводится по идентификатору товара или массива товаров.

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

  1. Получение списка товаров с ценами:
    • Метод: catalog.product.list
    • Параметры: filter по инфоблоку и активным товарам
    • Результат: ID товаров для дальнейшего удаления цен
  2. Удаление цены конкретного типа:
    • Метод: catalog.price.delete
    • Параметры: PRODUCT_ID и PRICE_ID
    • Можно удалить несколько цен одного товара, вызвав метод по каждой цене
  3. Массовое удаление через пакетные запросы:
    • REST API поддерживает batch, что ускоряет обработку сотен и тысяч товаров
    • Пример структуры: массив команд catalog.price.delete с различными PRODUCT_ID

Рекомендации по безопасности и эффективности:

  • Перед удалением делайте резервную копию цен через catalog.price.list
  • Для больших массивов товаров используйте порционное удаление, чтобы не превышать лимиты API
  • Следите за типами цен: если есть базовая цена, её удаление может сделать товар недоступным для покупки
  • Логируйте результат каждого запроса, чтобы выявлять ошибки и повторно обрабатывать неудачные операции

После выполнения массового удаления рекомендуется вызвать catalog.product.recalculate для пересчета доступных цен и обновления индексов товаров.

Массовое обнуление цен через скрипт PHP

Для массового обнуления цен в Битрикс через PHP потребуется подключение модуля каталога и корректная работа с инфоблоками товаров.

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

  1. Подключить модуль каталога и инициализировать окружение:
<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule("iblock");
CModule::IncludeModule("catalog");
?>
  1. Получить ID инфоблока с товарами:
$iblockId = 2; // Замените на ID вашего инфоблока
  1. Сформировать выборку товаров и обновить цены:
$arFilter = ["IBLOCK_ID" => $iblockId, "ACTIVE" => "Y"];
$res = CIBlockElement::GetList([], $arFilter, false, false, ["ID"]);
while ($item = $res->GetNext()) {
$productId = $item["ID"];
$priceId = 1; // ID типа цены (обычно 1 – базовая цена)
CPrice::Update($priceId, [
"PRICE" => 0,
"CURRENCY" => "RUB"
]);
}

Рекомендации:

  • Перед запуском создайте резервную копию таблиц b_catalog_price и b_iblock_element.
  • Если товаров более 10 000, разбивайте выборку по порциям GetList([], $arFilter, false, ["nPageSize"=>500]).
  • Для различных типов цен используйте массив CPrice::GetList и обновляйте каждую запись.
  • После обнуления очистите кеш каталога через BXClearCache(true) или административный интерфейс.

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

Очистка цен при помощи модуля обмена с 1С

В Битрикс массовое удаление цен удобно выполнять через модуль обмена с 1С. Для этого необходимо использовать типовой механизм выгрузки товаров в 1С и обратно, корректно настроив прайс-листы.

Первый шаг – убедиться, что в настройках обмена включена выгрузка цен, но при этом установлены фильтры на пустое значение. В разделе «Настройки обмена» выберите «Выгружать цены», затем активируйте опцию «Удалять при отсутствии в файле». Это позволит при импорте из 1С автоматически очищать цены для товаров, которых нет в прайс-листе.

Для точечной очистки используйте формат XML, в котором передаются элементы с нулевым значением или тег отсутствует. При импорте Битрикс интерпретирует это как команду удалить существующую цену.

Рекомендуется предварительно протестировать выгрузку на тестовом каталоге. Создайте копию каталога с 50–100 товарами, чтобы убедиться, что очистка происходит только по нужным позициям, без удаления других данных.

После проверки загрузите обновленный файл на основной сайт. Обязательно включите журнал обмена – он фиксирует, какие цены были удалены и позволяет восстановить данные в случае ошибки.

При регулярных очистках создайте отдельный профиль обмена с 1С, где выгрузка цен будет единственной операцией. Это уменьшает риск случайного изменения остатков или свойств товаров.

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

Автоматизация регулярного удаления цен по расписанию

Для массового удаления цен в Битрикс по расписанию рекомендуется использовать агент или планировщик задач cron. Агент создается через административную панель: раздел «Настройки» → «Инструменты» → «Агенты». В теле агента необходимо написать функцию на PHP, которая перебирает товары через метод CIBlockElement::GetList с фильтром по ID инфоблока и удаляет цену через CPrice::DeleteByProduct.

Пример функции агента:

function RemovePricesAgent() {
$res = CIBlockElement::GetList([], ['IBLOCK_ID'=>10], false, false, ['ID']);
while($item = $res->Fetch()) {
CPrice::DeleteByProduct($item['ID']);
}
return "RemovePricesAgent();";
}

Для автоматизации через cron создается вызов агента через консольный скрипт: /bitrix/php_interface/cron_agent.php. Рекомендуется запуск раз в 24 часа, чтобы не перегружать сервер при большом количестве товаров. Для контроля добавьте логирование: запись времени выполнения, количества удаленных цен, ошибок.

Если товаров более 1000, используйте пакетную обработку: делите выборку на блоки по 100–200 элементов и обрабатывайте их отдельно, чтобы избежать превышения лимита памяти и таймаута PHP.

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

Использование такого подхода позволяет полностью исключить ручное удаление цен и обеспечивает точный контроль над регулярностью очистки прайс-листа.

Вопрос-ответ:

Можно ли убрать цену для всех товаров сразу через админку Битрикс?

Да, это можно сделать через массовое редактирование товаров. Для этого в разделе «Каталог» нужно выделить нужные товары, выбрать действие «Изменить» и очистить поле цены. После сохранения изменений цены исчезнут для выбранных элементов.

Как убрать цену массово с помощью экспорта и импорта?

Сначала выполняется экспорт товаров в CSV или Excel. В таблице удаляются значения в колонке с ценой, а затем файл импортируется обратно в Битрикс с включённой опцией обновления существующих товаров. После завершения процесса цены будут убраны.

Можно ли убрать цены у товаров, у которых они разные для разных типов клиентов?

Да, но здесь потребуется учитывать типы цен. В Битриксе при массовом редактировании можно выбрать конкретный тип цены и удалить её значения. Это позволит убрать цену только для выбранной группы клиентов, не затрагивая другие.

Есть ли способ убрать цену массово через SQL или скрипт?

Технически возможно использовать скрипт или прямой запрос к базе данных для удаления цен, но это требует осторожности, чтобы не повредить структуру каталога. Обычно создают скрипт на PHP с использованием API Битрикса, который проходит по всем товарам и очищает значения поля цены.

Ссылка на основную публикацию