Почему договоры ГПХ и больничные не попадают в расчет страховых взносов в 1С:ЗиК 7.7 и как это исправить?

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

При подготовке расчета по страховым взносам (РСВ) в конфигурации «1С:Зарплата и Кадры 7.7» пользователи нередко сталкиваются с ситуацией, когда начисления по договорам гражданско-правового характера (ГПХ), выплаты уволенным сотрудникам или переходящие больничные листы не включаются в общую и необлагаемую базы. Разберем детально причины такого поведения программы и рассмотрим способы решения как на уровне методологии учета, так и на уровне программного кода типовой обработки.

Причины возникновения ошибок при формировании расчета

Проанализируем основные факторы, приводящие к искажению данных в отчете:

  1. Ошибки алгоритмов типового релиза: в функции отбора действующих расчетов глПолучитьВсеРасчетыДействующиеПоСотруднику и процедуре печати РСВ были некорректно ограничены выборки сотрудников. Лица, не числящиеся в штате на момент формирования отчета (включая уволенных работников с доначислениями и физических лиц по договорам ГПХ), полностью исключались из проверки.
  2. Некорректное распределение сумм по фондам: начисления по договорам ГПХ и авторским договорам не облагаются взносами в ФСС, однако они обязаны входить в состав общих выплат (строка 030 Приложения 2) и отражаться в составе необлагаемых сумм (строка 040). При типовом заполнении эти суммы вычитались из общей базы ФСС, что приводило к расхождению между разделами.
  3. Отрицательная база из-за сторнирования оклада: переходящий больничный лист за прошлый месяц сторнирует оклад в текущем периоде регистрации. Если сумма сторно превышает текущие начисления, база для начисления взносов становится отрицательной. Контрольные соотношения ФНС запрещают отрицательные значения в подразделе 3.2.

Методологическое исправление отрицательной базы по переходящим больничным

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

Если больничный лист зарегистрирован в январе, а сторнирование оклада за декабрь привело к тому, что январская облагаемая база сотрудника ушла в минус, необходимо:

  1. Открыть документ «Корректировка данных по учету страховых взносов».
  2. Перенести отрицательную сумму начислений с января на декабрь предыдущего расчетного периода.
  3. Пересчитать страховые взносы за декабрь (при необходимости подать уточненный расчет за соответствующий квартал).

Программная доработка обработки «РасчетСтраховыхВзносов»

Рассмотрим по шагам программные исправления в модуле формы обработки РасчетСтраховыхВзносов конфигурации 1С:ЗиК 7.7.

Шаг 1. Включение договоров ГПХ и авторских выплат в список физлиц

В модуле формы обработки найдем блок проверки действующих расчетов и обеспечим явное включение договорников в список застрахованных лиц:


Если ИскатьДоговоры = 1 Тогда 
    ТаблицаРасчетов = глПолучитьВсеРасчетыДействующиеПоСотруднику(Сотрудник, Начало, Окончание); 
    ТаблицаРасчетов.ВыбратьСтроки(); 
    Пока ТаблицаРасчетов.ПолучитьСтроку() = 1 Цикл 
        Если (ТаблицаРасчетов.Расчет = ВидРасчета.ОплатаПоДоговору) 
            или (ТаблицаРасчетов.Расчет = ВидРасчета.Авторские) 
            или (ТаблицаРасчетов.Расчет = ВидРасчета.ЛицензионныеВыплаты) Тогда 
            
            ВключатьВСписок = 1; // Устанавливаем признак включения в расчет
            СимволПФР = "1"; 
            СимволФОМС = "1"; 
            Прервать; 
        КонецЕсли; 
    КонецЦикла; 
КонецЕсли;

Шаг 2. Предотвращение ошибок индексации таблиц по ФСС

Так как договоры подряда не облагаются взносами ФСС, таблица ТабРСВ_ФСС для договорников может оставаться пустой, что вызывает системную ошибку «Индекс за пределами значения» при вызове метода УстановитьЗначение. Ограничим выполнение кода проверкой на наличие строк:


// В начале процедуры РассчитатьДанныеПоМесяцам добавляем проверку:
Если РезультирующаяТаблица.КоличествоСтрок() = 0 Тогда 
    Возврат; 
КонецЕсли;

// Блок обработки ТабРСВ_ФСС оборачиваем условием:
Если ТабРСВ_ФСС.КоличествоСтрок() > 0 Тогда
    ТабРСВ_ФСС.Свернуть("Период", "ВсегоНачислено,НеОблагается,СуммаПревысившаяПредел,База,БазаФармацевт,БазаМоряки,БазаИностранцы,БазаПатент,Исчислено,КоличествоЗастрахованных"); 
    РассчитатьДанныеПоМесяцам(ТабРСВ_ФСС); 
    ТабРСВ_ФСС.НоваяКолонка("НомерКолонки", "Число", 1); 
    ТабРСВ_ФСС.УстановитьЗначение(1, "НомерКолонки", 1); 
    ТабРСВ_ФСС.УстановитьЗначение(2, "НомерКолонки", 3); 
    ТабРСВ_ФСС.Сортировать("НомерКолонки");
КонецЕсли;

Шаг 3. Обработка уволенных сотрудников и физлиц с доходами

Чтобы в отчет корректно попадали уволенные сотрудники, по которым в текущем расчетном периоде производились начисления (например, компенсации, материальная помощь или доплаты), скорректируем проверку списков СписокЗЛ_ФСС, СписокЗЛ_ПФР и СписокЗЛ_ОМС.

Перед процедурой Печать2017 добавим вспомогательную функцию для проверки статуса обложения физлица:


