Loading...
Loading...
Compare original and translation side by side
iblockcatalogsalebitrix-sale\Bitrix\Main\Loader::includeModule('iblock');
\Bitrix\Main\Loader::includeModule('catalog');b_catalog_productProductTableb_catalog_pricePriceTableb_catalog_iblockCatalogIblockTableCCatalogiblockcatalogsalebitrix-sale\Bitrix\Main\Loader::includeModule('iblock');
\Bitrix\Main\Loader::includeModule('catalog');b_catalog_productProductTableb_catalog_pricePriceTableb_catalog_iblockCatalogIblockTableCCatalog\CCatalog::Add([
'IBLOCK_ID' => $productIblockId,
'YANDEX_EXPORT' => 'N',
'SUBSCRIPTION' => 'N',
]);$row = \Bitrix\Catalog\CatalogIblockTable::getByPrimary($productIblockId)->fetch();
// IBLOCK_ID, PRODUCT_IBLOCK_ID, SKU_PROPERTY_ID, VAT_ID, …CCatalogSkucatalog/general/catalog_sku.php| Constant | Meaning |
|---|---|
| Simple catalog (no SKU) |
| Product iblock with separate offers iblock |
| Offers (SKU) iblock |
| Product iblock that itself holds simple products + SKUs |
$info = \CCatalogSku::GetInfoByIBlock($iblockId);
// CATALOG_TYPE, PRODUCT_IBLOCK_ID, SKU_PROPERTY_ID, …\CCatalog::Add([
'IBLOCK_ID' => $productIblockId,
'YANDEX_EXPORT' => 'N',
'SUBSCRIPTION' => 'N',
]);$row = \Bitrix\Catalog\CatalogIblockTable::getByPrimary($productIblockId)->fetch();
// IBLOCK_ID, PRODUCT_IBLOCK_ID, SKU_PROPERTY_ID, VAT_ID, …CCatalogSkucatalog/general/catalog_sku.php| 常量 | 含义 |
|---|---|
| 简单目录(无SKU) |
| 产品iblock,关联独立的报价iblock |
| 报价(SKU)iblock |
| 自身包含简单产品+SKU的产品iblock |
$info = \CCatalogSku::GetInfoByIBlock($iblockId);
// CATALOG_TYPE, PRODUCT_IBLOCK_ID, SKU_PROPERTY_ID, …ProductTableProductTablecatalog/lib/product.php| Constant | Value | Meaning |
|---|---|---|
| 1 | Simple product |
| 2 | Set / bundle |
| 3 | Parent with offers |
| 4 | Offer (SKU variant) |
| 5 | Offer without parent link |
| 6 | SKU parent without offers |
| 7 | Service (no warehouse tracking) |
use Bitrix\Catalog\ProductTable;
$product = ProductTable::getByPrimary($elementId, [
'select' => ['ID', 'TYPE', 'QUANTITY', 'AVAILABLE', 'VAT_ID', 'VAT_INCLUDED'],
])->fetch();
ProductTable::update($elementId, [
'QUANTITY' => 10,
'QUANTITY_TRACE' => ProductTable::STATUS_YES,
'CAN_BUY_ZERO' => ProductTable::STATUS_NO,
]);\Bitrix\Catalog\Model\ProductCCatalogProductcatalog/lib/product.php| 常量 | 值 | 含义 |
|---|---|---|
| 1 | 简单产品 |
| 2 | 套装/捆绑商品 |
| 3 | 关联报价的父产品 |
| 4 | 报价(SKU变体) |
| 5 | 无父产品关联的报价 |
| 6 | 无报价的SKU父产品 |
| 7 | 服务类产品(无需仓库跟踪) |
use Bitrix\Catalog\ProductTable;
$product = ProductTable::getByPrimary($elementId, [
'select' => ['ID', 'TYPE', 'QUANTITY', 'AVAILABLE', 'VAT_ID', 'VAT_INCLUDED'],
])->fetch();
ProductTable::update($elementId, [
'QUANTITY' => 10,
'QUANTITY_TRACE' => ProductTable::STATUS_YES,
'CAN_BUY_ZERO' => ProductTable::STATUS_NO,
]);\Bitrix\Catalog\Model\ProductCCatalogProductPROPERTY_TYPE = ELINK_IBLOCK_ID = product iblockUSER_TYPE = SKUPropertyTable::USER_TYPE_SKU\CCatalog::Add([
'IBLOCK_ID' => $offersIblockId,
'PRODUCT_IBLOCK_ID' => $productIblockId,
'SKU_PROPERTY_ID' => $skuPropertyId, // E-property on offers iblock
]);TYPE_SKUTYPE_OFFERTYPE_PRODUCTPROPERTY_TYPE = ELINK_IBLOCK_ID = 产品iblock IDUSER_TYPE = SKUPropertyTable::USER_TYPE_SKU\CCatalog::Add([
'IBLOCK_ID' => $offersIblockId,
'PRODUCT_IBLOCK_ID' => $productIblockId,
'SKU_PROPERTY_ID' => $skuPropertyId, // 报价iblock上的E类型属性
]);TYPE_SKUTYPE_OFFERTYPE_PRODUCTb_catalog_groupBitrix\Catalog\GroupTableBASENAMEGroupAccessTableCCatalogGroupBitrix\Catalog\PriceTablePRODUCT_IDCATALOG_GROUP_IDPRICECURRENCYQUANTITY_FROMQUANTITY_TOuse Bitrix\Catalog\PriceTable;
use Bitrix\Catalog\GroupTable;
$base = GroupTable::getRow(['filter' => ['=BASE' => 'Y']]);
PriceTable::add([
'PRODUCT_ID' => $elementId,
'CATALOG_GROUP_ID' => (int)$base['ID'],
'PRICE' => 1990.00,
'CURRENCY' => 'RUB',
]);
$prices = PriceTable::getList([
'filter' => ['=PRODUCT_ID' => $elementId],
'select' => ['ID', 'PRICE', 'CURRENCY', 'CATALOG_GROUP_ID'],
])->fetchAll();CPriceVAT_IDVAT_INCLUDEDb_catalog_groupBitrix\Catalog\GroupTableBASENAMEGroupAccessTableCCatalogGroupBitrix\Catalog\PriceTablePRODUCT_IDCATALOG_GROUP_IDPRICECURRENCYQUANTITY_FROMQUANTITY_TOuse Bitrix\Catalog\PriceTable;
use Bitrix\Catalog\GroupTable;
$base = GroupTable::getRow(['filter' => ['=BASE' => 'Y']]);
PriceTable::add([
'PRODUCT_ID' => $elementId,
'CATALOG_GROUP_ID' => (int)$base['ID'],
'PRICE' => 1990.00,
'CURRENCY' => 'RUB',
]);
$prices = PriceTable::getList([
'filter' => ['=PRODUCT_ID' => $elementId],
'select' => ['ID', 'PRICE', 'CURRENCY', 'CATALOG_GROUP_ID'],
])->fetchAll();CPriceVAT_IDVAT_INCLUDEDProductTableQUANTITYQUANTITY_RESERVEDQUANTITY_TRACECAN_BUY_ZEROAVAILABLEStoreTableb_catalog_storeStoreProductTableb_catalog_store_productSTORE_IDPRODUCT_IDAMOUNTQUANTITY_RESERVEDStoreDocumentTableStoreBatchTableuse Bitrix\Catalog\StoreProductTable;
$amounts = StoreProductTable::getList([
'filter' => ['=PRODUCT_ID' => $elementId],
'select' => ['STORE_ID', 'AMOUNT', 'QUANTITY_RESERVED'],
])->fetchAll();TYPE_SERVICEProductTableQUANTITYQUANTITY_RESERVEDQUANTITY_TRACECAN_BUY_ZEROAVAILABLEStoreTableb_catalog_storeStoreProductTableb_catalog_store_productSTORE_IDPRODUCT_IDAMOUNTQUANTITY_RESERVEDStoreDocumentTableStoreBatchTableuse Bitrix\Catalog\StoreProductTable;
$amounts = StoreProductTable::getList([
'filter' => ['=PRODUCT_ID' => $elementId],
'select' => ['STORE_ID', 'AMOUNT', 'QUANTITY_RESERVED'],
])->fetchAll();TYPE_SERVICEsalesale| Concern | Module |
|---|---|
| Product card, type, qty, prices, stores | |
| Basket, order, payment, delivery, shipments | |
catalogbitrix-sale| 关注点 | 所属模块 |
|---|---|
| 产品卡片、类型、数量、价格、门店 | |
| 购物车、订单、支付、配送、发货 | |
catalogbitrix-sale| Use | Prefer |
|---|---|
| Read product/price/store rows | |
| Write with catalog side effects | |
| Legacy admin / compatibility | |
bitrix/modules/catalog/lib/v2| 使用场景 | 优先方案 |
|---|---|
| 读取产品/价格/门店记录 | |
| 写入并触发目录相关副作用 | |
| 遗留后台/兼容性需求 | |
v2bitrix/modules/catalog/lib/CCatalogProduct::GetByIDCCatalogProduct::GetByIDiblockcatalogCCatalog::AddCatalogIblockTablePRODUCT_IBLOCK_IDSKU_PROPERTY_IDProductTable::TYPE_*PriceTableGroupTableStoreProductTablesalebitrix-saleiblockcatalogCCatalog::AddCatalogIblockTablePRODUCT_IBLOCK_IDSKU_PROPERTY_IDProductTable::TYPE_*PriceTableGroupTableStoreProductTablesalebitrix-sale