ship
\Bitrix\Sale\Result public \Bitrix\Catalog\Product\CatalogProvider::ship( array $products );
Метод изменяет остатки товаров при отгрузке или отмене отгрузки. Отрицательное количество списывает товар, положительное возвращает его на остаток. При складском учете метод также обновляет складские остатки и штрихкоды. Нестатический метод.
Параметры
| Параметр | Описание |
|---|---|
$products | Массив товаров с идентификаторами товаров в ключах. Передайте PRODUCT_ID и отрицательное QUANTITY для списания. При складском учете передайте складские позиции в STORE_DATA_LIST. Поле QUANTITY_LIST_BY_STORE само по себе не заменяет складские позиции, которые используются для изменения остатков и штрихкодов |
Возвращаемое значение
Метод возвращает объект \Bitrix\Sale\Result. Ключ SHIPPED_PRODUCTS_LIST содержит логический результат операции для каждого товара. Ошибки и предупреждения доступны через объект результата.
Особенности
Метод изменяет количество товара и складские данные. Выполняйте вызов в рамках штатного сценария отгрузки и передавайте сведения о складах из объектов отгрузки.
Пример
<?php
use Bitrix\Catalog\Config\State;
use Bitrix\Catalog\Product\CatalogProvider;
use Bitrix\Main\Loader;
if (!Loader::includeModule('catalog') || !Loader::includeModule('sale'))
{
throw new RuntimeException('Не удалось подключить модули catalog и sale');
}
if (State::isUsedInventoryManagement())
{
echo 'Пример предназначен для работы без складского учета';
return;
}
// Вызов спишет одну единицу существующего товара
$productId = 123;
$provider = new CatalogProvider(['SITE_ID' => SITE_ID]);
$result = $provider->ship([
$productId => [
'PRODUCT_ID' => $productId,
'QUANTITY' => -1,
],
]);
if (!$result->isSuccess())
{
echo implode(PHP_EOL, $result->getErrorMessages());
return;
}
print_r($result->getData()['SHIPPED_PRODUCTS_LIST'][$productId] ?? false);
© «Битрикс», 2001-2026, «1С-Битрикс», 2026