Как ограничить права кассира на редактирование документов в 1С:Розница, сохранив работоспособность системы?

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

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

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

Разбор понятий: Программные vs Интерактивные права

Первое, что нам необходимо понять — это фундаментальное различие в правах доступа на уровне платформы 1С. Рассмотрим два типа ограничений, которые часто путают:

  1. Основные права (Чтение, Добавление, Изменение): Это права, которые требуются платформе для совершения операций. Если у пользователя нет права на Изменение, то никакой программный код, выполняющийся от его имени, не сможет записать существующий объект в базу данных. Именно поэтому при их отключении система выдает ошибку доступа.
  2. Интерактивные права (Просмотр, Интерактивное добавление, Интерактивное изменение): Эти права отвечают исключительно за действия пользователя через визуальный интерфейс (формы, списки, кнопки). Если убрать Интерактивное изменение, но оставить Изменение, кассир не сможет нажать кнопку «Изменить» в списке документов, но программа сможет программно модифицировать объект.

Проанализируем ситуацию: чтобы кассир мог закрыть смену, программа должна создать документ Отчет о розничных продажах (ОРП) и заполнить его данными. В этот момент код выполняет несколько транзакций записи. Следовательно, право на Изменение и Добавление технически необходимо. Однако интерактивные права на этот же объект кассиру не нужны.

Настройка через Конфигуратор: разделяем полномочия

Разберем по шагам, как настроить роль кассира, чтобы минимизировать риски. Нам потребуется создать собственную роль (или скопировать типовую) и внести следующие изменения:

Таким образом, мы запрещаем кассиру открывать старые отчеты через «Функции для технического специалиста» или через обычные списки и что-то там менять руками.

Использование механизма «Дополнительные права пользователей»

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

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

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

Ограничение доступа через интерфейс и «Режим киоска»

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

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

Решение через «Дату запрета редактирования»

Проанализируем еще один мощный инструмент — Дата запрета изменения данных. Это универсальный способ закрыть доступ к документам прошлых периодов даже для тех, у кого есть полные права на изменение.

Рассмотрим сценарий настройки: Для кассиров устанавливается автоматическая дата запрета, равная текущей дате. Это означает, что кассир может создавать и менять документы только «сегодняшним числом». Как только смена закрыта и наступил следующий день, документы ОРП за вчера становятся недоступными для любого редактирования со стороны кассира. Это стандартный и самый надежный способ обезопасить базу от «исправлений задним числом».

Программный метод: Привилегированный режим

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

Посмотрим на пример кода, который позволяет записать документ, даже если у пользователя вообще нет прав на его изменение:


// Пример вызова записи документа в привилегированном режиме
УстановитьПривилегированныйРежим(Истина);

ДокументОбъект = СсылкаНаОРП.ПолучитьОбъект();
ДокументОбъект.Комментарий = "Смена закрыта автоматически";
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);

УстановитьПривилегированныйРежим(Ложь);

Использование этого метода в обработках закрытия смены позволяет забрать у кассира права на Изменение ОРП в его роли в Конфигураторе, но при этом смена будет успешно закрываться, так как код записи будет выполняться в привилегированном режиме.

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

Подводя итог нашему анализу, выделим комплексную стратегию настройки прав кассира:

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

← На главную