On this page
add_shopping_cart
Создание приходного ордера в Битрикс24
Примеры создания приходных ордеров в Битрикс24 с использованием PHP, включая добавление товаров и привязку к складу.
Описание
Модуль “Складской учет” в Битрикс24 позволяет вести учет товаров и управлять складскими операциями. Данный раздел содержит примеры PHP-кода, демонстрирующие создание приходных ордеров. Приходный ордер используется для фиксации поступления товаров на склад. Это может быть полезно для автоматизации процессов приемки товаров, интеграции с системами поставщиков или учета возвратов.
Примеры использования
Пример 1: Создание простого приходного ордера
Этот пример показывает, как создать базовый приходный ордер с указанием склада и списка товаров.
use Bitrix\Catalog\StoreDocumentTable;
use Bitrix\Catalog\StoreDocumentElementTable;
use Bitrix\Main\Loader;
Loader::includeModule('catalog');
// ID склада, на который приходят товары
$storeId = 1; // Замените на реальный ID склада
// Список товаров для прихода
$products = [
[
'PRODUCT_ID' => 10, // ID товара
'AMOUNT' => 5, // Количество
'PRICE' => 100.00, // Цена за единицу
],
[
'PRODUCT_ID' => 20,
'AMOUNT' => 2,
'PRICE' => 250.50,
],
];
// Создание нового приходного ордера
$documentFields = [
'SITE_ID' => 's1', // ID сайта
'DOC_TYPE' => StoreDocumentTable::TYPE_ARRIVAL, // Тип документа: приход
'STATUS' => 'D', // Статус: Черновик (D - Draft, N - New, Y - Done)
'DATE_CREATE' => new \Bitrix\Main\Type\DateTime(),
'CREATED_BY' => $USER->GetID(),
'DATE_STATUS' => new \Bitrix\Main\Type\DateTime(),
'STATUS_BY' => $USER->GetID(),
'COMMENT' => 'Приход товаров по накладной №123',
'CURRENCY' => 'RUB',
'TOTAL' => 0, // Будет пересчитано автоматически
'STORE_ID' => $storeId,
];
$result = StoreDocumentTable::add($documentFields);
$documentId = 0;
if ($result->isSuccess()) {
$documentId = $result->getId();
$this->TrackingService->WriteToTrackingService("Приходный ордер успешно создан. ID: " . $documentId);
// Добавление товаров в приходный ордер
$totalAmount = 0;
foreach ($products as $product) {
$elementFields = [
'DOC_ID' => $documentId,
'PRODUCT_ID' => $product['PRODUCT_ID'],
'AMOUNT' => $product['AMOUNT'],
'PURCHASING_PRICE' => $product['PRICE'],
];
$elementResult = StoreDocumentElementTable::add($elementFields);
if ($elementResult->isSuccess()) {
$totalAmount += $product['AMOUNT'] * $product['PRICE'];
$this->TrackingService->WriteToTrackingService("Товар " . $product['PRODUCT_ID'] . " добавлен.");
} else {
$this->TrackingService->WriteToTrackingService("Ошибка добавления товара " . $product['PRODUCT_ID'] . ": " . implode(', ', $elementResult->getErrorMessages()));
}
}
// Обновление общей суммы документа
StoreDocumentTable::update($documentId, ['TOTAL' => $totalAmount]);
// Изменение статуса на "Проведен"
StoreDocumentTable::update($documentId, ['STATUS' => 'Y']);
} else {
$this->TrackingService->WriteToTrackingService("Ошибка создания приходного ордера: " . implode(', ', $result->getErrorMessages()));
}
$rootActivity = $this->GetRootActivity();
$rootActivity->SetVariable("NewInventoryReceiptId", $documentId);
Параметры
$storeId
(int): ID склада, на который осуществляется приход товаров.$products
(array): Массив товаров, где каждый элемент - это массив сPRODUCT_ID
,AMOUNT
иPRICE
.
Возвращаемые значения
NewInventoryReceiptId
(int): ID созданного приходного ордера.
Рекомендации по использованию
- Всегда проверяйте наличие необходимых модулей (
catalog
) с помощьюLoader::includeModule()
. - Убедитесь, что указанные
PRODUCT_ID
иSTORE_ID
существуют в вашей системе Битрикс24. - Для более сложных сценариев (например, приход с несколькими складами, учет серийных номеров) потребуется более детальная работа с API модуля “Складской учет”.
- Результаты операций передаются в переменные бизнес-процесса с помощью
SetVariable()
.