Переход со старых версий программного обеспечения на новые — это всегда ответственный и технически сложный процесс. При переносе данных из конфигурации 1С:Зарплата и Управление Персоналом 2.5 в редакцию 3.1 пользователи часто сталкиваются с ситуацией, когда по некоторым сотрудникам продолжает рассчитываться пособие по уходу за ребенком, хотя фактически период выплаты завершен. Начисление автоматически попадает в документ НачислениеЗарплатыИВзносов вместе с окладом, несмотря на то, что в основных кадровых документах начисление числится как прекращенное.
В этой статье мы подробно разберем причины возникновения данной ошибки, проанализируем внутреннюю архитектуру регистров 1С:ЗУП 3.1 и изучим пошаговые методики ее устранения.
---
Первое, на что необходимо обратить внимание при обнаружении «фантомных» начислений — это специализированный механизм регистрации изменений. Если в системе зарегистрировано ошибочное событие, программа будет постоянно добавлять пособие в текущий документ начисления зарплаты, пытаясь скорректировать или доначислить его за прошлые периоды.
Проанализируем ситуацию и очистим очередь перерасчетов по шагам:
---
В конфигурации 1С:ЗУП версии 2.5 учет состояний сотрудников велся по другой схеме. Отпуск по уходу за ребенком мог завершиться автоматически по достижении конечной даты, указанной в исходном кадровом документе. В редакции 3.1 архитектура учета состояний строго требует введения явного документа-регистратора — ВозвратИзОтпускаПоУходу.
При переносе данных этот документ очень часто не создается автоматически. В результате в системе по сотруднику одновременно действуют два противоположных состояния: работа (начисляется оклад) и отпуск по уходу (начисляется пособие). Чтобы исправить это противоречие, выполним следующие действия:
СостоянияСотрудников.ОтпускПоУходуЗаРебенком в новой базе 3.1 нет (так как данные были перенесены техническими документами), программа позволит создать документ возврата на основании перенесенных данных — состояние автоматически подтянется из регистров переноса.---
Это наиболее частая скрытая техническая причина, с которой сталкиваются программисты и системные администраторы. Для оптимизации расчетов и повышения быстродействия в 1С:ЗУП редакции 3.1 используются так называемые интервальные регистры сведений. При переносе данных записи вносятся в физические таблицы напрямую, но их виртуальные интервальные копии могут не обновиться или засинхронизироваться некорректно.
Выясним причину, заглянув «под капот» системы:
ПлановыеНачисления может показывать корректную дату окончания начисления пособия.ПлановыеНачисленияИнтервальный период действия пособия может быть «размазан» или вовсе не иметь конечной даты.ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковИнтервальный.Если в интервальном регистре отсутствует конечная дата, то при заполнении документа НачислениеЗарплатыИВзносов движок расчета зарплаты будет упорно продолжать начислять пособие. Для исправления ситуации нам необходимо пересчитать интервалы. Сделать это можно несколькими способами:
Способ А. Перезапись кадровых документов
Найдем последний кадровый документ сотрудника (например, КадровыйПеревод или документ НачальнаяШтатнаяРасстановка, созданный при переносе), внесем в него любое незначительное изменение (например, временно поменяем и вернем обратно подразделение) и перепроведем его. Это спровоцирует автоматическую перезапись интервалов в регистрах для данного физического лица.
Способ Б. Использование встроенных процедур
Для технических специалистов доступен запуск встроенных механизмов обновления интервалов через консоль или внешнюю обработку. Мы можем использовать следующий программный код для принудительного обновления интервалов по конкретному сотруднику:
// Пример программного обновления интервалов плановых начислений
НаборЗаписей = РегистрыСведений.ПлановыеНачисленияИнтервальный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Сотрудник.Установить(ВыбранныйСотрудник);
// Вызов процедуры обновления интервалов для сотрудника
РегистрыСведений.ПлановыеНачисленияИнтервальный.ОбновитьИнтервалы(ВыбранныйСотрудник);
---
Весь перенос информации из версии 2.5 в 3.1 осуществляется при помощи специальных технических документов под названием ПереносДанных. Найти их можно в разделе Администратор -> Перенос данных.
Данные по отпускам по уходу за ребенком и плановым начислениям обычно хранятся в документах со следующими буквенными кодами:
Рассмотрим порядок действий для ручной корректировки:
ПлановыеНачисления).ПлановыеНачисления добавим строку для нашего сотрудника с видом действия Прекратить для начисления пособия.---
Иногда компенсационная выплата (например, ранее выплачивавшиеся работодателем 50 рублей до достижения ребенком 3 лет) переносится в базу 3.1 как независимое плановое начисление. В этом случае его нельзя прекратить стандартным документом, привязанным к отпуску по уходу.
Для его отмены нам необходимо воспользоваться специализированным кадровым документом:
---
Мы подробно разобрали все возможные причины появления излишнего начисления пособия по уходу за ребенком после переноса данных из ЗУП 2.5 в ЗУП 3.1. Чаще всего проблема кроется в отсутствии проведенного документа ВозвратИзОтпускаПоУходу или в рассинхронизации интервальных регистров ПлановыеНачисленияИнтервальный. Последовательное выполнение предложенных шагов позволит вам быстро и безболезненно исправить расчетную базу и избежать ошибок при начислении заработной платы.