При работе в программе 1С:Зарплата и Управление Персоналом редакции 3.1 пользователи часто сталкиваются с ситуацией, когда после очередного обновления типовые бизнес-процессы внезапно прерываются системными ошибками. Одной из наиболее резонансных проблем в ветке релизов 3.1.9 стала ошибка "Нарушение прав доступа" при попытке провести или рассчитать документ НачислениеПрочихДоходов. Ситуация осложняется тем, что права доступа у пользователя (например, у "Старшего расчетчика") фактически не менялись, а механизмы ограничения доступа на уровне записей (RLS) могут быть вовсе отключены.
В данной статье мы подробно разберем, почему возникает эта проблема, как провести диагностику и какими способами можно восстановить работоспособность системы, не дожидаясь глобального обновления конфигурации.
Рассмотрим техническую сторону вопроса. В релизе ЗУП 3.1.9.187 разработчики внесли изменения в логику работы механизмов НДФЛ. Проблема была официально зарегистрирована под номером 10210457. Суть ошибки заключается в том, что при обновлении метаданных права на чтение и изменение некоторых критически важных регистров накопления не были включены в типовые роли, такие как ДобавлениеИзменениеДоходовСтороннихФизическихЛиц или профили "Расчетчик" и "Старший расчетчик".
Выясним, какие именно объекты оказались "заблокированы" для обычных пользователей. Основным виновником является регистр накопления УчетДоходовДляИсчисленияНДФЛ. В некоторых случаях к нему добавляется регистр РасчетыНалогоплательщиковСБюджетомПоНДФЛ. Поскольку документ НачислениеПрочихДоходов при проведении делает записи в эти регистры, отсутствие прав доступа к ним блокирует работу всего документа, даже если на сам документ права у пользователя есть.
Прежде чем приступать к исправлению, проанализируем ситуацию и убедимся, что причина именно в правах на регистры. Для этого нам понадобится Журнал регистрации. Выполним следующие действия:
Нарушение прав доступа! {РегистрНакопления.УчетДоходовДляИсчисленияНДФЛ.Чтение}.Если в журнале фигурирует именно этот регистр, значит, мы имеем дело с типичным багом релиза 3.1.9.187.
Проанализируем ситуацию шире. Данная ошибка затрагивает не только прочие доходы. Подобные проблемы могут проявляться в любых документах, где фигурируют выплаты физическим лицам, не являющимся штатными сотрудниками. К таким документам относятся:
ВыплатаБывшимСотрудникамДивидендыПризПодарокВо всех этих случаях система пытается обратиться к регистрам НДФЛ, доступ к которым в ошибочном релизе остался только у пользователей с ролью ПолныеПрава.
Рассмотрим два основных варианта решения проблемы в зависимости от ваших возможностей по обновлению конфигурации.
Разработчики 1С оперативно выпустили исправление. Ошибка 10210457 была полностью устранена в релизе 3.1.9.205 и всех последующих. Если у вас есть возможность провести обновление, это самый правильный путь. После перехода на версию 205 и выше права на регистры УчетДоходовДляИсчисленияНДФЛ и РасчетыНалогоплательщиковСБюджетомПоНДФЛ будут автоматически добавлены в соответствующие типовые роли.
Если обновление в данный момент невозможно (например, идет период закрытия месяца или сдачи отчетности), воспользуемся механизмом расширений. Это позволит нам добавить необходимые права, не снимая основную конфигурацию с поддержки. Разберем этот процесс по шагам:
УчетДоходовДляИсчисленияНДФЛ.ИсправлениеПравНДФЛ.Пример программного добавления прав в расширении (если требуется программная проверка):
// В расширении можно проверить наличие прав перед выполнением расчета
Если Не ПравоДоступа("Изменение", Метаданные.РегистрыНакопления.УчетДоходовДляИсчисленияНДФЛ) Тогда
Сообщить("Внимание! У пользователя недостаточно прав на регистр НДФЛ.");
КонецЕсли;
Важно отметить одну странную особенность, выявленную в версии 3.1.9.187. Даже если в константах программы галочка "Ограничивать доступ на уровне записей" снята, система всё равно может блокировать доступ. Это происходит из-за того, что в коде модулей документов зашиты жесткие проверки прав. Программа "думает", что раз прав на таблицу регистра нет в принципе (на уровне метаданных роли), то и операция запрещена, независимо от настроек RLS.
Поэтому не тратьте время на включение или выключение функциональных опций ограничения доступа — в данном конкретном случае это не поможет. Проблема решается исключительно на уровне состава ролей.
Мы выяснили, что ошибка "Нарушение прав доступа" в ЗУП 3.1.9 — это признанный баг платформенного наполнения ролей. Для исправления ситуации мы рекомендуем:
УчетДоходовДляИсчисленияНДФЛ.Следуя этим инструкциям, вы сможете оперативно восстановить работу расчетного отдела и обеспечить корректное проведение документов по прочим доходам и выплатам сторонним лицам.