Почему в 1С:ЗУП 3.1 не проводится «Прекращение планового начисления» с ошибкой об отсутствии действующего начисления?

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

В практике работы с программой 1С:Зарплата и управление персоналом 8 (редакция 3.1) часто возникает ситуация, когда при попытке прекратить ранее назначенную надбавку или доплату система выдает ошибку: «Для сотрудника нет действующего начисления на [дата]». Это сбивает с толку, так как в карточке сотрудника начисление отображается как действующее. В этой статье мы подробно разберем, почему возникает этот конфликт данных, как проанализировать плановые начисления сотрудников, скрытые механизмы системы и какими способами можно устранить проблему, не прибегая к удалению документов.

Разберем причину возникновения ошибки

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

  1. Начисление уже было прекращено другим документом (например, документом Кадровый перевод или Изменение оплаты труда).
  2. В базе данных для этого начисления уже установлена «Дата окончания», даже если визуально в документе назначения это поле кажется пустым.

Рассмотрим подробнее второй вариант, так как он является наиболее коварным. В современных версиях ЗУП 3.1 используются так называемые интервальные регистры. Они хранят информацию о начислениях в виде готовых периодов «Дата начала — Дата окончания». Если при создании документа назначения (например, Назначение планового начисления) пользователь случайно ввел дату окончания (часто это 31.12 текущего года), а затем просто стер ее клавишей Backspace или Delete, визуально поле может стать пустым, но в структуре базы данных (в табличной части документа) значение может сохраниться. Это приводит к рассинхронизации экранной формы и реальных записей в регистрах.

Шаг 1. Анализ регистров сведений

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

  1. Перейдем в меню «Функции для технического специалиста» (или «Все функции»).
  2. Найдем регистр сведений ПлановыеНачисления. Установим отбор по сотруднику и интересующему нас виду расчета. Проверим колонку Действует до. Если там стоит дата (например, 31.12.2023), значит, система считает начисление срочным.
  3. Аналогично проверим регистр ПлановыеНачисленияИнтервальный. Этот регистр является производным, и именно на его данные опирается механизм проведения документов. Часто бывает так, что в основном регистре даты нет, а в интервальном она «зависла» из-за программного сбоя.

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

Шаг 2. Проверка скрытых реквизитов документа через консоль запросов

Выясним причину появления даты в регистрах. Как правило, регистры двигает документ-регистратор. Если в регистре есть дата, значит, документ ее туда «записал». Рассмотрим, как проверить содержимое табличной части документа НазначениеПлановогоНачисления, даже если на форме всё чисто.

Для этого программисту или опытному пользователю рекомендуется использовать специализированную консоль запросов для ЗУП. Напишем простой запрос к табличной части Сотрудники документа-основания:


ВЫБРАТЬ
    Док.Ссылка КАК ДокументСсылка,
    Док.Сотрудник КАК Сотрудник,
    Док.ДатаЗавершения КАК ДатаЗавершения
ИЗ
    Документ.НазначениеПлановогоНачисления.Сотрудники КАК Док
ГДЕ
    Док.Сотрудник = &Сотрудник
    И Док.Начисление = &ВидРасчета

Если результат запроса в поле ДатаЗавершения покажет значение, отличное от 01.01.0001 (пустая дата), значит, реквизит в базе заполнен. На форме документа он может быть не виден из-за особенностей настройки прав или функциональных опций, либо из-за того, что при очистке поля значение не сбросилось в значение «пусто».

Шаг 3. Исправление данных: Групповое изменение реквизитов

Если мы подтвердили, что в документе-основании «спряталась» ненужная дата окончания, мы можем исправить это без перепроведения всей цепочки документов вручную. Воспользуемся обработкой «Групповое изменение реквизитов»:

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

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

Шаг 4. Пересчет интервальных регистров

Бывают ситуации, когда в документах всё корректно, а в регистре ПлановыеНачисленияИнтервальный все равно отображается неверный период. Это может быть следствием ошибки при обновлении конфигурации или аварийного завершения работы базы. В ЗУП 3.1 предусмотрен штатный механизм «лечения» таких расхождений.

Проанализируем алгоритм действий для восстановления интервалов:

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

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

Шаг 5. Особенности показателя «Только в месяце введения значения»

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

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

Резюме и рекомендации

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

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

← На главную