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