Системные настройки
Все ключи живут в системных настройках MODX с префиксом ms3remains_ и дублируются в разделе Настройки меню компонента. Сохранение в разделе пишет те же ключи, что и системные настройки.
Экран разбит на карточки: Основные, Заказы, Витрина, Проекция в каталог. Внизу кнопка Сохранить настройки. Обновить перечитывает значения с сервера без записи.


Основные
| Ключ | Тип | По умолчанию | Описание |
|---|---|---|---|
ms3remains_enabled | да/нет | нет | Списание по статусам и проверки корзины/заказа. Manager, сниппет и проекция работают и при выключении |
ms3remains_option_keys | строка | пусто | Ключи отслеживаемых опций через запятую, например color,size |
ms3remains_remains_default | число | 0 | Значение для новой строки и кнопки Заполнить пустые по умолчанию. До трёх знаков после запятой |
Что делает ms3remains_option_keys
Перечислите ключи, по которым ведёте остаток. Только они участвуют в подборе строки остатка в корзине, заказе и сниппете. Остальные опции (подарочная упаковка, комментарий к строке) в расчёт не входят. Служебные ключи с префиксом _ (_variant_id и т.п.) тоже не входят.
Пустой список: в расчёт остатка попадают все обычные опции из корзины или заказа. На вкладке товара все сочетания цветов и размеров при этом не строятся: видны базовая строка и варианты ms3Variants.
Каталог с цветом и размером: укажите color,size (или ваши ключи). Иначе менеджер сохранит базовую строку, а покупатель в корзине попадёт на другую комбинацию. Товар без опций: оставьте поле пустым и сохраните базовую строку на вкладке.
Заказы
| Ключ | Тип | По умолчанию | Описание |
|---|---|---|---|
ms3remains_deduct_statuses | список id | пусто | Статусы, при которых списывается остаток |
ms3remains_refund_statuses | список id | пусто | Статусы, при которых списанное возвращается |
ms3remains_check_before_cart | да/нет | да | Проверять остаток при добавлении и изменении в корзине |
ms3remains_check_before_order | да/нет | да | Проверять остаток перед оформлением заказа |
ms3remains_check_options | да/нет | да | Требовать выбор всех ключей из option_keys (при пустом списке не блокирует). Работает только при enabled=1 и вместе с проверкой корзины и/или заказа. Строка с _variant_id (ms3Variants) эту проверку пропускает |
Проверки корзины и заказа работают только при ms3remains_enabled = 1.
В разделе Настройки статусы выбираются мультиселектом из активных статусов MiniShop3. Подписи берутся из лексикона MiniShop3 (name статуса), сортировка — по полю position. В системных настройках хранятся id через запятую.
Если MiniShop3 не отдаёт класс статусов, список пустой, в селекте текст «Статусы заказов MiniShop3 не найдены».
Если один и тот же id попал и в списание, и в возврат, при сохранении он остаётся только в списании (списание имеет приоритет в runtime).
Если компонент включён, а статусы списания не выбраны, экран показывает предупреждение: заказы не будут уменьшать остатки.
Витрина
| Ключ | Тип | По умолчанию | Описание |
|---|---|---|---|
ms3remains_hide_quantity | да/нет | нет | Сниппет выводит «В наличии / Нет в наличии» вместо числа |
ms3remains_moreless_count | число | 0 | Порог «Много»: остаток строго больше порога → слово. 0 — выключено. Игнорируется при hide_quantity |
Проекция в каталог
| Ключ | Тип | По умолчанию | Описание |
|---|---|---|---|
ms3remains_sync_product_stock | да/нет | да | Писать сумму остатков в msProductData.stock |
ms3remains_sync_variant_count | да/нет | да | Писать остаток варианта в ms3Variants.count |
Переключатель вариантов выключен (disabled), если ms3Variants не установлен.
Кнопка Перестроить сначала сохраняет текущие значения формы (включая два переключателя sync), затем пересчитывает stock и count для всех товаров с остатками. После успеха toast показывает, сколько товаров обработано. Если оба переключателя выключены, счётчик будет 0.
В этой же карточке выводится версия MiniShop3, которую видит API настроек.
Подробности проекции: Проекция остатков.
Предупреждения в разделе «Настройки»
Экран показывает диагностические блоки, когда они нужны:
- нет статусов списания при включённом компоненте
- пересечение статусов списания и возврата
- конфликт с ms3Variants: если у ms3Variants включено собственное списание (
ms3variants_deduct_stock_status), остаток спишется дважды. Кнопка Отключить списание в ms3Variants обнуляет эту настройку - обнаружен CommerceBridge1C: он пишет агрегат в
msProductData.stockи может перезаписать проекцию. Загружайте остатки через CSV или сервисный API (см. Обмен с внешними системами) - включена встроенная inventory MiniShop3 (
ms3_inventory_enabled). Она резервирует суммарный stock товара и конфликтует с остатками по комбинациям опций. Оставьтеms3_inventory_enabled = 0, пока работает ms3Remains
