Почему после переноса данных из ЗУП 2.5 в ЗУП 3.1 неверно рассчитываются дни для среднего заработка и как это исправить?

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

Переход с устаревшей конфигурации 1С:Зарплата и Управление Персоналом ред. 2.5 на современную версию 3.1 — это сложный процесс, который часто сопровождается непредвиденными ошибками в учете. Одна из наиболее распространенных проблем, с которой сталкиваются пользователи при начислении отпускных после переноса (особенно при выборе рекомендованного метода переноса начислений предыдущей программы), заключается в некорректном расчете среднего заработка. Бухгалтеры замечают две основные проблемы: странные периоды в поле "Предоставляется за период работы с... по..." и недостоверные данные об отработанных днях в печатной форме расчета среднего заработка, хотя сами суммы при этом могут переноситься абсолютно корректно.

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

Архитектурные отличия учета времени в ЗУП 2.5 и ЗУП 3.1

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

Данные о времени и суммах для среднего заработка теперь аккумулируются в специализированных регистрах:

  1. Регистр накопления Данные о времени для расчета среднего (общий) — это первичный источник данных, куда при переносе записываются сведения о фактически отработанных днях и часах.
  2. Регистр сведений Сведения о времени для расчета среднего (общий) — независимый регистр, который хранит информацию о ручных корректировках.
  3. Регистр сведений Данные о времени для расчета общего среднего заработка (корректировка) — технический регистр, фиксирующий разницу при ручном вмешательстве пользователя в документы переноса или формы расчета.

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

Проанализируем детально каждую проблему и найдем системные пути их решения.

Проблема №1: Неверный рабочий период сотрудника в документе "Отпуск"

Часто после переноса данных у сотрудника, принятого на работу, например, в 2007 году, при оформлении отпуска в 2019 году рабочий год определяется некорректно (например, программа пишет, что отпуск предоставляется за период работы с 2007 по 2008 год). Бухгалтеру кажется, что это влияет на расчет среднего заработка.

Почему это происходит:

При «кратком» или частичном переносе данных из ЗУП 2.5 информация о фактически использованных отпусках за прошлые периоды не переносится автоматически в полном объеме. Программа видит дату приема сотрудника (например, 2007 год), но не видит ни одного проведенного документа отпуска за все последующие годы. В результате алгоритм 1С считает, что у сотрудника накопился огромный долг по неиспользованным отпускам с самого первого года работы, и начинает предоставлять текущий отпуск за самый ранний незакрытый период.

Как исправить:

Для исправления этой ситуации необходимо ввести актуальные остатки отпусков на дату начала ведения учета в ЗУП 3.1. Для этого выполним следующие действия:

  1. Перейдем в раздел Главное — См. также — Ввод остатков отпусков (или найдем данный документ через функции для технического специалиста).
  2. Создадим новый документ на дату начала работы в новой базе (например, 31.12.2018).
  3. Выберем сотрудника и заполним таблицу его реальными правами на отпуск и остатками неиспользованных дней. Если за прошлые годы все отпуска отгуляны, укажем остаток только за текущий рабочий год.
  4. После проведения этого документа рабочий период в новых документах Отпуск автоматически станет актуальным.

Проблема №2: Некорректные (завышенные или нулевые) отработанные дни в расчете среднего заработка

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

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

Пошаговый алгоритм решения проблемы через очистку регистров:

Шаг 1. Анализ регистра корректировок.
Нам необходимо проверить содержимое регистра сведений Данные о времени для расчета общего среднего заработка (корректировка). Сделать это можно через меню «Функции для технического специалиста» (или перейдя по ссылке e1cib/list/РегистрСведений.ДанныеОВремениДляРасчетаОбщегоСреднегоЗаработкаКорректировка). Если по проблемному сотруднику там присутствуют записи с нулевыми или некорректными значениями, их необходимо удалить.

Для автоматизации этого процесса (если проблемных сотрудников много) программисты могут использовать простой код для очистки записей по конкретному физическому лицу:


НаборЗаписей = РегистрыСведений.ДанныеОВремениДляРасчетаОбщегоСреднегоЗаработкаКорректировка.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Сотрудник.Установить(ВыбранныйСотрудник);
НаборЗаписей.Прочитать();
Если НаборЗаписей.Количество() > 0 Тогда
    НаборЗаписей.Очистить();
    НаборЗаписей.Записать();
    Сообщить("Записи корректировок по сотруднику успешно удалены.");
КонецЕсли;

Шаг 2. Проверка независимого регистра сведений «Сведения о времени...».
Очень часто бухгалтеры нажимают на значок «карандаш» рядом с полем «Средний заработок» в документе отпуска, чтобы быстро поправить расчет. Как только кнопка «ОК» в форме редактирования нажата, система создает жестко зафиксированную запись в регистре сведений Сведения о времени для расчета среднего (общий). С этого момента программа полностью игнорирует любые изменения в документах переноса данных или начислениях зарплаты по этому сотруднику.

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

Шаг 3. Перезапись графиков работы и производственного календаря.
Иногда некорректный подсчет дней связан с тем, что при переносе данных графики работы сотрудников не были заполнены на новые периоды или не сопоставились с производственным календарем. Рекомендуется выполнить следующие действия:

  1. Открыть раздел Настройка — Производственные календари. Открыть текущий календарь, нажать Заполнить по умолчанию и перезаписать его.
  2. Открыть раздел Настройка — Графики работы сотрудников. Зайти в каждый график, используемый на предприятии, нажать кнопку Заполнить на текущий и предыдущий год, после чего сохранить изменения. Это обновит внутренние технические таблицы нормативного времени.

Проблема №3: Ошибка времени проведения в документах "Перенос данных"

Рассмотрим еще один скрытый баг платформы 1С. При переносе данных сторонними обработками или ручном импорте записей из ЗУП 2.5 документы Перенос данных могут получить время проведения, отличное от полуночи (например, 15.01.2018 14:35:22).

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

Решение: Убедитесь, что все документы Перенос данных с кодами ЗП_СЗО (и другие расчетные документы переноса) проведены строго со временем 00:00:00.

Обязательный финальный шаг: Обновление кэша среднего заработка

Даже если мы идеально вычистили все регистры корректировок, настроили графики и исправили документы переноса, при открытии документа Отпуск мы можем увидеть всё те же старые ошибочные цифры. Дело в том, что ЗУП 3.1 кэширует данные для расчета среднего заработка во избежание повторных тяжелых запросов к базе данных при каждом открытии формы.

Чтобы заставить программу принудительно пересчитать данные по исправленным регистрам, необходимо запустить специализированную обработку обновления базы.

Инструкция по запуску обновления:

  1. Перейдите в раздел меню Зарплата.
  2. В блоке Сервис найдите и откройте ссылку Обновить данные для расчета среднего заработка.
  3. В открывшемся окне укажите вашу организацию.
  4. Выберите период (рекомендуется указать весь период с момента переноса данных, например, с января прошлого года по текущий месяц).
  5. Нажмите кнопку Выполнить и дождитесь окончания процесса.

После выполнения данной обработки откройте проблемный документ Отпуск, нажмите кнопку Еще — Пересчитать документ. Все данные об отработанных днях и расчетных периодах придут в соответствие с корректными первичными регистрами!

← На главную