Всем привет.

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

Первый вариант.

Требуется доступ к базе, или админке, чтобы выполнить mysql запрос:

UPDATE `b_catalog_product` SET QUANTITY_TRACE = 'Y'

В админке вам надо пройти в «Рабочий стол > Настройки > Инструменты > SQL запрос» или по адресу ваш_сайт/bitrix/admin/sql.php и выполнить там этот запрос.

Второй вариант.
Нужно выполнить скрипт, который переберет все товары и проставит им нужный параметр.

<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");

CModule::IncludeModule("catalog");

$upd = 0;
$prodSections = CIBlockElement::GetList(
	array(),
	array(
		"IBLOCK_ID" => 3, //инфоблок в котором у вас каталог
	),
	false,
	false,
	array('ID')
);
echo 'all elements '.$prodSections->SelectedRowsCount();

while($arSection = $prodSections->GetNext()){
	if (CCatalogProduct::Update(
		$arSection['ID'],
		array('QUANTITY_TRACE' => 'Y')
	)){
		$upd++;
	}
}
echo '<br>updated '.$upd.' elements';

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
?>

К минусам этих методов можно отнести то что они работают разово и для вновь добавленных товаров надо будет снова вызывать их.

Чтобы навсегда забыть об этой проблеме, вам надо в файле
/bitrix/php_interface/init.php
добавить свой обработчик события добавления товара OnProductAdd.

AddEventHandler("sale", "OnProductAdd", "OnProductAdd");
function OnProductAdd(&$ID,$Fields)
{
	$res=Array("QUANTITY_TRACE"=>"Y");
	CCatalogProduct::Update($ID,$res);
}

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

Удачи вам в работе с битриксом.

Bitrix — как поставить всем товарам чекбокс «Уменьшать количество при заказе»

2 комментариев к “Bitrix — как поставить всем товарам чекбокс «Уменьшать количество при заказе»

  • 17.08.2012 в 12:59
    Постоянная ссылка

    В какую часть файла вставлять данный кусок кода? (между чем и чем, чтобы не испортить скрипт)

    И влияет ли это на правильность отображения товара в YML-файле для Яндекс.Маркета?

    Ответить
    • 17.08.2012 в 13:24
      Постоянная ссылка

      Андрей, если вы о третьем способе, то этот надо вставить в конец файла /bitrix/php_interface/init.php перед закрывающим php тегом ?>

      На выгрузку для Я.Маркета это не должно повлиять.

      Ответить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

90% сайтов рунета содержат уязвимости и могут быть взломаны! Проверь свой сайт!