Как устранить задолженность по зарплате с плюсом и минусом в 1С:ЗУП 3.1

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

Каждый практикующий специалист по внедрению или сопровождению программных продуктов семейства 1С хотя бы раз сталкивался с ситуацией, когда в отчетах по заработной плате (например, в «Анализе зарплаты по сотрудникам» или «Расчетном листке») внезапно появляются странные долги за прошлые периоды. Самое интересное, что эти суммы дублируются: одна строка идет с плюсом, а другая — с точно таким же минусом, в результате чего общая сумма долга равна нулю. Тем не менее этот «визуальный» мусор сильно мешает работе бухгалтера, искажает отчетность по НДФЛ и мешает автоматическому заполнению ведомостей.

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

Почему возникает пересортица «плюс-минус» в 1С:ЗУП 3.1?

Рассмотрим первопричину этого поведения системы. Начиная с версии 1С:ЗУП 3.1.9, разработчики существенно доработали и усложнили архитектуру аналитического учета. В три важнейших регистра накопления, которые отвечают за расчеты с персоналом и формирование ведомостей, было добавлено новое обязательное измерение — СтатьяРасходов. К этим регистрам относятся:

  1. ВзаиморасчетыССотрудниками — основной регистр, где хранится информация о том, кто, кому и сколько должен в разрезе сотрудников, периодов и документов.
  2. БухгалтерскиеВзаиморасчетыССотрудниками — регистр, отвечающий за отражение расчетов в бухгалтерском учете.
  3. ЗарплатаКВыплате — регистр, на основании которого программа понимает, какие суммы нужно подтягивать в новые ведомости при нажатии кнопки «Заполнить».

При обновлении информационной базы на новые релизы система пытается автоматически сопоставить старые движения документов с новой аналитикой и по умолчанию прописать предопределенную статью расходов — «ОТ» (Расчеты по оплате труда). Однако в старых документах начислений и выплат, которые были введены до обновления, эта аналитика физически отсутствовала либо осталась незаполненной.

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

Аналогичная массовая волна подобных ошибок наблюдалась и при переходе на более поздние релизы (например, 3.1.14), когда разработчики добавили в эти же регистры накопления еще одно обязательное измерение — ВидДоходаИсполнительногоПроизводства.

В чем опасность пересортицы для учета НДФЛ?

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

Диагностика проблемы с помощью «Универсального отчета»

Перед тем как приступать к исправлению, нам необходимо точно локализовать проблему и выявить всех сотрудников, по которым пошла пересортица аналитики. Для этого настроим УниверсальныйОтчет (находится в разделе Администрирование — Обслуживание — Универсальный отчет):

  1. В поле «Тип объекта» выберем значение Регистр накопления.
  2. В поле «Имя объекта» выберем Взаиморасчеты с сотрудниками.
  3. В поле «Таблица» укажем Остатки.
  4. Перейдем в настройки отчета (кнопка «Настройки») и на вкладке «Структура» добавим группировки в следующем порядке:
    • ФизическоеЛицо (очень важно группировать именно по физлицу, а не по сотруднику, чтобы отловить проблемы по внутренним совместителям);
    • СтатьяРасходов;
    • Подразделение;
    • ДокументВзаиморасчетов.

Сформируем отчет. Если мы видим строки по одному и тому же человеку, где по пустой статье расходов висит остаток, например, -15 000 рублей, а по статье расходов «ОТ» висит +15 000 рублей — перед нами классическая пересортица аналитики, которую необходимо устранить.

Способ 1. Программное исправление регистров накопления

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

Алгоритм работы нашего кода следующий: мы делаем запрос к регистру накопления ВзаиморасчетыССотрудниками, выбирая все различные документы-регистраторы, где статья расходов не заполнена. Затем по каждому найденному регистратору мы считываем наборы записей трех ключевых регистров, проверяем наличие пустых значений в измерении СтатьяРасходов, заменяем их на нужную статью (например, находим статью с кодом «ОТ») и записываем наборы обратно в базу данных.


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |	ВзаиморасчетыССотрудниками.Регистратор КАК Регистратор,
    |	ВзаиморасчетыССотрудниками.СтатьяРасходов КАК СтатьяРасходов
    |ИЗ
    |	РегистрНакопления.ВзаиморасчетыССотрудниками КАК ВзаиморасчетыССотрудниками
    |ГДЕ
    |	ВзаиморасчетыССотрудниками.СтатьяРасходов = ЗНАЧЕНИЕ(Справочник.СтатьиРасходовЗарплата.ПустаяСсылка)";

