Настройка статусов заказа 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка статусов заказа 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка статусов заказа 1С-Битрикс

Каждый заказ проходит через цепочку статусов: «Принят» → «Обрабатывается» → «Передан в доставку» → «Доставлен». Стандартная поставка 1С-Битрикс даёт базовый набор, который редко совпадает с реальным операционным процессом. Статус «На согласовании» для корпоративных заказов, «Ожидает предоплату», «Резерв подтверждён», «Возврат инициирован» — всё это требует настройки.

Структура статусов

Статусы хранятся в таблице b_sale_status. Ключевые атрибуты:

  • ID — код (латиница + цифры), используется в коде и интеграциях
  • ТипO (заказ) или D (доставка/отгрузка)
  • Цвет — для визуального выделения в списке заказов
  • «Является статусом отмены» — автоматически снимает резервы с товаров
  • «Заказ выполнен» — помечает заказ завершённым, блокирует ряд операций

Статусы отгрузок (D) — отдельная сущность для многоотгрузочной модели.

Добавление статуса через API

use Bitrix\Sale\OrderStatus;

$result = OrderStatus::add([
    'ID'           => 'WAIT_PREPAY',
    'TYPE'         => 'O',
    'NOTIFY_BUYER' => 'Y',
    'COLOR'        => '#f0a500',
    'SORT'         => 25,
]);

\Bitrix\Sale\Internals\StatusLangTable::add([
    'STATUS_ID'   => 'WAIT_PREPAY',
    'LID'         => 'ru',
    'NAME'        => 'Ожидает предоплату',
    'DESCRIPTION' => 'Заказ подтверждён, ожидаем поступление оплаты',
]);

Смена статуса в коде

$order = \Bitrix\Sale\Order::load($orderId);

if ($order) {
    $order->setField('STATUS_ID', 'WAIT_PREPAY');
    $saveResult = $order->save();

    if (!$saveResult->isSuccess()) {
        $errors = $saveResult->getErrorMessages();
    }
}

При смене статуса автоматически срабатывают события OnSaleStatusOrderChange и OnSaleOrderSaved. Если статус помечен флагом «Уведомлять покупателя» — отправляется письмо через шаблоны почтовых событий.

Матрица допустимых переходов

Ограничение переходов между статусами через обработчик события:

AddEventHandler('sale', 'OnSaleOrderBeforeSaved', function(\Bitrix\Main\Event $event) {
    $order = $event->getParameter('ENTITY');
    if ($order->isNew()) return;

    $oldStatus = $order->getField('STATUS_ID');
    // Получение нового статуса через changedFields
    $changedFields = $order->getFields()->getChangedValues();
    $newStatus = $changedFields['STATUS_ID'] ?? $oldStatus;

    $allowedTransitions = [
        'N'           => ['F', 'WAIT_PREPAY', 'CANCEL'],
        'F'           => ['PROCESSING', 'CANCEL'],
        'WAIT_PREPAY' => ['F', 'CANCEL'],
        'PROCESSING'  => ['DELIVERING', 'CANCEL'],
        'DELIVERING'  => ['D', 'RETURN_INIT'],
    ];

    if (isset($allowedTransitions[$oldStatus]) &&
        $newStatus !== $oldStatus &&
        !in_array($newStatus, $allowedTransitions[$oldStatus])) {
        return new \Bitrix\Main\EventResult(
            \Bitrix\Main\EventResult::ERROR,
            new \Bitrix\Sale\ResultError("Переход из {$oldStatus} в {$newStatus} запрещён"),
            'sale'
        );
    }
});

Типичные наборы статусов

Стандартный B2C: Новый → Подтверждён → Собирается → Передан в доставку → Доставлен / Отменён

B2B с согласованием: Новый → На согласовании → Ожидает предоплату → Подтверждён → В производстве → Готов к отгрузке → Отгружен → Закрыт

С возвратами: К основной цепочке: Возврат инициирован → Товар получен → Возврат выполнен

Смена статуса отгрузки

$shipmentCollection = $order->getShipmentCollection();
foreach ($shipmentCollection as $shipment) {
    if (!$shipment->isSystem()) {
        $shipment->setField('STATUS_ID', 'DELIVERING');
    }
}
$order->save();

Сроки выполнения

Настройка 5–8 статусов с названиями и цветами — 2–4 часа. Настройка с матрицей переходов, интеграцией с 1С и кастомными уведомлениями — 1–2 рабочих дня.