Как исправить ошибку «Неверные параметры "Начисления" &Начисления КАК Начисления» в 1С:ЗУП при создании отпуска?

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

При попытке пользователя с профилем Старший кадровик или аналогичными кадровыми правами ввести документ Отпуск в программе «1С:Зарплата и Управление Персоналом» может возникнуть ошибка синтаксиса запроса: (21,2) Неверные параметры "Начисления" <<?>> &Начисления КАК Начисления. Выясним причину возникновения данной неполадки и разберем способы ее устранения.

Технические причины возникновения ошибки

Проанализируем механику работы формы документа Отпуск. В стандартной конфигурации при изменении условий, дат или состава сотрудников в документе автоматически вызывается серверная процедура расчета начислений и среднего заработка (в частности, РассчитатьНачисленияНаСервере).

В языке запросов платформы «1С:Предприятие» конструкция вида ИЗ &Начисления КАК Начисления предполагает выборку из временной таблицы, переданной через параметр запроса. Для корректной работы платформы параметр &Начисления должен содержать объект ТаблицаЗначений с четко определенными типами колонок через ОписаниеТипов.

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

Способ 1. Доработка формы через расширение конфигурации

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

В модуле формы документа Отпуск в расширении для процедуры РассчитатьНачисленияНаСервере добавим проверку доступности ролей с помощью стандартной функции БСП Пользователи.РолиДоступны():


&НаСервере
Процедура Расш1_РассчитатьНачисленияНаСервереПеред(КатегорияРасчета)
    Если НЕ Пользователи.РолиДоступны("ДобавлениеИзменениеНачисленнойЗарплатыРасширенная,ПолныеПрава", , Ложь) Тогда
        Возврат;
    КонецЕсли;
КонецПроцедуры

Посмотрим, как работает данный код: если у кадровика отсутствуют роли ДобавлениеИзменениеНачисленнойЗарплатыРасширенная или ПолныеПрава, процедура пересчета мгновенно завершает выполнение до обращения к запросу, предотвращая сбой.

Способ 2. Установка официального патча или обновление конфигурации

Данная проблема является зафиксированной разработчиками 1С ошибкой типовых релизов (зарегистрирована на багборде 1С под номером 000038581). Выясним, как обновить программу для устранения проблемы:

  1. Перейдем в раздел Администрирование – Обновление программы.
  2. Проверим наличие и установим автоматический исправляющий патч для текущего релиза конфигурации.
  3. Или выполним обновление программы «1С:Зарплата и Управление Персоналом» до актуального релиза, где проверка прав перед вызовом серверных расчетов уже встроенa в типовой код.

Способ 3. Отключение автоматического расчета при вводе

Разберем вариант, когда кадровикам не требуется видеть расчетные суммы на этапе первичного ввода кадрового документа.

  1. В настройках программы или в персональных настройках пользователя найдем флаг автоматического расчета документов при вводе.
  2. Снимем флаг автоматического расчета. В этом случае кадровик сможет заполнять и проводить кадровую часть документа Отпуск, а окончательный расчет будет выполнять расчетная служба.
← На главную