В релизе конфигурации «Управление производственным предприятием» (УПП) редакции 1.3.154.3 пользователи столкнулись с критической проблемой: при формировании расчетных листков и ведомостей на выплату зарплаты суммы к выплате отображаются без копеек, округляясь до целых рублей. Это приводит к расхождениям в учете, невозможности корректно закрыть взаиморасчеты с сотрудниками и ошибкам в отчетности.
В рамках данной статьи мы подробно разберем причины возникновения этой ошибки, проанализируем программный код, вызвавший сбой, и рассмотрим пошаговое руководство по исправлению ситуации как программным методом, так и путем обновления системы.
Проанализируем ситуацию с технической точки зрения. Проблема локализована в документе НачислениеЗарплатыРаботникамОрганизаций. При проведении этого документа система формирует движения по регистрам накопления ВзаиморасчетыСРаботникамиОрганизаций и ЗарплатаЗаМесяцОрганизаций. Именно данные из этих регистров попадают в расчетные листки и автоматически заполняются в документ ЗарплатаКВыплатеОрганизаций.
Основная причина кроется в процедуре СформироватьВзаиморасчетыСРаботниками модуля объекта документа. В этой процедуре динамически формируется сложный запрос, который соединяет таблицы начислений и удержаний с данными по НДФЛ. Поскольку НДФЛ в Российской Федерации рассчитывается и удерживается в целых рублях, тип данных этого поля в запросе часто интерпретируется системой как целое число. При вычитании целого числа (НДФЛ) из числа с плавающей точкой (Начисления с копейками) без явного указания точности результата, платформа 1С в данном конкретном релизе стала ошибочно приводить итог к целому числу, «отрезая» копейки.
Если у вас нет возможности немедленно обновиться на исправленный релиз (1.3.154.4 и выше), необходимо внести изменения в код документа НачислениеЗарплатыРаботникамОрганизаций. Разберем по шагам, где именно требуются правки.
Откроем модуль объекта указанного документа и найдем процедуру СформироватьВзаиморасчетыСРаботниками(). Нам необходимо найти фрагменты текста запроса, где вычисляется разница между начислениями и налогом. Проблема заключается в том, что в местах левого соединения таблиц результат операции вычитания теряет разрядность.
Рассмотрим пример кода, который необходимо отредактировать. Вам нужно найти строки, где формируется поле Налог или итоговые суммы взаиморасчетов. Вместо стандартного суммирования полей НДФЛ необходимо использовать оператор ВЫРАЗИТЬ.
Пример ошибочного фрагмента кода (ориентировочно строки 11960–12500 в зависимости от доработок вашей базы):
// Было в релизе 154.3:
| СУММА(НДФЛ.Налог - НДФЛ.ЗачтеноАвансовыхПлатежей + НДФЛ.НалогСПревышения - НДФЛ.ЗачтеноАвансовыхПлатежейСПревышения) КАК Налог
Этот фрагмент необходимо заменить на следующий вариант с явным указанием точности до двух знаков после запятой:
// Необходимо исправить на:
| СУММА(ВЫРАЗИТЬ(НДФЛ.Налог - НДФЛ.ЗачтеноАвансовыхПлатежей + НДФЛ.НалогСПревышения - НДФЛ.ЗачтеноАвансовыхПлатежейСПревышения КАК ЧИСЛО(15, 2))) КАК Налог
Важно: Проанализируйте весь текст формирования запроса в этой процедуре. Данная конструкция может встречаться в 3–5 местах, включая секцию ИМЕЮЩИЕ. Например:
|ИМЕЮЩИЕ
| СУММА(ВЫРАЗИТЬ(НДФЛ.Налог - НДФЛ.ЗачтеноАвансовыхПлатежей + НДФЛ.НалогСПревышения - НДФЛ.ЗачтеноАвансовыхПлатежейСПревышения КАК ЧИСЛО(15, 2))) > 0
После внесения правок в код или обновления конфигурации до версии 1.3.154.4, многие пользователи замечают, что копейки в расчетных листках все равно не появились. Разберем ситуацию подробнее.
Документ НачислениеЗарплатыРаботникамОрганизаций записывает данные в регистры в момент проведения. Если документ уже был рассчитан и проведен в «дефектном» релизе, то в его табличных частях (на скрытых или служебных уровнях) или в самих движениях уже зафиксированы суммы без копеек.
Для исправления ситуации выполним следующие действия:
Взаиморасчеты с работниками организаций через кнопку «Перейти». Суммы в колонке Сумма теперь должны содержать копейки.Рассмотрим, как эта ошибка влияет на выплату. Документ ЗарплатаКВыплатеОрганизаций при заполнении по методу «По задолженности» обращается к остаткам по регистру ВзаиморасчетыСРаботникамиОрганизаций.
Если начисление было проведено без копеек, то и ведомость заполнится круглыми суммами. Хуже того, если вы вручную поправите ведомость, добавив копейки, а начисление останется «целым», то в системе возникнет «хвост» — копеечное сальдо, которое будет кочевать из месяца в месяц.
Рекомендация: Всегда добивайтесь того, чтобы сумма «К выплате» в Начислении зарплаты (которую можно увидеть в расчетном листке как разницу между всеми начислениями и всеми удержаниями) строго совпадала с суммой в документе Зарплата к выплате.
Посмотрим на официальное решение от разработчиков 1С. В версии 1.3.154.4 данная ошибка была признана официально. Разработчики внесли аналогичные правки в модуль объекта документа, добавив ВЫРАЗИТЬ в динамические запросы.
Если вы планируете обновление, обязательно сделайте резервную копию базы данных. После обновления необходимо выполнить групповое перепроведение документов за месяц, в котором возникла проблема (обычно это период, соответствующий дате выхода 154.3 релиза).
Проанализируем последствия для бухгалтерского учета. Поскольку копейки терялись в регистрах накопления, это могло привести к расхождению между данными регистров и данными бухгалтерского учета (счет 70), если проводки формировались отдельно или корректировались вручную. Обязательно воспользуйтесь отчетом «Оборотно-сальдовая ведомость по счету 70» и сравните ее данные с отчетом «Свод начислений и удержаний» после всех исправлений.
Подведем итоги нашего разбора:
ЧИСЛО(15, 2) при вычислении сумм взаиморасчетов в коде модуля.Своевременное исправление этой ошибки позволит вам избежать конфликтов с сотрудниками из-за «пропавших» копеек и обеспечит чистоту ведения учета в вашей организации.