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

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
Наверх