С выходом релиза 1С:ЗУП 3.1.14 многие пользователи столкнулись с неприятной ситуацией: при расчете зарплаты за текущий месяц программа начинает массово «подтягивать» перерасчеты за прошлые периоды (иногда даже за несколько лет). Самое неприятное в этой ситуации то, что стандартная очистка списка в разделе Зарплата — Сервис — Перерасчеты часто не дает результата — строки появляются снова и снова. Разберем подробно, почему это происходит и как навести порядок в базе.
Начиная с версий 3.1.14/3.1.15, разработчики существенно изменили логику регистрации изменений. Теперь программа ориентируется не только на явные записи в регистре ЗарплатаПерерасчет, которые мы видим в пользовательском интерфейсе, но и на скрытый технический механизм — Очередь перерасчетов. Проанализируем ситуацию: при обновлении на новый релиз система выполняет реструктуризацию данных и проверку целостности. Если в прошлых периодах были «кривые» ручные правки, система фиксирует несоответствие и ставит сотрудника в скрытую очередь на перерасчет.
Одной из главных причин массовых перерасчетов в ветке 3.1.14 стало введение обязательного указания вида дохода для исполнительного производства. Рассмотрим, как это работает:
Поскольку это изменение коснулось всех сотрудников, очередь перерасчетов заполняется мгновенно по всей организации.
Это, пожалуй, самый коварный механизм. Программа хранит «слепок» данных, на основании которых был произведен расчет (показатели, графики, нормы). Выясним причину конфликта: если расчетчик в августе вручную поменял количество часов в документе НачислениеЗарплаты, но не изменил Табель или ИндивидуальныйГрафик, возникает разрыв.
Программа «видит», что по графику должно быть 160 часов, а в документе стоит 150. Система считает это ошибкой и при каждом удобном случае (особенно после обновления алгоритмов) пытается «исправить» эту запись, сторнируя ручную правку и начисляя сумму по своим формулам.
Первое, что мы рекомендуем сделать, чтобы оперативно закрыть текущий месяц без лишней нервотрепки — это изменить настройки расчета. Разберем по шагам:
Это позволит «отвязать» перерасчеты от основного документа Начисление зарплаты и взносов. Теперь вкладка «Доначисления, перерасчеты» в основном документе исчезнет, а все подозрительные суммы будут собираться в специализированном документе Доначисление, перерасчет (находится в журнале Все начисления). Вы сможете спокойно рассчитать зарплату, а с перерасчетами разбираться отдельно или просто не проводить этот документ.
Если очистка через «Сервис — Перерасчеты» не помогает, нам придется заглянуть «под капот» программы. Проанализируем список регистров, которые могут хранить информацию о необходимости пересчета. Рассмотрим использование Универсального отчета (Администрирование — Печатные формы, отчеты и обработки) для поиска проблемных записей в следующих регистрах:
Очередь перерасчетов (Регистр сведений)Параметры пересчета металлолома (в редких случаях)Перерасчет зарплаты (Регистр накопления)Перерасчет среднего заработка (Регистр накопления)Если вы обладаете правами администратора или программиста, можно воспользоваться консолью запросов или внешней обработкой для очистки этих регистров. Посмотрим на пример программной очистки (использовать с осторожностью на копии базы!):
Набор = РегистрыСведений.ОчередьПерерасчетов.СоздатьНаборЗаписей();
// Если нужно очистить всё
Набор.Записать();
НаборЗП = РегистрыНакопления.ЗарплатаПерерасчет.СоздатьНаборЗаписей();
// Очистка регистра накопления, который отвечает за визуальный список
НаборЗП.Записать();
В ЗУП существует процедура обновления вторичных данных. Иногда программа «помнит» о необходимости перерасчета, потому что флаг перерасчета застрял в самих данных документа. Попробуем решить это следующим образом:
Часто такая принудительная регистрация с последующей отменой помогает программе «перезаписать» внутреннее состояние и перестать предлагать этот период к расчету.
Если перерасчеты вызваны ручными правками (как в Сообщении №11), то простым удалением записей из очереди не обойтись. Система при каждом расчете сравнивает «желаемое» с «имеющимся». Чтобы устранить причину навсегда, нужно либо привести первичные документы (Табели, Графики) в соответствие с начислениями, либо воспользоваться следующим приемом:
Проанализируем записи в регистре Исходные данные перерасчетов. Там хранятся значения показателей, которые программа считает «эталонными». Если там записано неверное значение часов, его можно попробовать скорректировать (через групповое изменение реквизитов или обработку), чтобы оно совпадало с ручной правкой в документе. Тогда система перестанет видеть разницу и перестанет генерировать перерасчет.
Подводя итог, отметим: появление перерасчетов в 3.1.14 — это следствие ужесточения контроля программы за историческими данными. Главный совет: избегайте ручных правок сумм и времени непосредственно в документе Начисление зарплаты и взносов. Используйте Данные для расчета зарплаты или Индивидуальные графики. Если же «фантомы» уже появились:
Очередь перерасчетов.Помните, что для схлопывания пересортицы во взаиморасчетах оставлять «нулевые» перерасчеты в ведомостях нельзя, так как это может исказить учет НДФЛ и данные в отчете 6-НДФЛ (может понадобиться исправить 170 строку 6-НДФЛ), разбивая суммы по разным датам получения дохода.