Как исправить ошибку «У пользователя недостаточно прав на исполнение операции над базой данных» при проведении реализации в 1С:УТ 10.3?

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

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

Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине: {ОбщийМодуль.УправлениеЗапасамиПартионныйУчет.Модуль(5055)}: Ошибка при вызове метода контекста (Выполнить)
по причине: Ошибка выполнения запроса
по причине: У пользователя недостаточно прав на исполнение операции над базой данных.

Разберем природу этого поведения платформы, способы быстрой диагностики и возможные варианты исправления ситуации.

Почему возникает ошибка партионного учета при наличии прав на регистры

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

Основная причина кроется в структуре измерений регистров партий:

  1. Измерение ДокументОприходования имеет составной тип данных, включающий множество различных документов: ПоступлениеТоваровУслуг, ОприходованиеТоваров, АвансовыйОтчет, КомплектацияНоменклатуры, ВозвратТоваровОтПокупателя и другие.
  2. Когда алгоритм списания себестоимости строит запрос к остаткам партий, платформа 1С обращается к полям и таблицам документов оприходования. Если у текущего пользователя нет базового права «Чтение» хотя бы на один вид документов, входящих в составной тип или фактически встретившихся в остатках партий, СУБД блокирует выполнение запроса целиком.
  3. Если включен механизм RLS (ограничение доступа на уровне записей, например, по организациям или складам), запрос также завершится ошибкой, если списываемая партия поступила по организации, к которой у менеджера нет доступа.

Важно понимать, почему в типовых модулях партионного учета нельзя просто использовать конструкцию ВЫБРАТЬ РАЗРЕШЕННЫЕ. Если платформа молча отсечет партии, на которые у пользователя нет прав, расчет себестоимости пойдет не по правилам FIFO/LIFO, возникнут ложные ошибки о нехватке товара на складе и исказится финансовый результат.

Диагностика через Журнал регистрации

Выясним точную причину ошибки без необходимости ручной пошаговой отладки конфигурации. Самый быстрый и надежный инструмент для этого — системный Журнал регистрации.

  1. Откроем информационную базу под учетной записью с административными правами.
  2. Перейдем в главное меню: Операции → Журнал регистрации.
  3. Установим отбор по пользователю, у которого возникает сбой, и выберем статус транзакции «Ошибка».
  4. Найдем событие отказа в доступе. В детальном описании события платформа выведет конкретный метаданный объект, к которому обратилась система (например, Документ.АвансовыйОтчет или регистр ПродажиСебестоимость), и тип запрещенного действия (Чтение).

Способ 1. Назначение точечных прав на чтение документов оприходования

Если специфика учета требует, чтобы партии списывались непосредственно менеджером в момент нажатия кнопки «Провести», скорректируем роли пользователя:

  1. Откроем конфигурацию в режиме «Конфигуратор».
  2. Создадим отдельную нетиповую роль, например, ЧтениеДокументовПартионногоУчета (или добавим права в профильную роль менеджера).
  3. Отметим флаги «Чтение» и «Просмотр» (без прав на изменение, добавление и удаление) для всех видов документов, формирующих партии товаров:
    1. ПоступлениеТоваровУслуг
    2. АвансовыйОтчет
    3. ОприходованиеТоваров
    4. КомплектацияНоменклатуры
    5. ВозвратТоваровОтПокупателя
  4. Убедимся, что для роли открыты права на чтение и запись служебных регистров: ПартииТоваровНаСкладах, ПартииТоваровПереданные, ПродажиСебестоимость, а также регистра сведений СписанныеТовары.
  5. Назначим созданную роль пользователям через список справочника Пользователи.

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

Способ 2. Отключение списания партий при проведении (рекомендуемый штатный способ)

Для исключения конфликтов прав и существенного ускорения работы менеджеров при проведении оптовых и розничных накладных рекомендуется разделить складской и финансовый контуры.

  1. Перейдем в режим «1С:Предприятие» под полными правами.
  2. Откроем регистр сведений «Учетная политика (Управленческий учет)».
  3. Снимем флаг «Списывать партии при проведении документов».

При таком подходе менеджер при проведении проверяет только физическое наличие товаров на складе (по регистру ТоварыНаСкладах). Документ проводится мгновенно, а менеджеру больше не требуются права на финансовые регистры и документы закупок. Расчет партий и себестоимости переносится на фоновое регламентное задание либо выполняется ответственным лицом раз в день/смену через регламентную обработку «Проведение по партиям».

Способ 3. Перевод партионного учета в привилегированный режим

Если списание партий в режиме реального времени критично, но предоставлять менеджерам доступ к документам поступления нельзя из соображений конфиденциальности, доработаем модуль расчета партий:

  1. Откроем свойства общего модуля УправлениеЗапасамиПартионныйУчет.
  2. Установим свойство «Привилегированный».

Либо программно включим привилегированный режим внутри процедур списания партий:


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

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

← На главную