Как исправить ошибки расчета НДФЛ и округления в 1С:УПП 1.3.154.1

Программист Налоговый учет Промышленность, строительство и АПК
← На главную

При переходе на релиз 1.3.154.1 конфигурации "Управление производственным предприятием" пользователи столкнулись с рядом критических ошибок, связанных с внедрением прогрессивной ставки НДФЛ 15%. Эти ошибки блокируют расчет зарплаты, некорректно отражают суммы во взаиморасчетах и препятствуют печати кадровых документов. В данной статье мы подробно разберем причины возникновения этих проблем и способы их устранения до обновления на исправленный релиз.

Ошибка 1: Преобразование значения к типу Число в модуле ПроведениеРасчетов

Первая проблема проявляется при попытке расчета сотрудника, чей доход превышает порог в 5 миллионов рублей. Система выдает сообщение об ошибке: {ОбщийМодуль.ПроведениеРасчетов.Модуль(7779)}: Преобразование значения к типу Число не может быть выполнено. Проанализируем ситуацию и выясним причину.

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

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

Корректный код должен выглядеть следующим образом:


// Было:
НалогИсчисленныйСПревышения = НалогИсчисленныйСПревышения + НалогСДоходаСПревышения;

// Стало (правильный вариант):
НалогСПревышенияИсчисленный = НалогСПревышенияИсчисленный + НалогСДоходаСПревышения;

После замены переменной ошибка преобразования типа исчезнет, так как система начнет обращаться к уже объявленному числовому значению.

Ошибка 2: Округление НДФЛ до рублей во взаиморасчетах

Многие бухгалтеры заметили, что после обновления в документе "Начисление зарплаты" суммы НДФЛ во взаиморасчетах стали попадать без копеек (округленными до целого рубля), хотя в самом расчете копейки присутствуют. Это приводит к расхождениям в выплатах и сальдо по сотрудникам.

Причина кроется в процедуре СформироватьВзаиморасчетыСРаботниками. В одном из запросов, использующих объединение (ОБЪЕДИНИТЬ ВСЕ), платформа 1С неявно приводит типы суммируемых полей к целому числу, если не указано явное приведение типов. Разберем, как это исправить программно.

Нам необходимо найти запрос в модуле документа и добавить функцию ВЫРАЗИТЬ для полей, где вычисляется налог. Рассмотрим пример изменения части запроса:


ВЫБРАТЬ
    ЗплНДФЛ.ФизЛицо,
    // Добавляем явное приведение к числу с 2 знаками после запятой
    ВЫРАЗИТЬ(
        -ЗплНДФЛ.Налог + ВЫБОР
            КОГДА ЕСТЬNULL(НДФЛКЗачету.СуммаНДФЛКЗачету, 0) > ЗплНДФЛ.Налог
                ТОГДА ЗплНДФЛ.Налог
            ИНАЧЕ ЕСТЬNULL(НДФЛКЗачету.СуммаНДФЛКЗачету, 0)
        КОНЕЦ 
    КАК ЧИСЛО(15, 2)) КАК Налог
ИЗ
    ВТНДФЛ КАК ЗплНДФЛ
    ЛЕВОЕ СОЕДИНЕНИЕ ВТНДФЛКЗачету КАК НДФЛКЗачету
    ПО ЗплНДФЛ.ФизЛицо = НДФЛКЗачету.ФизЛицо

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

Ошибка 3: Ошибка в печатной форме Т-61 (Расчет при увольнении)

При попытке распечатать форму Т-61 из документа "Расчет при увольнении сотрудника организации" в релизе 1.3.154.1 возникает синтаксическая ошибка запроса: Ожидается выражение ")". Это происходит из-за пропущенной закрывающей скобки в тексте запроса внутри программного модуля.

Рассмотрим порядок исправления:

  1. Откроем общий модуль РасчетПриУвольненииРаботникаОрганизацийДополнительный.
  2. Перейдем к строке 607.
  3. Проанализируем текст запроса, формирующего поле СуммаНалога.

Пример исправления в коде:


// В тексте запроса в районе строки 607 найдите фрагмент:
// КОНЕЦ * (НДФЛРасчетыСБюджетом.Налог + НДФЛРасчетыСБюджетом.НалогСПревышения) КАК СуммаНалога

// В некоторых местах может не хватать скобки при умножении или в операторе ВЫБОР.
// Убедитесь, что все открытые скобки закрыты перед использованием псевдонима поля КАК.

Обычно ошибка заключается в том, что в выражении ВЫБОР...КОНЕЦ расчетная формула не была полностью обернута в скобки перед присвоением псевдонима. Исправление данной синтаксической ошибки позволит бухгалтерии беспрепятственно печатать записки-расчеты.

Ошибка 4: Период регистрации в расчете НДФЛ

Еще один нюанс, выявленный в ходе эксплуатации релиза, связан с установкой параметра ПериодРегистрации в запросах расчета НДФЛ. В типовом решении параметр устанавливался на КонецМесяца, что в определенных сценариях приводило к некорректному захвату данных из регистров накопления.

Проанализируем строку 12589 модуля документа "Начисление зарплаты". Опытным путем программисты установили, что использование начала месяца более стабильно для получения остатков по НДФЛ к зачету:


// Рекомендуемое исправление:
Запрос.УстановитьПараметр("ПериодРегистрации", НачалоМесяца(ПериодРегистрации));
// Вместо:
// Запрос.УстановитьПараметр("ПериодРегистрации", КонецМесяца(ПериодРегистрации));

Однако стоит соблюдать осторожность: если в течение одного месяца уже были движения по регистру НДФЛКЗачету, смена параметра может повлиять на итоговый результат. Рекомендуется сначала проверить это на тестовой базе.

Резюме и рекомендации

Релиз 1.3.154.1 оказался богат на ошибки "ручного ввода", связанные с поспешным внедрением законодательных изменений. Если ваша организация еще не обновилась, крайне рекомендуется пропустить этот релиз и сразу переходить на 1.3.154.2, где большинство указанных проблем (включая опечатки и ошибки в Т-61) были официально исправлены фирмой "1С".

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

← На главную