Налаштування статусів замовлення 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування статусів замовлення 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування статусів замовлення 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'         => 'ua',
    '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 робочі дні.