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

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

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

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

Анализ причин возникновения ошибки

Для понимания природы сбоя выясним, как именно подсистема формирования отчетов обрабатывает исключительные ситуации:

  1. Шаблонная обработка исключений в библиотеке стандартных подсистем: Текст В настройку отчета внесены критичные изменения... является стандартной программной «оберткой» в общем модуле ЗарплатаКадрыОтчеты в процедуре ПриКомпоновкеРезультата. Модуль перехватывает любое низкоуровневое исключение схемы компоновки данных (СКД) или СУБД и оборачивает его в пользовательское сообщение. Фраза о недостаточности прав генерируется платформой не из-за настроек профилей пользователей, а вследствие ошибки выполнения транслированного SQL-запроса на стороне сервера СУБД.
  2. Специфика работы с СУБД PostgreSQL (Ошибка 40000543): Проблема вызвана зарегистрированной ошибкой конфигурации при работе в клиент-серверном варианте под управлением PostgreSQL. В коде компоновщика данных использовались синтаксические конструкции соединения виртуальных таблиц, которые без проблем обрабатывались в файловых базах и на MS SQL Server, но вызывали сбой парсера запросов PostgreSQL.
  3. Избирательность проявления ошибки: Запрос СКД в отчете собирается динамически. При формировании отчета по конкретному сотруднику с уже имеющейся историей начислений в запрос попадает только часть таблиц, поэтому расчетный листок формируется успешно. Но когда отчет запускается по всей организации или по новым сотрудникам (у которых еще нет накопленных данных по взаиморасчетам), в запрос включаются полные ветки связей, что и провоцирует ошибку базы данных.

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


{ОбщийМодуль.ВариантыОтчетов.Модуль(1752)}: Ошибка при вызове метода контекста (СкомпоноватьРезультат)
    ОтчетОбъект.СкомпоноватьРезультат(Результат.ТабличныйДокумент, Результат.Расшифровка);
по причине:
Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата'
по причине:
{ОбщийМодуль.ЗарплатаКадрыОтчеты.Модуль(1703)}: В настройку отчета "Расчетный листок" внесены критичные изменения. Отчет не будет сформирован. У пользователя недостаточно прав на исполнение операции над базой данных.

Способ 1. Обновление конфигурации (Основное решение)

Поскольку ошибка локализована в программном коде типовой конфигурации 1С:ЗУП 3.1, фирма «1С» выпустила официальное исправление.

  1. Проанализируем текущую версию конфигурации через меню Справка → О программе. Ошибка присутствует в релизах линейки 3.1.3 (например, 3.1.3.136).
  2. Выполним резервное копирование информационной базы перед проведением регламентных работ.
  3. Обновим конфигурацию 1С:ЗУП до релиза 3.1.3.157 или любого более позднего актуального релиза.
  4. После завершения реструктуризации и обновления информационной базы проверим формирование отчета Расчетный листок в массовом режиме по всем сотрудникам.

Способ 2. Исправление через расширение конфигурации (Без снятия с поддержки)

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

  1. Создадим новое расширение конфигурации с назначением Исправление (или Адаптация).
  2. Добавим в расширение общий модуль ЗарплатаКадрыОтчеты.
  3. Перехватим функцию формирования текста запроса для расчетных листков и скорректируем условия соединения таблиц начислений и взаиморасчетов, исключив несовместимые с PostgreSQL синтаксические конструкции.

Способ 3. Временный обход для пользователей

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

  1. Откроем отчет Расчетный листок.
  2. Перейдем в режим Настройки и установим отбор не по всей организации сразу, а точечно по списку подразделений или списку конкретных сотрудников.
  3. Формируем листки порциями: по сотрудникам со сформированной историей начислений отчет будет выводиться без падения СКД.

Диагностика смежных причин ошибки

Если подобная ошибка возникает на релизах, где платформенный баг с PostgreSQL уже исправлен, проанализируем следующие факторы:

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