При выгрузке из 1с в битриксе флаг уменьшать количество при заказе автоматически не проставляется, что приводит к потери актульности оперативных остатков в битриксе + проблемы с выгрузкой в yandex market и другие торговые площадки.
Решение будет следующее
1. вариант кода класический
необходимо в файле init.php добавить код который будет срабатывать при добавление продукта (через событиеOnProductAdd):
<? AddEventHandler("sale", "OnProductAdd", "OnProductAdd"); function OnProductAdd($ID,$Fields) { $res=Array("QUANTITY_TRACE"=>'Y); CCatalogProduct::Update($ID,$res); } ?>
2. вариант кода
Создаем файл update_q.php со следующим содержанием
<? global $DB; $DB->Query("UPDATE `apple`.`b_catalog_product` SET `QUANTITY_TRACE` = 'Y' WHERE `b_catalog_product`.`QUANTITY_TRACE` = 'N'"); ?>
3. вариант кода
Создаем файл update_q.php со следующим содержанием
<? /* * ---------------------------------------------------- * 1C-Bitrix * ---------------------------------------------------- * by Limarc /Alexander Lobashev/ * (c) 2007-2009 by Limarc * _link: http://www.free-lance.ru/users/Limarc * ---------------------------------------------------- * Index: work.qtrace.php * Version Number: 1.0 * ---------------------------------------------------- */ require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); // // Загрузка модулей Битрикса // if (!CModule::IncludeModule('iblock') or !CModule::IncludeModule('catalog')) { die ('Ошибка в загрузки модулей...'); } // // work.qtrace -> Конфигурация запроса // $e = false; $arFilter = array ( "IBLOCK_ID" => 4, "IBLOCK_TYPE" => "1c_catalog", ); $arSelect = array("ID"); // // work.qtrace -> Запрос // $getQuery = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect); // // work.qtrace -> Обновляем параметры // if ($getQuery->SelectedRowsCount() > 0) { while ($arFields = $getQuery->GetNext()) { $arProperty = array ( 'QUANTITY_TRACE' => 'Y', ); if (!CCatalogProduct::Update($arFields['ID'], $arProperty)) { $e = true; echo "<p style='font: 1.3em Trebuchet MS, Tahoma, Sans-serif; color: #ff0000;'>Error — ".$arFields['ID']."</p>"; } } } else { echo "<p style='font: 1.3em Trebuchet MS, Tahoma, Sans-serif; color: #ff0000;'>Not found elements...</p>"; } if ($e === false) { echo "<p style='font: 1.3em Trebuchet MS, Tahoma, Sans-serif; color: #666666;'>Complete...</p>"; } ?>
Подключаем его выполнение после обмена с 1с, в файле /bitrix/admin/1c_exchange.php, в итоге мой файл 1c_exchange.php выглядит следующим образом
<? require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/admin/1c_exchange.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/include/update_q.php"); ?>
P.S.
Если решение не отрабатывает тогда вставляем код с update_q.php напрямую в /bitrix/modules/sale/admin/1c_exchange.php.
You can ask sellers what time they will offer coupons to customers. By doing so, you can clip coupons the moment they provide coupons to customers.
obtain for ladies or aviator sunglasses for males, there are lots of options to choose from.