Почему в 1С:ЗиК 7.7 не рассчитываются страховые взносы в ПФР с превышения предельной величины базы?

Программист 1С v7.7 Налоговый учет IT и автоматизация бизнеса
← На главную

При переходе на расчетный период 2018 года пользователи типовой конфигурации «Зарплата и Кадры 7.7» (релиз 7.70.366) столкнулись с проблемой: при расчете страховых взносов программа перестает начислять 10% в ПФР с сумм, превышающих предельную величину базы (1 021 000 рублей). При этом за периоды до 2018 года расчет выполнялся корректно.

Разберем причины возникновения этой ошибки в конфигурации, способ ее ручного исправления в программном коде, регламент перерасчета данных, а также сопутствующие проблемы при выгрузке персонифицированной отчетности СЗВ-СТАЖ.

Причина ошибки расчета взносов

Проанализируем программный код глобального модуля конфигурации. В релизе 7.70.366 ограничение по расчету взносов свыше предельной величины было зафиксировано жестким условием. Изначально законодательство предусматривало действие тарифов 22% (в пределах базы) и 10% (свыше базы) только по 2017 год включительно. Федеральный закон № 361-ФЗ продлил действие тарифов до 2020 года, однако в релиз 366 это изменение своевременно не вошло.

Исправление функции расчета в глобальном модуле

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

Разберем по шагам порядок внесения изменений:

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

Посмотрим на пример исходного и исправленного кода функции:


Функция глРассчитыватьВзносыСБазыПревышения(ВидТарифа, ДатаПериода) Экспорт 
    // Закомментируем устаревшее ограничение 2018 года:
    // Если ДатаГод(ДатаПериода)>=2018 Тогда
    //     Возврат 0; 
    // КонецЕсли;

    // Либо укажем актуальное ограничение в соответствии с 361-ФЗ:
    Если ДатаГод(ДатаПериода) > 2020 Тогда
        Возврат 0;
    КонецЕсли;

    ДатаАктуальности = КонГода(ДатаПериода);
    // дальнейший типовой код функции...
КонецФункции

Порядок действий после изменения программного кода

После сохранения изменений в конфигураторе необходимо обновить расчетные данные в режиме «Предприятие»:

  1. Проверим периодические реквизиты и константы: убедимся, что на 1 января расчетного года установлена корректная предельная величина базы ПФР.
  2. Откроем и заново пересчитаем документы «Расчет страховых взносов» во всех месяцах расчетного года, начиная с периода, когда у сотрудников образовалось превышение предельной величины.
  3. При необходимости выполним полный перерасчет записей в журнале расчетов страховых взносов.
  4. Сформируем отчет «Карточка учета по страховым взносам» и проверим правильность исчисления тарифа 10% с базы превышения.

Исправление сопутствующих ошибок отчета СЗВ-СТАЖ в релизе 366

В этом же релизе при формировании отчетности СЗВ-СТАЖ возникают сопутствующие сложности, требующие внимания.

1. Ошибка при количестве сотрудников более 1000 человек

Если в отчет попадает больше 1000 физических лиц, нумерация строк в таблице обрезается до «999» из-за недостаточной разрядности колонки. Для исправления откроем отчет ПодготовкаСведенийДляПФР2017, найдем строку объявления колонки (ориентировочно строка 1936) и увеличим длину поля с 3 до 4 знаков:

СведенияСотрудников.НоваяКолонка("Ном", "Число", 4, 0, "№ п/п", 2);

2. Аварийное завершение программы при сохранении файла в UTF-8

При выгрузке файла с большим объемом данных 1С:Предприятие 7.7 может завершаться аварийно («схлопываться») на этапе конвертации через COM-объект ADODB.Stream. Причина заключается в попытке считать и перезаписать весь большой XML-текст за один раз одной строковой переменной.

Рассмотрим надежный вариант потоковой перезаписи файла блоками:


АдоДБСтрим = CreateObject("Adodb.Stream");    
АдоДБСтрим.Charset = "windows-1251";
АдоДБСтрим.Type = 2;
АдоДБСтрим.Mode = 3;
АдоДБСтрим.Open();
АдоДБСтрим.LoadFromFile(ПолноеИмяФайла); 

Байт = 255;
СтримВход = АдоДБСтрим;
СтримВыход = СоздатьОбъект("ADODB.Stream");
СтримВыход.Type = 2;
СтримВыход.Charset = "utf-8";
СтримВыход.LineSeparator = -1;
СтримВыход.Open();
Всего = СтримВход.Size;

Пока СтримВход.EOS = 0 Цикл
    СтримВыход.WriteText(СтримВход.ReadText(Байт), ?(Байт = -2, 1, 0));
    Состояние("" + Формат(100 * СтримВход.Position / Всего, "Ч(0)5.2") + "%");
КонецЦикла;

СтримВыход.SaveToFile(ПолноеИмяФайла, 2);
СтримВход.Close();
СтримВыход.Close();

Данные корректировки позволяют полностью устранить проблемы расчета страховых взносов и корректно сформировать отчетность для Пенсионного фонда без ошибок выгрузки.

← На главную