Функция ОблагаетсяФизлицо(Сотрудник, ДатаПериода, ВидВзносов) 
    ВидЗастрахованногоЛица = Сотрудник.ВидЗастрахованногоЛица.Получить(ДатаПериода); 
    Если ВидЗастрахованногоЛица = Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцы Тогда 
        Возврат ?(ВидВзносов = "ОМС", 0, 1); 
    ИначеЕсли ВидЗастрахованногоЛица = Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыНестрахуемые Тогда 
        Возврат 0; 
    ИначеЕсли ВидЗастрахованногоЛица = Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыСтрахуемыеФСС Тогда 
        Возврат ?(ВидВзносов = "ФСС", 1, 0); 
    КонецЕсли; 
    Возврат 1; 
КонецФункции

Затем в процедуре печати заменим проверки вхождения в списки:


// Для ФСС:
Если (СписокЗЛ_ФСС.НайтиЗначение(Сотрудник) <> 0) 
    или ((БазаПФР + БазаПФРИнвалид + БазаПФРЕНВД + БазаПФРЛТ > 0) 
    и (ОблагаетсяФизлицо(Сотрудник, ДатаПериода, "ФСС") = 1)) Тогда

// Для ПФР и ОМС:
Если (СписокЗЛ_ПФР.НайтиЗначение(Сотрудник) <> 0) 
    или (СписокЗЛ_ОМС.НайтиЗначение(Сотрудник) <> 0) 
    или ((БазаПФР + БазаПФРИнвалид + БазаПФРЕНВД + БазаПФРЛТ > 0) 
    и ((ОблагаетсяФизлицо(Сотрудник, ДатаПериода, "ПФР") = 1) 
    или (ОблагаетсяФизлицо(Сотрудник, ДатаПериода, "ОМС") = 1))) Тогда

Шаг 4. Корректное заполнение общей и необлагаемой базы по ФСС

Перейдем к процедуре ЗаполнитьДанныеПоФизлицу. Необходимо, чтобы суммы по договорам подряда и авторским выплатам входили в общую сумму выплат по ФСС, но одновременно включались в необлагаемую часть для ФСС (и не искажали необлагаемую базу ПФР и ФОМС):


// Включаем договоры в общие начисления по ФСС
ВсегоНачисленоФСС = ВсегоНачислено; 
ВсегоНачисленоФССИнвалид = ВсегоНачисленоИнвалид; 
ВсегоНачисленоФССЕНВД = ВсегоНачисленоЕНВД; 
ВсегоНачисленоФССЛТ = ВсегоНачисленоЛТ; 

СуммаПревысившаяПределФСС = БазаФСС - ОблагаемаяБазаФСС; 
СуммаПревысившаяПределФССИнвалид = БазаФССИнвалид - ОблагаемаяБазаФССИнвалид; 
СуммаПревысившаяПределФССЕНВД = БазаФССЕНВД - ОблагаемаяБазаФССЕНВД; 
СуммаПревысившаяПределФССЛТ = БазаФССЛТ - ОблагаемаяБазаФССЛТ; 

// Добавляем договоры подряда и авторские в необлагаемые суммы по ФСС
НеОблагаетсяФСС = НеОблагаетсяЦеликом + РасходыЗаСчетФСС + ДенежноеДовольствиеВоеннослужащих + СкидкаМатПомощь + СкидкаМатПомощьПриРожденииРебенка + ДоговорыПодряда + Авторские; 
НеОблагаетсяФССИнвалид = НеОблагаетсяЦеликомИнвалид + РасходыЗаСчетФССИнвалид + ДенежноеДовольствиеВоеннослужащихИнвалид + СкидкаМатПомощьИнвалид + СкидкаМатПомощьПриРожденииРебенкаИнвалид + ДоговорыПодрядаИнвалид + АвторскиеИнвалид; 
НеОблагаетсяФССЕНВД = НеОблагаетсяЦеликомЕНВД + РасходыЗаСчетФССЕНВД + ДенежноеДовольствиеВоеннослужащихЕНВД + СкидкаМатПомощьЕНВД + СкидкаМатПомощьПриРожденииРебенкаЕНВД + ДоговорыПодрядаЕНВД + АвторскиеЕНВД; 
НеОблагаетсяФССЛТ = НеОблагаетсяЦеликомЛТ + РасходыЗаСчетФССЛТ + ДенежноеДовольствиеВоеннослужащихЛТ + СкидкаМатПомощьЛТ + СкидкаМатПомощьПриРожденииРебенкаЛТ + ДоговорыПодрядаЛТ + АвторскиеЛТ; 

// Для общей необлагаемой базы (ПФР и ФОМС) исключаем договоры подряда
НеОблагается = НеОблагаетсяФСС - ДоговорыПодряда - Авторские + СкидкаАвторские; 
НеОблагаетсяИнвалид = НеОблагаетсяФССИнвалид - ДоговорыПодрядаИнвалид - АвторскиеИнвалид + СкидкаАвторскиеИнвалид; 
НеОблагаетсяЕНВД = НеОблагаетсяФССЕНВД - ДоговорыПодрядаЕНВД - АвторскиеЕНВД + СкидкаАвторскиеЕНВД; 
НеОблагаетсяЛТ = НеОблагаетсяФССЛТ - ДоговорыПодрядаЛТ - АвторскиеЛТ + СкидкаАвторскиеЛТ;

Проверка результатов выгрузки

После внесения правок и формирования отчета выполним контрольные действия:

  1. Проверим, что общая сумма выплат (строка 030) совпадает между Приложением 1 (ПФР, ОМС) и Приложением 2 (ФСС).
  2. Убедимся, что суммы договоров ГПХ попали в строку 040 (не подлежащие обложению) Приложения 2 к Разделу 1.
  3. Выгрузим файл отчета и проверим его через официальные программы форматно-логического контроля ФНС (например, Tester) или встроенные модули проверки операторов электронной отчетности.
← На главную