Переход с версии 1С:Зарплата и управление персоналом 2.5 (ПРОФ) на версию КОРП — это не просто обновление интерфейса, а серьезное изменение архитектуры учета, особенно в части управленческих начислений. Часто специалисты сталкиваются с ситуацией, когда после первого же проведения документов начисления зарплаты в версии КОРП в регистрах расчета появляются «странные» или «лишние» движения. Кадровики и бухгалтеры начинают задавать вопросы, почему по сотрудникам двоятся записи и откуда берется вид расчета Начислено по бухгалтерии в управленческом учете. В этой статье мы детально разберем, почему так происходит, проанализируем изменения в программном коде и выясним, как вернуть систему к привычному поведению.
Разберем ситуацию: в обычном ЗУП 2.5 управленческий учет часто существовал номинально и не мешал расчетчикам, если они его специально не настраивали. Однако в КОРП-версии логика разделения регламентированного (бухгалтерского) и управленческого учета встроена гораздо глубже. Основная проблема кроется в том, как система обрабатывает данные, если для сотрудника не заданы явные настройки ведения учета.
Проанализируем программный код обработки проведения, который отвечает за сбор данных для управленческого учета. Если мы посмотрим на запрос в базовой версии или версии ПРОФ, то увидим следующее условие:
ГДЕ
Результаты.ПериодРегистрации = &парамНачало
И УчетЗаработкаРаботников.УчетНачисленийПоОрганизации
И Результаты.Результат <> 0
В данном случае, если в регистре сведений УчетЗаработкаРаботников для конкретного физического лица отсутствует запись (то есть соединение возвращает NULL), условие УчетЗаработкаРаботников.УчетНачисленийПоОрганизации просто не выполняется. Система игнорирует такие записи, и управленческие движения не формируются автоматически.
Теперь рассмотрим, как изменился этот же участок кода в версии ЗУП КОРП. Разработчики изменили логику на «обратную», добавив проверку на пустое значение:
ГДЕ
Результаты.ПериодРегистрации = &парамНачало
И НЕ ЕСТЬNULL(УчетЗаработкаРаботников.УчетНачисленийПоОрганизации, ЛОЖЬ)
И Результаты.Результат <> 0
Выясним, что это означает на практике. Функция ЕСТЬNULL проверяет, есть ли запись в регистре. Если записи для сотрудника нет (значение NULL), функция подставляет ЛОЖЬ. Далее срабатывает оператор НЕ, превращая ЛОЖЬ в ИСТИНА. В итоге запрос выбирает данные по всем сотрудникам, у которых не установлена настройка учета по организации. Система считает, что раз вы перешли на КОРП, то обязаны вести управленческий учет, и начинает автоматически «подтягивать» данные из бухгалтерского учета в управленческий, создавая технические записи.
В плане видов расчета УправленческиеНачисления версии КОРП существует предопределенный элемент — НачисленоПоБухгалтерии. Его назначение — обеспечить идентичность сумм в двух видах учета. Рассмотрим механизм его работы:
Учет начислений по организации снят или запись в регистре отсутствует, система «зеркалит» регламентированные начисления в управленческий регистр через этот технический вид расчета.Именно поэтому после перехода пользователи видят новые строки в расчетных листах или отчетах. Для системы КОРП это штатное поведение, сигнализирующее о готовности к параллельному расчету зарплаты по двум разным алгоритмам (например, если управленческий оклад выше официального).
Если ваша компания не планирует использовать специфические возможности управленческого учета КОРП и хочет, чтобы расчеты выглядели как прежде, необходимо выполнить следующие действия. Мы разберем два способа: точечный и массовый.
Этот метод подойдет, если проблема возникла по нескольким новым сотрудникам. Пройдем по шагам:
Сотрудники.После этого при перепроведении документа Начисление зарплаты сотрудникам организаций лишние движения по управленческому учету исчезнут.
При переходе с ПРОФ на КОРП записи в регистре Учет заработка работников часто не переносятся или не создаются автоматически. Чтобы не заходить в каждого сотрудника вручную, воспользуемся групповой обработкой.
Рассмотрим алгоритм действий:
Учет заработка работников.ИСТИНА в поле УчетНачисленийПоОрганизации.Проанализируем результат: как только по всем сотрудникам в регистре появятся записи с включенным флагом, условие в запросе НЕ ЕСТЬNULL(..., ЛОЖЬ) для них превратится в НЕ ИСТИНА, что даст ЛОЖЬ. В результате данные перестанут попадать в выборку для формирования технических управленческих движений.
Подводя итог, можно сказать, что «непонятное поведение» программы — это не баг, а заложенная разработчиками особенность версии КОРП. Основная разница заключается в обработке NULL-значений в регистре УчетЗаработкаРаботников.
Чтобы избежать путаницы у пользователей и лишних вопросов от кадровиков:
Учет заработка работников сразу после апгрейда конфигурации.Учет начислений по организации как основной инструмент управления «видимостью» управленческого учета.Такой подход позволит вам быстро нормализовать учет и использовать преимущества КОРП-версии только там, где это действительно необходимо, не перегружая интерфейс и отчетность лишними техническими записями.