Востребовалось тут в интернет-магазине сделать учет наличия товаров не только на собственном складе, но и на складах поставщиков, где его можно шустро перехватить в случае необходимости.
Дело было в УТ 11, где такой возможности, странно, но факт, нет. Есть разные предложения по «закостыливанию», к примеру, сделать отдельный склад в 1С и заводить туда товары через инвентаризацию, но это изничтожит весь учет в программе, или есть вариант скопировать обработки склада в конфигурации, но это тоже не айс, т.к. требует сильных изменений.
Тогда решили сделать отдельный ИБ в Битрикс, где будет всего два поля — Название, оно же артикул товара, и наличие на складах поставщика.
Далее в работе компонентов битрикса по определению наличия товара добавили вызов нашего компонента:
$APPLICATION->IncludeComponent("spl:instock","",Array("SKU" => $arResult["DISPLAY_PROPERTIES"]["CML2_ARTICLE"]["VALUE"]));
Само тело компонента:
<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$search_in=array(12,13);//список ИБ, где искать наличие if(CModule::IncludeModule("iblock")) { foreach ($search_in as $search_block_id){ $arSelect = Array("ID","NAME","PROPERTY_INSTOCK"); $arFilter = Array("IBLOCK_ID"=>$search_block_id,"NAME"=>$arParams['SKU']); $arCargo = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect); if ($ob = $arCargo->GetNextElement()) { $arFields = $ob->GetFields(); $arProps = $ob->GetProperties(); if ($arFields['PROPERTY_INSTOCK_VALUE']>0)break; } } return $arFields['PROPERTY_INSTOCK_VALUE']; } ?>
Один комментарий к “Учет наличия товаров на складах поставщиков”