SuperAPI AI 工具集

bitrix-catalog

办公与效率

查看项目

更新于 10-15 17:30

技能介绍

用途:在 Bitrix 中基于 iblocks 构建交易目录,覆盖目录信息块注册、产品类型、SKU/报价、价格类型与价格、库存与仓库、仓库权限。基线为主模块 23.0+,已在 catalog 26.400.0、main 26.800.0 验证。产品 ID 即信息块元素 ID,需加载 iblock 与 catalog;购物车、订单、支付归 bitrix-sale,元素与属性归 bitrix-iblocks。

主要能力与用法:读取产品/价格/仓库行用 ProductTable、PriceTable、StoreProductTable、CatalogIblockTable(ORM);写入产品字段(数量、类型、税)用 Model\Product::add/update,会重算 AVAILABLE、父级 SKU 类型与可用性、套装、订阅;写入价格用 Model\Price::add/update/delete,会计算 PRICE_SCALE、校验货币并重算父级 SKU 价格;注册目录信息块用 CCatalog::Add/Update(无 D7 写入器)。禁止直接写 ProductTable/PriceTable:PriceTable::add() 缺少 PRICE_SCALE 会校验失败,直接写入还会跳过可用性与 SKU 重算。

目录信息块与 SKU:用 \CCatalog::Add 注册简单目录或带 PRODUCT_IBLOCK_ID、SKU_PROPERTY_ID 的报价信息块;\CCatalogSku::GetInfoByIBlock 获取 CATALOG_TYPE 等。CATALOG_TYPE 含 TYPE_CATALOG、TYPE_PRODUCT、TYPE_OFFERS、TYPE_FULL;\CCatalogSku::getOffersList 取产品报价。产品类型见 ProductTable::TYPE_*(PRODUCT、SET、SKU、OFFER、FREE_OFFER、EMPTY_SKU、SERVICE),购买应针对报价(TYPE_OFFER)而非 SKU 父级。

价格:价格类型见 GroupTable,基础类型用 GroupTable::getBasePriceTypeId();可见/可购权限用 GroupAccessTable。增值税在产品的 VAT_ID、VAT_INCLUDED,税率在 VatTable。买家最终价格与折扣由 sale 计算,不通过读取 PriceTable。

库存与仓库:产品级有 QUANTITY、QUANTITY_RESERVED、QUANTITY_TRACE、CAN_BUY_ZERO、AVAILABLE;仓库用 StoreTable 与 StoreProductTable,仓库操作(收货、移库、核销)走库存单据 StoreDocumentTable,用 CCatalogDocs::conductDocument($docId, $userId) 过账,失败返回 false 并用 $APPLICATION->GetException(),不要直接改 AMOUNT 或写 SQL。仓库权限通过 AccessController::getCurrent()->getEntityFilter(ActionDictionary::ACTION_STORE_VIEW, StoreProductTable::class) 过滤;自 catalog 26.400 起 REST catalog.storeproduct.list/get 与 catalog.document.element.list 应用该过滤,禁止仓库的单据行相关字段返回 null 且不可筛选排序。管理员与旧访问模式(AccessController::getCurrent()->isLegacyAccessMode())不过滤库存行,更早版本 REST 返回全部仓库,需在集成端过滤。

限制与建议:检查 iblock 与 catalog 已加载;产品与价格写入走 Model\Product / Model\Price 并检查每个 Result;基础价格类型不硬编码 ID;报价而非 SKU 父级入购物车;受限用户读取库存时加仓库访问过滤,不用裸 SQL;批量读取先收集 ID 再一次查询,避免循环调用 CCatalogProduct::GetByID。