Гибкая настройка статусов заказа в 1С-Битрикс
При типовой установке 1С-Битрикс вы получаете базовый набор статусов заказа: N (принят), F (выполнен), P (оплачен) и т.д. Реальный бизнес-процесс обычно сложнее: нужны статусы «На согласовании», «Ожидает предоплату», «Проверка менеджером», «Резерв подтверждён». Ручная смена статусов в админке — это риск ошибок и потеря времени. В одном из проектов с 12 000 заказов в месяц 30% времени менеджеров уходило на ручное переключение статусов. Автоматизация сократила эти затраты на 80%. Мы настраиваем статусы под ваши этапы производства, логистики и коммуникации. Ниже — техническая реализация и типовые решения.
Ссылка на документацию Битрикс
Почему правильная настройка статусов критична?
Каждый статус заказа — не просто ярлык. Он влияет на резервирование товаров, отправку уведомлений клиенту, интеграцию с 1С и логику работы менеджеров. Ошибка в статусе может привести к двойным продажам или задержке отгрузки. Настроенная под бизнес-процесс цепочка статусов автоматизирует рутину и снижает количество ошибок. По нашим данным, грамотная настройка снижает время обработки заказа до 40%. Правильная настройка статусов экономит ресурсы за счёт сокращения ручного труда.
Структура статусов (техническая часть)
Статусы хранятся в таблице b_sale_status. Ключевые атрибуты:
- ID — код (латиница + цифры), используется в коде и интеграциях
- Тип —
O(заказ) илиD(доставка/отгрузка) - Цвет — для визуального выделения в списке заказов
- «Является статусом отмены» — автоматически снимает резервы с товаров
- «Заказ выполнен» — помечает заказ завершённым, блокирует ряд операций
Статусы отгрузок (D) — отдельная сущность для многоотгрузочной модели. Она позволяет управлять частичными отгрузками, что критично для B2B с разными складами.
Сравнение типовых наборов статусов
| Сценарий | Статусы |
|---|---|
| B2C (розница) | Новый → Подтверждён → Собирается → Передан в доставку → Доставлен / Отменён |
| B2B с согласованием | Новый → На согласовании → Ожидает предоплату → Подтверждён → В производстве → Готов к отгрузке → Отгружен → Закрыт |
| С возвратами | Основная цепочка + Возврат инициирован → Товар получен → Возврат выполнен |
Пошаговая инструкция по настройке статусов
- Создайте новый статус через
OrderStatus::add(). - Задайте локализованное название через
StatusLangTable::add(). - Настройте матрицу переходов в обработчике
OnSaleOrderBeforeSaved. - Протестируйте на тестовом контуре.
- Внедрите на боевом сайте.
Как добавить новый статус через 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' => 'Заказ подтверждён, ожидаем поступление оплаты',
]);
Поле NOTIFY_BUYER отправляет письмо клиенту при смене статуса. Если статус является финальным (например, «Отменён»), установите флаг CANCEL = Y для автоматической отмены резервов.
Матрица допустимых переходов
Ограничение переходов между статусами через обработчик события:
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();
Автоматическая смена статуса
Автоматизация через агенты или события. Например, при получении от 1С статуса отгрузки — автоматически менять статус заказа. По сравнению со стандартной реализацией, наша интеграция с 1С обрабатывает статусы значительно быстрее, что сокращает время реакции. Один из клиентов сократил затраты на возвраты благодаря настройке.
Как интеграция с 1С влияет на статусы?
При обмене с 1С через CommerceML статусы синхронизируются автоматически. Например, когда 1С подтверждает отгрузку, заказ получает статус «Отгружен». Без правильной настройки возможны расхождения: заказ в Битриксе выполнен, а в 1С — в работе. Чтобы избежать этого, мы создаём событийные обработчики, которые при получении от 1С статуса отгрузки меняют статус заказа. Это экономит рабочее время менеджеров.
Сравнение статусов по функциональности
| Статус | Уведомление | Отмена | Резервирование |
|---|---|---|---|
| N (принят) | Да (опционально) | Нет | Нет |
| F (выполнен) | Да | Нет | Снятие |
| CANCEL | Нет | Да | Снятие |
| WAIT_PREPAY | Да | Нет | Нет |
Если статус не меняется, проверьте, не заблокирован ли заказ статусом «Заказ выполнен» или «Отменён». Убедитесь, что матрица переходов разрешает данный переход. Также проверьте права доступа пользователя, который пытается сменить статус.
Что входит в работу
- Аудит текущих статусов и бизнес-процессов
- Проектирование схемы статусов (матрица переходов, уведомления)
- Реализация: добавление статусов, настройка переходов, интеграция с 1С и ОФД
- Тестирование на тестовом контуре
- Деплой на боевой сервер
- Документация по статусам и обучение менеджеров
- Поддержка 1 месяц после запуска
Свяжитесь с нами
Мы — команда с многолетним опытом разработки на 1С-Битрикс. Реализовали множество проектов по настройке процессов заказов. Работаем с версиями PHP 8.1+, MySQL/MariaDB, интеграциями через REST API. Гарантируем качество и документальное оформление. Наши схемы статусов значительно снижают количество ошибок резервирования. Свяжитесь с нами для аудита ваших статусов и получите консультацию по оптимизации бизнес-процессов.
Сроки выполнения
Настройка 5–8 статусов с названиями и цветами — от 2 до 4 часов. Настройка с матрицей переходов, интеграцией с 1С и кастомными уведомлениями — от 1 до 2 рабочих дней. Конкретные сроки обсуждаются после анализа вашей задачи. Для сложных проектов с несколькими складами и возвратами срок может увеличиваться до 3-4 дней, но мы всегда укладываемся в согласованные рамки.