Результат = Запрос.Выполнить().Выбрать();
СтатьяРасходов = Справочники.СтатьиРасходовЗарплата.НайтиПоКоду("ОТ");

Если Не ЗначениеЗаполнено(СтатьяРасходов) Тогда
    ВызватьИсключение "Не найдена статья расходов с кодом 'ОТ'. Проверьте справочник!";
КонецЕсли;

Пока Результат.Следующий() Цикл
    
    // 1. Исправление регистра "Взаиморасчеты с сотрудниками"
    ВзаиморасчетыРег = РегистрыНакопления.ВзаиморасчетыССотрудниками.СоздатьНаборЗаписей();
    ВзаиморасчетыРег.Отбор.Регистратор.Установить(Результат.Регистратор);
    ВзаиморасчетыРег.Прочитать();
    
    МодифицированВзаиморасчеты = Ложь;
    Для каждого Запись Из ВзаиморасчетыРег Цикл
        Если Не ЗначениеЗаполнено(Запись.СтатьяРасходов) Тогда
            Запись.СтатьяРасходов = СтатьяРасходов;
            МодифицированВзаиморасчеты = Истина;
        КонецЕсли;
    КонецЦикла;
    
    Если МодифицированВзаиморасчеты Тогда
        ВзаиморасчетыРег.Записать();
    КонецЕсли;
    
    // 2. Исправление регистра "Бухгалтерские взаиморасчеты с сотрудниками"
    БухВзаиморасчетыРег = РегистрыНакопления.БухгалтерскиеВзаиморасчетыССотрудниками.СоздатьНаборЗаписей();
    БухВзаиморасчетыРег.Отбор.Регистратор.Установить(Результат.Регистратор);
    БухВзаиморасчетыРег.Прочитать();
    
    МодифицированБух = Ложь;
    Для каждого Запись Из БухВзаиморасчетыРег Цикл
        Если Не ЗначениеЗаполнено(Запись.СтатьяРасходов) Тогда
            Запись.СтатьяРасходов = СтатьяРасходов;
            МодифицированБух = Истина;
        КонецЕсли;
    КонецЦикла;
    
    Если МодифицированБух Тогда
        БухВзаиморасчетыРег.Записать();
    КонецЕсли;
    
    // 3. Исправление регистра "Зарплата к выплате"
    ЗарплатаКВыплатеРег = РегистрыНакопления.ЗарплатаКВыплате.СоздатьНаборЗаписей();
    ЗарплатаКВыплатеРег.Отбор.Регистратор.Установить(Результат.Регистратор);
    ЗарплатаКВыплатеReg.Прочитать();
    
    МодифицированЗарплата = Ложь;
    Для каждого Запись Из ЗарплатаКВыплатеРег Цикл
        Если Не ЗначениеЗаполнено(Запись.СтатьяРасходов) Тогда
            Запись.СтатьяРасходов = СтатьяРасходов;
            МодифицированЗарплата = Истина;
        КонецЕсли;
    КонецЦикла;
    
    Если МодифицированЗарплата Тогда
        ЗарплатаКВыплатеРег.Записать();
    КонецЕсли;
    
КонецЦикла;

Важное предупреждение: Перед запуском любого программного кода, напрямую модифицирующего записи регистров накопления, обязательно сделайте резервную копию базы данных! Сначала протестируйте работу алгоритма на копии, проверьте результаты по конкретному сотруднику и только потом применяйте решение на рабочей базе.

