Как в 1С:РМК установить запрет на продажу товара с отрицательным остатком

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

При работе с решением 1С:РМК (Рабочее место кассира) многие пользователи и администраторы сталкиваются с неожиданной проблемой: в интерфейсе программы отсутствует привычная по «1С:Розница» или «1С:УНФ» галочка, запрещающая продажу товара при его отсутствии на складе. В этой статье мы подробно разберем, почему так происходит, как устроена внутренняя логика программы и какими способами можно реализовать этот запрет.

Анализируем архитектуру 1С:РМК и причины отсутствия настройки

Для начала проанализируем ситуацию: почему разработчики фирмы 1С не вынесли настройку контроля остатков в пользовательский интерфейс. 1С:РМК позиционируется как «легкий» фронт-офис, предназначенный для максимально быстрой и отказоустойчивой работы кассира. В условиях розничной торговли первичным является факт наличия товара в руках у покупателя. Если покупатель принес товар на кассу, значит, он физически существует, даже если по данным информационной базы его остаток равен нулю (например, из-за задержек в оформлении поступления или пересортицы).

Рассмотрим основные риски, которые возникают при включении жесткого контроля остатков на кассе:

  1. Очереди на кассах: Если в базе произошла ошибка учета, кассир не сможет пробить товар, что приведет к конфликту с покупателем и задержке всей очереди.
  2. Синхронизация данных: 1С:РМК часто работает в режиме обмена данными с управляющей системой (бэк-офисом). Если информация о перемещении товара или поступлении еще не успела «дойти» до кассового узла, продажа будет заблокирована.
  3. Оффлайн-режим: В моменты отсутствия связи с центральным сервером актуальность остатков в локальной базе РМК стремительно падает.

Выясняем программную причину: заглядываем в код

Проанализируем программную часть конфигурации. Если мы попытаемся найти место, где принимается решение о проверке остатков, мы обнаружим, что в типовом решении 1С:РМК релиз 1.1.3 и выше эта возможность жестко ограничена на уровне программного кода.

Обратим внимание на процедуру в общем модуле, которая отвечает за это поведение. В коде это выглядит следующим образом:


// Определяет необходимость контроля остатков при пробитии чека.
//
// Параметры:
//  ТребуетсяКонтрольОстатков - Булево - признак необходимости контроля остатков.
//
Процедура ОпределитьНеобходимостьКонтролироватьОстатки(ТребуетсяКонтрольОстатков) Экспорт
    ТребуетсяКонтрольОстатков = Ложь;
КонецПроцедуры

Как мы видим, переменной ТребуетсяКонтрольОстатков всегда присваивается значение Ложь. Это означает, что даже если в вашей управляющей системе (например, «1С:Розница 3.0») стоит запрет на продажу в минус, 1С:РМК при автономной работе будет игнорировать это правило, так как процедура жестко прописана в коде самого РМК.

Способ 1: Использование расширения конфигурации

Поскольку менять типовую конфигурацию крайне не рекомендуется (это усложнит дальнейшие обновления), разберем, как решить задачу с помощью механизма расширений. Это наиболее корректный технический путь.

Нам необходимо создать расширение и перехватить работу процедуры ОпределитьНеобходимостьКонтролироватьОстатки. Рассмотрим пример кода, который нужно поместить в расширение, используя аннотацию &Вместо:


&Вместо("ОпределитьНеобходимостьКонтролироватьОстатки")
Процедура РАСШ_ОпределитьНеобходимостьКонтролироватьОстатки(ТребуетсяКонтрольОстатков)
    // Устанавливаем Истина, чтобы система начала проверять остатки
    ТребуетсяКонтрольОстатков = Истина;
КонецПроцедуры

Важный нюанс: Просто включить эту проверку недостаточно. Вам необходимо убедиться, что в базу 1С:РМК действительно передаются остатки из управляющей системы. Проверьте настройки синхронизации данных: в правилах выгрузки должен стоять флажок «Выгружать остатки товаров».

Способ 2: Информационный вывод остатков (без запрета)

Если вы опасаетесь жестко блокировать работу кассы, но хотите, чтобы кассир видел проблему, рассмотрим вариант справочного вывода остатков. В современных релизах 1С:РМК реализована возможность отображения текущего остатка в списке товаров или в карточке подбора.

Для реализации этого метода выполним следующие шаги:

  1. В управляющей системе (бэк-офисе) настроим регулярный обмен данными об остатках по нужному складу.
  2. В настройках РМК (раздел «Настройки интерфейса») активируем отображение колонки Остаток.
  3. Обучим кассиров обращать внимание на цифры: если остаток нулевой или отрицательный, кассир должен сообщить об этом администратору для оперативного исправления документов поступления.

Особенности контроля маркированного товара (Честный ЗНАК)

Проанализируем ситуацию с товарами, подлежащими обязательной маркировке. С введением разрешительного режима (с 2024 года), 1С:РМК выполняет проверку кодов маркировки в системе «Честный ЗНАК» в реальном времени перед добавлением товара в чек.

Нужно понимать, что это фактический запрет продажи, который работает независимо от локальных остатков в базе 1С. Если система «Честный ЗНАК» вернет ответ, что код маркировки уже выведен из оборота (продан ранее) или не принадлежит данной организации, 1С:РМК заблокирует продажу. Таким образом, для маркированного товара контроль остатков частично перекладывается на плечи государственной системы контроля.

Рекомендации по внедрению

Подведем итог нашего разбора. Перед тем как внедрять программный запрет через расширение, проанализируйте бизнес-процессы вашего магазина:

  1. Скорость обмена: Убедитесь, что обмен данными между кассой и основной базой происходит достаточно часто (например, раз в 5-10 минут).
  2. Дисциплина склада: Контроль остатков на кассе имеет смысл только тогда, когда все поступления и перемещения заводятся в систему до того, как товар попадает на полку.
  3. Готовность к ошибкам: Разработайте инструкцию для кассира на случай, если товар в руках есть, а база его «не видит». Обычно это решается оперативным вводом инвентаризации или оприходования.

Если же ваша цель — избежать штрафов и пересортицы по маркированным товарам, сосредоточьтесь на правильной настройке разрешительного режима и проверке актуальности токенов доступа к ИС МП, так как это обеспечит контроль гораздо эффективнее, чем простая проверка количества в локальной базе.

← На главную