В процессе эксплуатации конфигурации «1С:Управление торговлей 11.4» в связке с торговым оборудованием администраторы часто сталкиваются с ситуацией, когда стандартный профиль «Продавец-кассир ККМ» оказывается недостаточно полным для выполнения всех операций. Особенно остро это проявляется при использовании терминального режима (RDP) и сторонних расширений для проброса кассовых аппаратов.
В этой статье мы подробно разберем, почему возникают ошибки нарушения прав доступа при записи фискальных данных и печати заявлений на возврат, а также определим конкретные роли, которые необходимо добавить пользователю.
Рассмотрим ситуацию: касса работает через драйвер в терминальном режиме. При попытке пробития чека под учетной записью кассира система выдает критическую ошибку в модуле расширения (например, ТитанАСервер): «Ошибка при вызове метода контекста (Записать): Нарушение прав доступа!». При этом под пользователем с полными правами всё работает корректно.
Проанализируем причину. Современные релизы 1С используют механизм логирования каждой операции с ККТ в специальном регистре. Даже если физически чек напечатан устройством, 1С должна зафиксировать этот факт в базе данных. Если у пользователя нет прав на запись в этот регистр, транзакция прерывается.
Для решения этой проблемы выполним следующие шаги:
РегистрСведений.ФискальныеОперации.Записать() успешно отработать на стороне сервера.Важное замечание для разработчиков: если вы используете собственное расширение для работы с ККТ (как в примере с модулем ТитанАСервер), рекомендуется оборачивать код записи в привилегированный режим. Это позволит избежать избыточного назначения прав обычным пользователям. Рассмотрим пример кода:
// Пример безопасной записи фискальных данных в расширении
УстановитьПривилегированныйРежим(Истина);
МенеджерЗаписи = РегистрыСведений.ФискальныеОперации.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Период = ТекущаяДата();
// Заполнение остальных измерений и ресурсов
МенеджерЗаписи.Записать();
УстановитьПривилегированныйРежим(Ложь);
Разберем вторую проблему: кассиру необходимо распечатать «Заявление на возврат товара» или «Акт о возврате денежных средств», но система блокирует действие с ошибкой доступа к таблице РегистрСведений.ФИОФизическихЛиц.
Выясним, почему это происходит. При формировании печатной формы система обращается к справочнику ФизическиеЛица, чтобы получить ФИО ответственного лица (кассира) или покупателя. В конфигурациях на базе БСП (Библиотеки Стандартных Подсистем) ФИО хранится в отдельном регистре сведений с историей изменений. Если у кассира ограничены права на работу с персональными данными, печать бланка становится невозможной.
Для исправления ситуации выполним настройку прав:
Проанализируем специфику терминального доступа. Когда используется стороннее расширение (например, для проброса COM-портов или использования TCP-сокетов ККТ), 1С часто взаимодействует с внешними компонентами и временными файлами.
Посмотрим, какие дополнительные настройки могут потребоваться:
AppData\Local\Temp. Часто драйверы ККТ записывают туда лог-файлы или временные XML-пакеты. Если прав недостаточно, 1С может выдать общую ошибку нарушения прав, которую легко спутать с ошибкой внутри конфигурации.Подведем итог. Чтобы кассир в 1С:УТ 11.4 мог беспрепятственно пробивать чеки и печатать сопутствующие документы по возвратам, в его профиль (Группы доступа — Профили) необходимо добавить следующие роли:
Добавление и изменение фискальных операций — для фиксации номера чека и фискального признака в базе.Чтение данных физических лиц — для корректного отображения ФИО в печатных формах заявлений и актов.Использование торгового оборудования — для обеспечения связи с драйвером ККТ.Чтение ответов на запросы ИС МП — если вы работаете с маркированным товаром, так как кассиру нужны права на получение статусов кодов маркировки.Совет: Вместо изменения стандартного профиля Продавец-кассир ККМ, создайте его копию, внесите изменения туда и назначьте этот новый профиль пользователям. Это позволит избежать затирания ваших настроек при обновлении конфигурации.