Почему в ЗУП 3.1 в документе «Начисление зарплаты и взносов» не заполнился показатель «Оклад» и как это исправить?

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

В процессе эксплуатации программы 1С:Зарплата и управление персоналом 3.1 (особенно на релизах ветки 3.1.14) пользователи могут столкнуться с критической проблемой: при автоматическом заполнении документа НачислениеЗарплатыИВзносов у ряда сотрудников показатель Оклад (или ТарифнаяСтавка) остается пустым. При этом итоговая сумма начисления может рассчитаться верно, но отсутствие данных в таблице показателей создает «бомбу замедленного действия», которая срабатывает при последующем вводе больничных листов или других документов-отклонений.

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

Суть проблемы и механизм связи с больничным листом

Для начала проанализируем ситуацию: почему пустой оклад в начислении зарплаты мешает расчету больничного? В системе ЗУП 3.1 реализован механизм вытеснения. Когда в периоде уже начисленной зарплаты регистрируется больничный, программа должна «забрать» часть ранее выплаченных денег (сторнировать их). Для выполнения этого расчета системе недостаточно знать только количество дней — ей нужен базовый показатель, из которого рассчитывалась сумма, то есть Оклад.

Если в исходном документе НачислениеЗарплатыИВзносов в скрытой табличной части показателей значение оклада равно нулю или отсутствует, механизм сторнирования не находит данных для расчета. В результате в больничном листе мы видим пустые суммы сторно, хотя дни отсутствия зафиксированы верно. Это приводит к завышению выплат и искажению отчетности.

Выясняем причины возникновения ошибки

Проанализируем основные факторы, которые могут привести к «потере» показателей:

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

Способ 1. Индивидуальный пересчет сотрудников

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

  1. Откроем проблемный документ Начисление зарплаты и взносов.
  2. Найдем в списке сотрудника, у которого не заполнены показатели.
  3. Нажмем правую кнопку мыши на строке сотрудника и выберем команду «Пересчитать сотрудника».

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

Способ 2. Тестирование и исправление (ТИИ)

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

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

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

Способ 3. Массовое заполнение показателей обработкой

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

Посмотрим на логику, которую должен реализовать такой алгоритм:


// Пример логики для восстановления показателя Оклад в ТЧ документа
Для Каждого СтрокаНачисления Из Объект.Начисления Цикл
    // Ищем, есть ли уже показатель Оклад для этой строки
    ПоискПоказателя = Объект.Показатели.НайтиСтроки(Новый Структура("ИдентификаторСтроки", СтрокаНачисления.ИдентификаторСтроки));
    
    ОкладНайден = Ложь;
    Для Каждого СтрПок Из ПоискПоказателя Цикл
        Если СтрПок.Показатель = Справочники.ПоказателиРасчетаЗарплаты.Оклад Тогда
            ОкладНайден = Истина;
        КонецЕсли;
    КонецЦикла;
    
    // Если показатель отсутствует, добавляем его из плановых данных
    Если Не ОкладНайден Тогда
        НоваяСтрокаПок = Объект.Показатели.Добавить();
        НоваяСтрокаПок.ИдентификаторСтроки = СтрокаНачисления.ИдентификаторСтроки;
        НоваяСтрокаПок.Показатель = Справочники.ПоказателиРасчетаЗарплаты.Оклад;
        // Значение получаем через функцию получения плановых начислений (упрощенно)
        НоваяСтрокаПок.Значение = ПлановыеДанныеСотрудника.Оклад; 
    КонецЕсли;
КонецЦикла;

Важный нюанс: при программном изменении табличных частей документа Начисление зарплаты и взносов необходимо следить за тем, чтобы не изменился итоговый Результат и суммы НДФЛ и Взносов, если они уже были выверены бухгалтером.

Способ 4. Проверка настроек вида расчета и показателей

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

  1. Перейдем в раздел «Настройка — Начисления» и откроем карточку начисления Оплата по окладу.
  2. Проверим формулу. Убедимся, что используемый в ней показатель действительно называется Оклад.
  3. Перейдем в «Настройка — Показатели расчета зарплаты».
  4. Проверим у показателя Оклад настройки использования. Должно быть выбрано: «Во всех месяцах после введения значения» (постоянный показатель).
  5. Убедимся, что стоит галочка Является тарифной ставкой. Это критично для корректной работы алгоритмов ЗУП при обновлении и заполнении документов.

Заключение и рекомендации

Проблема пустого оклада в ЗУП 3.1 — это чаще всего следствие технического сбоя при записи данных в БД или недоработки конкретного релиза. Для исправления ситуации в текущем периоде наиболее эффективным является индивидуальный пересчет сотрудников или использование групповой обработки заполнения ТЧ показателей. Для предотвращения подобных ошибок в будущем рекомендуется своевременно обновлять программу на стабильные патчи от 1С и периодически выполнять Тестирование и исправление базы.

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

← На главную