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

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

При работе в конфигурации 1С:Зарплата и управление персоналом 3.1 (а также в 1С:ERP и 1С:Комплексная автоматизация) пользователи и разработчики часто сталкиваются с ситуацией, когда документ Кадровый перевод списком отказывается проводиться. Система выдает критическую ошибку: «Ежемесячные начисления не установлены». При этом аналогичный одиночный документ по тому же сотруднику проводится без каких-либо нареканий. Проанализируем причины этой проблемы и разберем по шагам способы ее решения.

Выясняем причину: логика разделения полномочий

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

  1. Кадровик заполняет список сотрудников и даты перевода.
  2. Для фиксации изменений в оплате труда (могут потребоваться согласия на изменение оклада) необходимо зайти в форму редактирования начислений для каждого сотрудника.
  3. Внутри объекта существует скрытый реквизит НачисленияУтверждены (тип Булево). Если вы просто добавили сотрудника в список, но не открыли окно редактирования его начислений по гиперссылке и не нажали «ОК», этот флаг остается в значении Ложь.

Программа интерпретирует это так: кадровые данные внесены, но финансовая часть не подтверждена (в этом случае может потребоваться редактирование кадровой истории). Именно поэтому при попытке проведения срабатывает процедура ОбработкаПроверкиЗаполнения в модуле объекта, которая блокирует запись документа.

Решение 1: Ручное подтверждение для небольших списков

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

  1. Откройте проблемный документ Кадровый перевод списком.
  2. В строке каждого сотрудника найдите колонку с начислениями (обычно это гиперссылка, отображающая размер оклада или ФОТ).
  3. Нажмите на гиперссылку, чтобы открылось отдельное окно «Начисления и показатели».
  4. Даже если вы не меняли цифры, обязательно нажмите кнопку ОК в этом окне.
  5. Повторите операцию для всех сотрудников в списке.

После этого признак НачисленияУтверждены для каждой строки будет установлен в Истина, и документ проведется.

Решение 2: Групповое изменение реквизитов

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

  1. Перейдите в раздел АдминистрированиеОбслуживаниеКорректировка данных — Групповое изменение реквизитов.
  2. В поле «Изменять» выберите Кадровый перевод списком.
  3. Нажмите «Добавить условие отбора» и выберите нужный вам документ (по номеру или ссылке).
  4. Найдите в списке реквизитов Начисления утверждены и установите напротив него галочку, а в колонке «Новое значение» выберите Да.
  5. Нажмите кнопку «Изменить реквизиты».

Важно: Этот метод сработает только в том случае, если табличные части с начислениями фактически заполнены (например, подтянулись из штатного расписания), но просто не был взведен флаг утверждения.

Решение 3: Для разработчиков (программное создание)

Если вы создаете документ программно (при миграции данных или интеграции), одной записи в основные реквизиты недостаточно. Выясним, какие именно действия в коде предотвратят ошибку. Посмотрим на пример правильного заполнения объекта:


// Предположим, ДокОбъект — это созданный документ Кадровый перевод списком
Для Каждого СтрокаСотрудник Из ДокОбъект.Сотрудники Цикл
    // Заполнение кадровых данных...
    
    // Обязательно устанавливаем флаг утверждения начислений
    ДокОбъект.НачисленияУтверждены = Истина; 
КонецЦикла;

Попытка
    ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
    Сообщить(ОписаниеОшибки());
КонецПопытки;

Проанализируем ситуацию глубже: помимо флага НачисленияУтверждены, система проверяет соответствие идентификаторов строк. Если вы программно заполняете таблицу Начисления, убедитесь, что поле ИдентификаторСтрокиВидаРасчета корректно связано с основной таблицей Сотрудники. Если связи нет, программа посчитает, что начисления «чужие» или отсутствуют.

Проблемы с показателями и формулами

Второй вопрос, часто возникающий в этой теме — пропажа показателей после изменения формулы. Рассмотрим, почему это происходит и как восстановить данные:

  1. Смена идентификаторов: Когда вы правите формулу в справочнике Начисления, 1С заново анализирует текст. Если вы удалили показатель Оклад и вписали его снова, для системы это может стать «новым» вхождением. Старые документы, которые ссылались на предыдущую структуру формулы, перестают «видеть» значения показателей.
  2. Настройка показателей: Проверьте в справочнике Показатели расчета зарплаты, установлена ли галочка «Вводится в кадровых документах». Если она снята, колонка для ввода показателя исчезнет из формы кадрового перевода.

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

Влияние штатного расписания

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

Когда штатное расписание не заполнено, документ может проводиться, так как проверять не с чем. Но как только вы создаете Утверждение штатного расписания, система начинает требовать строгого соответствия. Если в позиции штатки указаны начисления, но не заданы значения показателей (или задана «вилка» мин/макс), документ в списочном режиме может выдать ошибку «Ежемесячные начисления не установлены», так как он не может автоматически определить конкретную цифру для каждого сотрудника. В этом случае ручное уточнение в каждой строке (Решение 1) является обязательным.

Итог: Основной ключ к решению проблемы — реквизит НачисленияУтверждены. Используйте его при программной разработке и проверяйте его состояние при возникновении пользовательских ошибок.

← На главную