При переходе на расчетный период 2018 года пользователи типовой конфигурации «Зарплата и Кадры 7.7» (релиз 7.70.366) столкнулись с проблемой: при расчете страховых взносов программа перестает начислять 10% в ПФР с сумм, превышающих предельную величину базы (1 021 000 рублей). При этом за периоды до 2018 года расчет выполнялся корректно.
Разберем причины возникновения этой ошибки в конфигурации, способ ее ручного исправления в программном коде, регламент перерасчета данных, а также сопутствующие проблемы при выгрузке персонифицированной отчетности СЗВ-СТАЖ.
Проанализируем программный код глобального модуля конфигурации. В релизе 7.70.366 ограничение по расчету взносов свыше предельной величины было зафиксировано жестким условием. Изначально законодательство предусматривало действие тарифов 22% (в пределах базы) и 10% (свыше базы) только по 2017 год включительно. Федеральный закон № 361-ФЗ продлил действие тарифов до 2020 года, однако в релиз 366 это изменение своевременно не вошло.
Для восстановления корректного расчета взносов с базы превышения необходимо скорректировать экспортную функцию глРассчитыватьВзносыСБазыПревышения в конфигураторе.
Разберем по шагам порядок внесения изменений:
глРассчитыватьВзносыСБазыПревышения.Посмотрим на пример исходного и исправленного кода функции:
Функция глРассчитыватьВзносыСБазыПревышения(ВидТарифа, ДатаПериода) Экспорт
// Закомментируем устаревшее ограничение 2018 года:
// Если ДатаГод(ДатаПериода)>=2018 Тогда
// Возврат 0;
// КонецЕсли;
// Либо укажем актуальное ограничение в соответствии с 361-ФЗ:
Если ДатаГод(ДатаПериода) > 2020 Тогда
Возврат 0;
КонецЕсли;
ДатаАктуальности = КонГода(ДатаПериода);
// дальнейший типовой код функции...
КонецФункции
После сохранения изменений в конфигураторе необходимо обновить расчетные данные в режиме «Предприятие»:
В этом же релизе при формировании отчетности СЗВ-СТАЖ возникают сопутствующие сложности, требующие внимания.
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();
Данные корректировки позволяют полностью устранить проблемы расчета страховых взносов и корректно сформировать отчетность для Пенсионного фонда без ошибок выгрузки.