При подготовке расчета по страховым взносам (РСВ) в конфигурации «1С:Зарплата и Кадры 7.7» пользователи нередко сталкиваются с ситуацией, когда начисления по договорам гражданско-правового характера (ГПХ), выплаты уволенным сотрудникам или переходящие больничные листы не включаются в общую и необлагаемую базы. Разберем детально причины такого поведения программы и рассмотрим способы решения как на уровне методологии учета, так и на уровне программного кода типовой обработки.
Проанализируем основные факторы, приводящие к искажению данных в отчете:
глПолучитьВсеРасчетыДействующиеПоСотруднику и процедуре печати РСВ были некорректно ограничены выборки сотрудников. Лица, не числящиеся в штате на момент формирования отчета (включая уволенных работников с доначислениями и физических лиц по договорам ГПХ), полностью исключались из проверки.По правилам учета страховых взносов все начисления регистрируются в том месяце, в котором они были фактически проведены. Однако база для исчисления взносов и суммы самих взносов по конкретному застрахованному лицу не могут принимать отрицательные значения.
Если больничный лист зарегистрирован в январе, а сторнирование оклада за декабрь привело к тому, что январская облагаемая база сотрудника ушла в минус, необходимо:
Рассмотрим по шагам программные исправления в модуле формы обработки РасчетСтраховыхВзносов конфигурации 1С:ЗиК 7.7.
В модуле формы обработки найдем блок проверки действующих расчетов и обеспечим явное включение договорников в список застрахованных лиц:
Если ИскатьДоговоры = 1 Тогда
ТаблицаРасчетов = глПолучитьВсеРасчетыДействующиеПоСотруднику(Сотрудник, Начало, Окончание);
ТаблицаРасчетов.ВыбратьСтроки();
Пока ТаблицаРасчетов.ПолучитьСтроку() = 1 Цикл
Если (ТаблицаРасчетов.Расчет = ВидРасчета.ОплатаПоДоговору)
или (ТаблицаРасчетов.Расчет = ВидРасчета.Авторские)
или (ТаблицаРасчетов.Расчет = ВидРасчета.ЛицензионныеВыплаты) Тогда
ВключатьВСписок = 1; // Устанавливаем признак включения в расчет
СимволПФР = "1";
СимволФОМС = "1";
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Так как договоры подряда не облагаются взносами ФСС, таблица ТабРСВ_ФСС для договорников может оставаться пустой, что вызывает системную ошибку «Индекс за пределами значения» при вызове метода УстановитьЗначение. Ограничим выполнение кода проверкой на наличие строк:
// В начале процедуры РассчитатьДанныеПоМесяцам добавляем проверку:
Если РезультирующаяТаблица.КоличествоСтрок() = 0 Тогда
Возврат;
КонецЕсли;
// Блок обработки ТабРСВ_ФСС оборачиваем условием:
Если ТабРСВ_ФСС.КоличествоСтрок() > 0 Тогда
ТабРСВ_ФСС.Свернуть("Период", "ВсегоНачислено,НеОблагается,СуммаПревысившаяПредел,База,БазаФармацевт,БазаМоряки,БазаИностранцы,БазаПатент,Исчислено,КоличествоЗастрахованных");
РассчитатьДанныеПоМесяцам(ТабРСВ_ФСС);
ТабРСВ_ФСС.НоваяКолонка("НомерКолонки", "Число", 1);
ТабРСВ_ФСС.УстановитьЗначение(1, "НомерКолонки", 1);
ТабРСВ_ФСС.УстановитьЗначение(2, "НомерКолонки", 3);
ТабРСВ_ФСС.Сортировать("НомерКолонки");
КонецЕсли;
Чтобы в отчет корректно попадали уволенные сотрудники, по которым в текущем расчетном периоде производились начисления (например, компенсации, материальная помощь или доплаты), скорректируем проверку списков СписокЗЛ_ФСС, СписокЗЛ_ПФР и СписокЗЛ_ОМС.
Перед процедурой Печать2017 добавим вспомогательную функцию для проверки статуса обложения физлица:
Функция ОблагаетсяФизлицо(Сотрудник, ДатаПериода, ВидВзносов)
ВидЗастрахованногоЛица = Сотрудник.ВидЗастрахованногоЛица.Получить(ДатаПериода);
Если ВидЗастрахованногоЛица = Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцы Тогда
Возврат ?(ВидВзносов = "ОМС", 0, 1);
ИначеЕсли ВидЗастрахованногоЛица = Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыНестрахуемые Тогда
Возврат 0;
ИначеЕсли ВидЗастрахованногоЛица = Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыСтрахуемыеФСС Тогда
Возврат ?(ВидВзносов = "ФСС", 1, 0);
КонецЕсли;
Возврат 1;
КонецФункции
Затем в процедуре печати заменим проверки вхождения в списки:
// Для ФСС:
Если (СписокЗЛ_ФСС.НайтиЗначение(Сотрудник) <> 0)
или ((БазаПФР + БазаПФРИнвалид + БазаПФРЕНВД + БазаПФРЛТ > 0)
и (ОблагаетсяФизлицо(Сотрудник, ДатаПериода, "ФСС") = 1)) Тогда
// Для ПФР и ОМС:
Если (СписокЗЛ_ПФР.НайтиЗначение(Сотрудник) <> 0)
или (СписокЗЛ_ОМС.НайтиЗначение(Сотрудник) <> 0)
или ((БазаПФР + БазаПФРИнвалид + БазаПФРЕНВД + БазаПФРЛТ > 0)
и ((ОблагаетсяФизлицо(Сотрудник, ДатаПериода, "ПФР") = 1)
или (ОблагаетсяФизлицо(Сотрудник, ДатаПериода, "ОМС") = 1))) Тогда
Перейдем к процедуре ЗаполнитьДанныеПоФизлицу. Необходимо, чтобы суммы по договорам подряда и авторским выплатам входили в общую сумму выплат по ФСС, но одновременно включались в необлагаемую часть для ФСС (и не искажали необлагаемую базу ПФР и ФОМС):
// Включаем договоры в общие начисления по ФСС
ВсегоНачисленоФСС = ВсегоНачислено;
ВсегоНачисленоФССИнвалид = ВсегоНачисленоИнвалид;
ВсегоНачисленоФССЕНВД = ВсегоНачисленоЕНВД;
ВсегоНачисленоФССЛТ = ВсегоНачисленоЛТ;
СуммаПревысившаяПределФСС = БазаФСС - ОблагаемаяБазаФСС;
СуммаПревысившаяПределФССИнвалид = БазаФССИнвалид - ОблагаемаяБазаФССИнвалид;
СуммаПревысившаяПределФССЕНВД = БазаФССЕНВД - ОблагаемаяБазаФССЕНВД;
СуммаПревысившаяПределФССЛТ = БазаФССЛТ - ОблагаемаяБазаФССЛТ;
// Добавляем договоры подряда и авторские в необлагаемые суммы по ФСС
НеОблагаетсяФСС = НеОблагаетсяЦеликом + РасходыЗаСчетФСС + ДенежноеДовольствиеВоеннослужащих + СкидкаМатПомощь + СкидкаМатПомощьПриРожденииРебенка + ДоговорыПодряда + Авторские;
НеОблагаетсяФССИнвалид = НеОблагаетсяЦеликомИнвалид + РасходыЗаСчетФССИнвалид + ДенежноеДовольствиеВоеннослужащихИнвалид + СкидкаМатПомощьИнвалид + СкидкаМатПомощьПриРожденииРебенкаИнвалид + ДоговорыПодрядаИнвалид + АвторскиеИнвалид;
НеОблагаетсяФССЕНВД = НеОблагаетсяЦеликомЕНВД + РасходыЗаСчетФССЕНВД + ДенежноеДовольствиеВоеннослужащихЕНВД + СкидкаМатПомощьЕНВД + СкидкаМатПомощьПриРожденииРебенкаЕНВД + ДоговорыПодрядаЕНВД + АвторскиеЕНВД;
НеОблагаетсяФССЛТ = НеОблагаетсяЦеликомЛТ + РасходыЗаСчетФССЛТ + ДенежноеДовольствиеВоеннослужащихЛТ + СкидкаМатПомощьЛТ + СкидкаМатПомощьПриРожденииРебенкаЛТ + ДоговорыПодрядаЛТ + АвторскиеЛТ;
// Для общей необлагаемой базы (ПФР и ФОМС) исключаем договоры подряда
НеОблагается = НеОблагаетсяФСС - ДоговорыПодряда - Авторские + СкидкаАвторские;
НеОблагаетсяИнвалид = НеОблагаетсяФССИнвалид - ДоговорыПодрядаИнвалид - АвторскиеИнвалид + СкидкаАвторскиеИнвалид;
НеОблагаетсяЕНВД = НеОблагаетсяФССЕНВД - ДоговорыПодрядаЕНВД - АвторскиеЕНВД + СкидкаАвторскиеЕНВД;
НеОблагаетсяЛТ = НеОблагаетсяФССЛТ - ДоговорыПодрядаЛТ - АвторскиеЛТ + СкидкаАвторскиеЛТ;
После внесения правок и формирования отчета выполним контрольные действия: