Почему в ЗУП 3.1 возникает ошибка «В настройку отчета "Расчетный листок" внесены критичные изменения» и как её исправить?

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

При работе в программе 1С:Зарплата и управление персоналом 3.1 (особенно начиная с версий 3.1.14.х) многие пользователи и администраторы сталкиваются с пугающим сообщением: «В настройку отчета "Расчетный листок" внесены критичные изменения. Отчет не будет сформирован. У пользователя недостаточно прав на исполнение операции над базой данных». Рассмотрим подробно природу этой ошибки и разберем пошаговые методы её решения.

Важно понимать, что данная ошибка является своеобразной «защитной маской». Система выдает её в тех случаях, когда при формировании отчета механизм RLS (ограничение прав на уровне записей) натыкается на данные, доступ к которым пользователю запрещен, либо когда сами данные в регистрах заполнены некорректно. Чтобы не сообщать пользователю лишнюю техническую информацию, программа прерывает процесс формирования отчета с такой формулировкой.

Метод 1. Проверка регистра сведений «Текущая тарифная ставка»

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

Разберем алгоритм проверки:

  1. Откроем Функции для технического специалиста (или через «Все функции», если версия платформы старше).
  2. Найдем регистр сведений ТекущаяТарифнаяСтавка.
  3. Внимательно изучим список записей. Особое внимание уделим колонке Организация.
  4. Если мы обнаружим записи, где колонка Головная организация заполнена, а обычная Организация пуста — мы нашли причину.

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

Метод 2. Локализация проблемы через отбор сотрудников

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

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

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

Метод 3. Очистка кэша и настроек пользователя

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

  1. Зайдем в раздел Администрирование — Обслуживание.
  2. Перейдем в пункт Управление настройками пользователей.
  3. Выберем Очистка настроек.
  4. Найдем конкретного пользователя, выберем отчет РасчетныйЛисток и удалим все его персональные настройки и варианты.
  5. Дополнительно рекомендуется очистить локальный кэш платформы 1С на компьютере пользователя (удаление папок из %AppData%\1C\1Cv8\).

Метод 4. Проверка групп доступа физических лиц

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

Система 1С:ЗУП разделяет понятия «Сотрудник» и «Физическое лицо». Расчетный листок собирает данные по Физическому лицу. Если пользователь имеет доступ к организации «А», но физическое лицо сотрудника включено в группу доступа, к которой у пользователя нет прав (или если физлицо не включено ни в одну группу при строгих настройках RLS), возникнет критичная ошибка компоновки.

Проверим следующее:

  1. Откроем карточку проблемного физического лица.
  2. Проверим, какая Группа доступа ему назначена.
  3. Убедимся, что в профиле групп доступа пользователя разрешена работа с этой группой физлиц.

Метод 5. Технический анализ кода (для администраторов и программистов)

Если вышеуказанные способы не помогли, стоит обратиться к конфигуратору. Текст ошибки указывает на общий модуль ЗарплатаКадрыОтчеты. Проанализируем фрагмент кода, где срабатывает исключение:


// Примерное место возникновения ошибки в общем модуле
Если Не РезультатКомпоновки Тогда
    ВызватьИсключение НСтр("ru = 'В настройку отчета ""Расчетный листок"" внесены критичные изменения.'");
КонецЕсли;

Причина вызова исключения кроется в методе СкомпоноватьРезультат. Если вы используете клиент-серверный вариант базы, попробуйте воспользоваться SQL-профайлером. Он может показать, что при выполнении запроса СКД добавляет условие (WHERE), содержащее пустые уникальные идентификаторы (GUID) или ссылки на подразделения/организации, к которым нет доступа. Это подтвердит гипотезу о «битых» данных в регистрах, которые нужно вычистить или заполнить.

Подведем итог: ошибка не связана с поломкой самого отчета. Это индикатор того, что механизм RLS не может однозначно определить права на порцию данных, попавших в выборку. Начните с проверки регистра ТекущаяТарифнаяСтавка и анализа прав доступа к конкретным сотрудникам из списка.

← На главную