Документация для разработчиков
Темная тема

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