Как настроить запрос пароля при выборе скидки в 1С:Розница 1?

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

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

Причины отсутствия настройки в типовом интерфейсе

Выясним причину, по которой мы не можем найти штатную галочку «Запрашивать пароль при скидке». В редакции 1.0 разграничение доступа к ручным скидкам спроектировано исключительно через статическую модель прав. Механизм временного запроса прав администратора без переключения учетной записи из «коробки» в конфигурацию заложен не был.

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

Способ реализации через программную доработку

Если бизнес-процесс жестко требует всплывающего окна без закрытия текущего чека, разберем по шагам, как это доработать. Автор темы справедливо заметил, что код открыт, и функционал можно «допилить».

  1. Реализация всплывающего окна пароля выполняется в форме обработки РМК или формы документа ЧекККМ, используемой в режиме рабочего места кассира.
  2. В процедуре-обработчике нажатия кнопки ручной скидки программно вызывается модальное окно авторизации.
  3. Система должна проверить введенный пароль или считанный код по справочнику пользователей. Если подтверждающий пользователь обладает полными правами или имеет право на ручные скидки, управление возвращается к вводу процента скидки.
  4. При этом сессия кассира в чеке не разрывается, а сам чек регистрируется на имя работающего кассира, что важно для статистики.

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

Альтернативные штатные решения без изменения кода

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

1. Штатная смена пользователя в РМК
Как упомянули в обсуждении, можно использовать отдельного пользователя для ввода скидки. У обычного кассира ручные скидки отключаются в дополнительных правах. При необходимости дать скидку кассир использует штатную кнопку смены пользователя. Старший сотрудник подходит к кассе, вводит свой пароль (или сканирует бейдж), проставляет скидку, после чего касса аналогичным образом возвращается под учетную запись рядового кассира.

2. Использование автоматических скидок по служебной карте
Это наиболее элегантный метод. Участники форума советуют: «Для Администратора сделайте штрих-код, при считывании которого будет проставляться скидка по текущему чеку» и добавляют, что «лучше магнитную карту, ее подделать сложнее».

Разберем этот вариант подробнее:

  1. Скидка создается в справочнике СкидкиНаценки.
  2. Задается статус ее действия через документ МаркетинговаяАкция.
  3. В условиях предоставления скидки указывается наличие определенного вида дисконтной карты (например, «Карта администратора»).
  4. Сама физическая карта (штрихкодовая или магнитная) выдается старшему кассиру.

В результате, когда нужно сделать скидку клиенту, кассир не нажимает кнопки ручных скидок. Старший смены просто считывает свою служебную карту ридером, и скидка применяется к чеку автоматически. Это полностью решает задачу контроля без единой строчки кода.

← На главную