При работе с решением 1С:РМК (Рабочее место кассира) многие пользователи и администраторы сталкиваются с неожиданной проблемой: в интерфейсе программы отсутствует привычная по «1С:Розница» или «1С:УНФ» галочка, запрещающая продажу товара при его отсутствии на складе. В этой статье мы подробно разберем, почему так происходит, как устроена внутренняя логика программы и какими способами можно реализовать этот запрет.
Для начала проанализируем ситуацию: почему разработчики фирмы 1С не вынесли настройку контроля остатков в пользовательский интерфейс. 1С:РМК позиционируется как «легкий» фронт-офис, предназначенный для максимально быстрой и отказоустойчивой работы кассира. В условиях розничной торговли первичным является факт наличия товара в руках у покупателя. Если покупатель принес товар на кассу, значит, он физически существует, даже если по данным информационной базы его остаток равен нулю (например, из-за задержек в оформлении поступления или пересортицы).
Рассмотрим основные риски, которые возникают при включении жесткого контроля остатков на кассе:
Проанализируем программную часть конфигурации. Если мы попытаемся найти место, где принимается решение о проверке остатков, мы обнаружим, что в типовом решении 1С:РМК релиз 1.1.3 и выше эта возможность жестко ограничена на уровне программного кода.
Обратим внимание на процедуру в общем модуле, которая отвечает за это поведение. В коде это выглядит следующим образом:
// Определяет необходимость контроля остатков при пробитии чека.
//
// Параметры:
// ТребуетсяКонтрольОстатков - Булево - признак необходимости контроля остатков.
//
Процедура ОпределитьНеобходимостьКонтролироватьОстатки(ТребуетсяКонтрольОстатков) Экспорт
ТребуетсяКонтрольОстатков = Ложь;
КонецПроцедуры
Как мы видим, переменной ТребуетсяКонтрольОстатков всегда присваивается значение Ложь. Это означает, что даже если в вашей управляющей системе (например, «1С:Розница 3.0») стоит запрет на продажу в минус, 1С:РМК при автономной работе будет игнорировать это правило, так как процедура жестко прописана в коде самого РМК.
Поскольку менять типовую конфигурацию крайне не рекомендуется (это усложнит дальнейшие обновления), разберем, как решить задачу с помощью механизма расширений. Это наиболее корректный технический путь.
Нам необходимо создать расширение и перехватить работу процедуры ОпределитьНеобходимостьКонтролироватьОстатки. Рассмотрим пример кода, который нужно поместить в расширение, используя аннотацию &Вместо:
&Вместо("ОпределитьНеобходимостьКонтролироватьОстатки")
Процедура РАСШ_ОпределитьНеобходимостьКонтролироватьОстатки(ТребуетсяКонтрольОстатков)
// Устанавливаем Истина, чтобы система начала проверять остатки
ТребуетсяКонтрольОстатков = Истина;
КонецПроцедуры
Важный нюанс: Просто включить эту проверку недостаточно. Вам необходимо убедиться, что в базу 1С:РМК действительно передаются остатки из управляющей системы. Проверьте настройки синхронизации данных: в правилах выгрузки должен стоять флажок «Выгружать остатки товаров».
Если вы опасаетесь жестко блокировать работу кассы, но хотите, чтобы кассир видел проблему, рассмотрим вариант справочного вывода остатков. В современных релизах 1С:РМК реализована возможность отображения текущего остатка в списке товаров или в карточке подбора.
Для реализации этого метода выполним следующие шаги:
Остаток.Проанализируем ситуацию с товарами, подлежащими обязательной маркировке. С введением разрешительного режима (с 2024 года), 1С:РМК выполняет проверку кодов маркировки в системе «Честный ЗНАК» в реальном времени перед добавлением товара в чек.
Нужно понимать, что это фактический запрет продажи, который работает независимо от локальных остатков в базе 1С. Если система «Честный ЗНАК» вернет ответ, что код маркировки уже выведен из оборота (продан ранее) или не принадлежит данной организации, 1С:РМК заблокирует продажу. Таким образом, для маркированного товара контроль остатков частично перекладывается на плечи государственной системы контроля.
Подведем итог нашего разбора. Перед тем как внедрять программный запрет через расширение, проанализируйте бизнес-процессы вашего магазина:
Если же ваша цель — избежать штрафов и пересортицы по маркированным товарам, сосредоточьтесь на правильной настройке разрешительного режима и проверке актуальности токенов доступа к ИС МП, так как это обеспечит контроль гораздо эффективнее, чем простая проверка количества в локальной базе.