Способ 2. Корректировка документов и последовательное перепроведение

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

  1. С помощью стандартной обработки «Групповое изменение реквизитов» найдите документы выплаты (ведомости в банк, кассу, на счета), которые были созданы после момента обновления конфигурации. Заполните в них реквизит СтатьяРасходов значением «ОТ» во всех строках табличной части, если он остался пустым.
  2. Последовательно отмените проведение всех документов начисления и выплаты зарплаты, начиная с периода возникновения первой ошибки.
  3. Проведите документы в строгой хронологической последовательности: сначала документы начисления (например, НачислениеЗарплатыИВзносов), затем ведомости на выплату, и в самом конце — документы подтверждения выплаты (например, ПодтверждениеВыплатыЗарплатыВБанк).

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

Способ 3. Устранение пересортицы с помощью «Технической ведомости» (без программирования)

Если у вас нет возможности запускать программный код или база находится во фреше (облаке) без прав на использование внешних обработок, выровнять учет можно стандартным, но очень эффективным пользовательским методом. Разберем его по шагам:

  1. Создайте новый документ Ведомость в кассу (или «Ведомость через раздатчика» — эти типы документов более гибкие для ручных корректировок). Месяц выплаты укажите текущий, дату документа поставьте также текущую.
  2. В табличную часть документа с помощью кнопки Подбор добавьте сотрудника, по которому идет «плюс-минус» пересортица.
  3. Программа автоматически заполнит ведомость. Обратите внимание на колонку «К выплате». Итоговая сумма по сотруднику в этой колонке должна быть равна 0 (или содержать реальную сумму к выплате, если за текущий месяц есть начисления).
  4. Дважды кликните по сумме в колонке «К выплате» (или нажмите на ссылку «В т.ч. за...»). Перед вами откроется окно расшифровки платежа.
  5. В этом окне вы увидите те самые развернутые строки пересортицы прошлых периодов. Например: одна строка с пустой статьей расходов на сумму -12 500 рублей, а вторая строка со статьей «ОТ» на сумму +12 500 рублей.
  6. Главный секрет метода: Удалите из этого окна все строки, которые относятся к реальным начислениям текущего месяца (если они есть), чтобы они не мешали. Оставьте исключительно взаимоисключающие строки прошлых периодов, которые в сумме дают строго 0.
  7. Проверьте вкладку НДФЛ в этой ведомости. Налог по сотруднику также должен пересчитаться в 0. Если там появились какие-то суммы, очистите их вручную.
  8. Проведите документ ведомости.

В результате проведения такой «технической» ведомости реальной выплаты денег сотруднику не произойдет (сумма к выплате нулевая), но регистры накопления сделают движения, которые закроют («схлопнут») зависшие остатки по разным аналитикам.

Способ 4. Использование документа «Перенос данных»

В самых сложных случаях, когда техническая ведомость по каким-то причинам не проводится или не дает нужного результата, можно внести исправления напрямую в регистры с помощью специального сервисного документа ПереносДанных. Этот инструмент доступен в разделе Администрирование — Переносы данных.

Рассмотрим порядок работы с этим документом:

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

Способ 5. Очистка регистра сведений «Пересчет зарплаты»

Бывает так, что бухгалтер успешно исправил регистры накопления и выровнял аналитику, но при создании нового документа «Начисление зарплаты и взносов» система упорно продолжает пытаться автоматически сторнировать прошлые периоды и снова возвращает злополучные «плюсы и минусы».

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

  1. Через главное меню перейдите в Функции для технического специалиста (ранее этот режим назывался «Все функции»).
  2. Найдите регистр сведений Пересчет зарплаты.
  3. Проанализируйте список записей. Если в нем присутствуют зарегистрированные перерасчеты по проблемным сотрудникам за прошлые периоды, и вы точно уверены, что никаких реальных доначислений делать не требуется, просто выделите эти строки и удалите их вручную.

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

Подводя итог, отметим, что появление задолженности по зарплате с плюсом и минусом в 1С:ЗУП 3.1 — это логичное следствие эволюции аналитического учета программы. Своевременный контроль аналитики с помощью Универсального отчета и умение пользоваться техническими ведомостями или корректирующими обработками позволят вам держать базу данных в идеальном порядке, а отчетность по НДФЛ сдавать легко и без ошибок.

← На главную