Как исправить ошибку Нарушение прав доступа в документе Начисление прочих доходов в ЗУП 3.1.9

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

При работе в программе 1С:Зарплата и Управление Персоналом редакции 3.1 пользователи часто сталкиваются с ситуацией, когда после очередного обновления типовые бизнес-процессы внезапно прерываются системными ошибками. Одной из наиболее резонансных проблем в ветке релизов 3.1.9 стала ошибка "Нарушение прав доступа" при попытке провести или рассчитать документ НачислениеПрочихДоходов. Ситуация осложняется тем, что права доступа у пользователя (например, у "Старшего расчетчика") фактически не менялись, а механизмы ограничения доступа на уровне записей (RLS) могут быть вовсе отключены.

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

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

Рассмотрим техническую сторону вопроса. В релизе ЗУП 3.1.9.187 разработчики внесли изменения в логику работы механизмов НДФЛ. Проблема была официально зарегистрирована под номером 10210457. Суть ошибки заключается в том, что при обновлении метаданных права на чтение и изменение некоторых критически важных регистров накопления не были включены в типовые роли, такие как ДобавлениеИзменениеДоходовСтороннихФизическихЛиц или профили "Расчетчик" и "Старший расчетчик".

Выясним, какие именно объекты оказались "заблокированы" для обычных пользователей. Основным виновником является регистр накопления УчетДоходовДляИсчисленияНДФЛ. В некоторых случаях к нему добавляется регистр РасчетыНалогоплательщиковСБюджетомПоНДФЛ. Поскольку документ НачислениеПрочихДоходов при проведении делает записи в эти регистры, отсутствие прав доступа к ним блокирует работу всего документа, даже если на сам документ права у пользователя есть.

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

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

  1. Перейдем в раздел Администрирование — Обслуживание — Журнал регистрации.
  2. Установим отбор по критичности "Ошибка" и по конкретному пользователю, у которого возникает проблема.
  3. Найдем событие, зафиксированное в момент нажатия кнопки "Рассчитать" или "Провести" в документе.
  4. В детальном описании ошибки мы увидим строку вида: Нарушение прав доступа! {РегистрНакопления.УчетДоходовДляИсчисленияНДФЛ.Чтение}.

Если в журнале фигурирует именно этот регистр, значит, мы имеем дело с типичным багом релиза 3.1.9.187.

Шаг 2: Объекты, находящиеся в зоне риска

Проанализируем ситуацию шире. Данная ошибка затрагивает не только прочие доходы. Подобные проблемы могут проявляться в любых документах, где фигурируют выплаты физическим лицам, не являющимся штатными сотрудниками. К таким документам относятся:

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

Шаг 3: Способы решения проблемы

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

Вариант А: Обновление конфигурации (рекомендуемый)

Разработчики 1С оперативно выпустили исправление. Ошибка 10210457 была полностью устранена в релизе 3.1.9.205 и всех последующих. Если у вас есть возможность провести обновление, это самый правильный путь. После перехода на версию 205 и выше права на регистры УчетДоходовДляИсчисленияНДФЛ и РасчетыНалогоплательщиковСБюджетомПоНДФЛ будут автоматически добавлены в соответствующие типовые роли.

Вариант Б: Использование расширения конфигурации (Workaround)

Если обновление в данный момент невозможно (например, идет период закрытия месяца или сдачи отчетности), воспользуемся механизмом расширений. Это позволит нам добавить необходимые права, не снимая основную конфигурацию с поддержки. Разберем этот процесс по шагам:

  1. Создадим новое расширение (Администрирование — Печатные формы, отчеты и обработки — Расширения).
  2. Снимем в свойствах расширения галочки "Безопасный режим" и "Защита от опасных действий".
  3. Добавим в расширение регистр накопления УчетДоходовДляИсчисленияНДФЛ.
  4. Создадим в расширении новую роль, назовем ее, например, ИсправлениеПравНДФЛ.
  5. В настройках этой роли установим права Чтение, Просмотр, Добавление и Изменение для добавленного регистра.
  6. Назначим эту роль пользователю через Настройки пользователей и прав.

Пример программного добавления прав в расширении (если требуется программная проверка):


// В расширении можно проверить наличие прав перед выполнением расчета
Если Не ПравоДоступа("Изменение", Метаданные.РегистрыНакопления.УчетДоходовДляИсчисленияНДФЛ) Тогда
    Сообщить("Внимание! У пользователя недостаточно прав на регистр НДФЛ.");
КонецЕсли;

Особенности работы RLS в релизе 3.1.9

Важно отметить одну странную особенность, выявленную в версии 3.1.9.187. Даже если в константах программы галочка "Ограничивать доступ на уровне записей" снята, система всё равно может блокировать доступ. Это происходит из-за того, что в коде модулей документов зашиты жесткие проверки прав. Программа "думает", что раз прав на таблицу регистра нет в принципе (на уровне метаданных роли), то и операция запрещена, независимо от настроек RLS.

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

Резюме

Мы выяснили, что ошибка "Нарушение прав доступа" в ЗУП 3.1.9 — это признанный баг платформенного наполнения ролей. Для исправления ситуации мы рекомендуем:

Следуя этим инструкциям, вы сможете оперативно восстановить работу расчетного отдела и обеспечить корректное проведение документов по прочим доходам и выплатам сторонним лицам.

← На главную