При работе в программе 1С:Зарплата и управление персоналом 3.1 (особенно начиная с версий 3.1.14.х) многие пользователи и администраторы сталкиваются с пугающим сообщением: «В настройку отчета "Расчетный листок" внесены критичные изменения. Отчет не будет сформирован. У пользователя недостаточно прав на исполнение операции над базой данных». Рассмотрим подробно природу этой ошибки и разберем пошаговые методы её решения.
Важно понимать, что данная ошибка является своеобразной «защитной маской». Система выдает её в тех случаях, когда при формировании отчета механизм RLS (ограничение прав на уровне записей) натыкается на данные, доступ к которым пользователю запрещен, либо когда сами данные в регистрах заполнены некорректно. Чтобы не сообщать пользователю лишнюю техническую информацию, программа прерывает процесс формирования отчета с такой формулировкой.
Проанализируем наиболее вероятную техническую причину, которая чаще всего встречается в практике. Ошибка часто возникает из-за рассогласования данных в регистре, который система компоновки данных (СКД) использует для построения отчета. Если в базе включен RLS по организациям, а в записях регистра отсутствует привязка к конкретной организации, система блокирует чтение таких записей.
Разберем алгоритм проверки:
ТекущаяТарифнаяСтавка.Головная организация заполнена, а обычная Организация пуста — мы нашли причину.Для исправления ситуации необходимо программно или с помощью групповой обработки заполнить пустые измерения «Организация» соответствующими значениями. После того как во всех записях регистра будет указана организация, доступ к которой разрешен пользователю, отчет «Расчетный листок» начнет формироваться в штатном режиме.
Если проверка регистров не выявила пустых полей, нам необходимо выяснить, какой именно объект (сотрудник) вызывает конфликт прав доступа. Разберем, как это сделать методом исключения:
Попробуем сформировать отчет не по всей организации сразу, а по конкретным подразделениям или группам сотрудников. Выясним ситуацию на примере:
ВзаиморасчетыССотрудниками или НачисленияУдержанияПоСотрудникам) могли сформироваться некорректно.Проанализируем ситуацию: если при отборе по подразделению отчет не работает, а при ручном подборе всех сотрудников этого же подразделения в список — работает, это сигнализирует о том, что в подразделении есть «невидимый» для пользователя сотрудник (например, уволенный ранее), по которому система пытается прочитать данные, но RLS блокирует операцию.
Иногда ошибка может быть вызвана тем, что в кэше базы данных или в сохраненных настройках пользователя остались фрагменты структуры отчета, которые больше не соответствуют текущему релизу конфигурации после обновления. Посмотрим, как выполнить полную очистку:
РасчетныйЛисток и удалим все его персональные настройки и варианты.%AppData%\1C\1Cv8\).Если в программе включено ограничение прав доступа на уровне физических лиц, проблема может скрываться в настройках доступа к самим физлицам, а не к сотрудникам. Рассмотрим важный нюанс:
Система 1С:ЗУП разделяет понятия «Сотрудник» и «Физическое лицо». Расчетный листок собирает данные по Физическому лицу. Если пользователь имеет доступ к организации «А», но физическое лицо сотрудника включено в группу доступа, к которой у пользователя нет прав (или если физлицо не включено ни в одну группу при строгих настройках RLS), возникнет критичная ошибка компоновки.
Проверим следующее:
Если вышеуказанные способы не помогли, стоит обратиться к конфигуратору. Текст ошибки указывает на общий модуль ЗарплатаКадрыОтчеты. Проанализируем фрагмент кода, где срабатывает исключение:
// Примерное место возникновения ошибки в общем модуле
Если Не РезультатКомпоновки Тогда
ВызватьИсключение НСтр("ru = 'В настройку отчета ""Расчетный листок"" внесены критичные изменения.'");
КонецЕсли;
Причина вызова исключения кроется в методе СкомпоноватьРезультат. Если вы используете клиент-серверный вариант базы, попробуйте воспользоваться SQL-профайлером. Он может показать, что при выполнении запроса СКД добавляет условие (WHERE), содержащее пустые уникальные идентификаторы (GUID) или ссылки на подразделения/организации, к которым нет доступа. Это подтвердит гипотезу о «битых» данных в регистрах, которые нужно вычистить или заполнить.
Подведем итог: ошибка не связана с поломкой самого отчета. Это индикатор того, что механизм RLS не может однозначно определить права на порцию данных, попавших в выборку. Начните с проверки регистра ТекущаяТарифнаяСтавка и анализа прав доступа к конкретным сотрудникам из списка.