Ситуация, с которой пришлось столкнуться, такова. Организация применяет пониженный тариф, как субъект малого предпринимательства. В конце апреля, перед окончательным расчетом зарплаты, нескольким сотрудникам начислены и выплачены отпускные за предстоящие в мае отпуска. После окончательного расчета зарплаты за апрель, у всех этих сотрудников средний заработок изменился в меньшую сторону. Облагаемая взносами база у всех выше МРОТ. Для корректировки, в 1С вводятся исправляющие документы Отпуск, в которых начисления перерассчитываются в меньшую сторону. В поле Месяц указывается май. После проведения исправляющих документов, по некоторым из этих сотрудников в отчете "Проверка расчета взносов", в разделе ОПС, суммы взносов в колонках "Взносы до превыш." и "Взносы до превыш. расчетный" светятся красным. База расчета взносов ни у кого не включает исправления отпусков и содержит суммы первичных начислений отпускных. Суммарно база указана верно, однако между основным и пониженным тарифом она распределена не корректно. Соответственно, и рассчитанные взносы различаются. Перепроведения и перерасчеты документов ситуацию исправить не помогают.
Было выявлено, что разница между сотрудниками с ошибкой и такими же сотрудниками без ошибки в том, есть ли по ним в мае начисление достаточной суммы, чтобы перекрыть минусовой доход, полученный в результате исправления отпуска. Проверка происходит при проведении исправления отпуска. Если на момент проведения общая начисленная по сотруднику в мае сумма плюсовая, то в регистре накопления СведенияОДоходахСтраховыеВзносы в поле ДатаПолученияДохода указывается майская дата и ошибок в отчете у него нет, а если сумма минусовая, то в этом поле указывается конец апреля, и в отчете есть ошибки. Такая простановка даты получения дохода в регистре соотвествует законам, и необходима для корректного расчета и подачи сведений по взносам на случай, если сотрудник уволится, не получив больше дохода в мае, чтобы база начисления взносов в каждом месяце была положительной. Поэтому, как вариант, можно просто что-нибудь заранее начислить этим сотрудникам в мае, а затем уже исправить отпуск. Однако так делать не рекомендуется, т.к. сотрудник может уволиться в любой момент, так и не выработав достаточную сумму к начислению. Поэтому возвращаемся к отчету, который отрабатывает этот вариант не корректно.
Когда мы выбираем в отчете "Проверка расчета взносов" (имя в конфигураторе "АнализВзносовВФонды") период апрель, отчет запрашивает из расчетных модулей сведения об облагаемых начислениях за период с начала года по конец апреля с суммами, распределенными в разрезе тарифов ОПС. Расчетные модули по страховым взносам (в общих модулях) учитывают поле ДатаПолученияДохода и возвращают в модуль отчета временную таблицу ВТРасширенныеСведенияОДоходахИВзносах, в которой помимо апрельских начислений уместно добавлены таким же образом распределенные минусовые строки по исправлению отпуска с периодом регистрации 01.05, но периодом - 01.04. Однако в запросах модуля отчета из этой временной таблицы строки отбираются по периоду регистрации с начала года по апрель включительно и корректирующие майские строки отсекаются. При этом, в таблице ВТРасширенныеСведенияОДоходахИВзносах, распределение сумм начисления между основным и пониженным тарифом происходит с учетом корректировки отпуска. Из-за того, что общая база для расчета уменьшается, а база по основному тарифу остается неизменной и равной МРОТ, коэффициент соотношения изменяется. И отчет теперь делит сумму старой (без учета корректировки) базы, используя новый (с учетом корректировки) коэффициент. Поэтому в отчете суммарно правильная база и суммарно правильный налог получаются некорректно распределенными между основным и пониженным тарифами ОПС.
В качестве быстрого решения я выбрал корректировку условия запроса по созданию временной таблицы ВТДанныеДляОтчета в Модуле объекта "АнализВзносовВФонды" в процедуре "СформироватьМакет". В участке запроса параметр &КонецПериода заменен на &ТД:
...
|ПОМЕСТИТЬ ВТДанныеДляОтчета
|ИЗ
| ВТРасширенныеСведенияОДоходахИВзносах КАК СведенияОДоходах
| ЛЕВОЕ СОЕДИНЕНИЕ ВТОписаниеТарифов КАК ОписаниеТарифов
| ПО СведенияОДоходах.ВидТарифаСтраховыхВзносов = ОписаниеТарифов.ВидТарифа
| И (ОписаниеТарифов.РасчетныйПериод = ГОД(СведенияОДоходах.Период))
| ЛЕВОЕ СОЕДИНЕНИЕ ВТДополнительныеСвойстваНачислений КАК СвойстваНачисленийДляУчетаСтраховыхВзносов
| ПО (ВЫБОР
| КОГДА СведенияОДоходах.Начисление ЕСТЬ NULL
| ТОГДА СведенияОДоходах.ВидДохода
| КОГДА СведенияОДоходах.Начисление = НЕОПРЕДЕЛЕНО
| ТОГДА СведенияОДоходах.ВидДохода
| ИНАЧЕ СведенияОДоходах.Начисление
| КОНЕЦ = СвойстваНачисленийДляУчетаСтраховыхВзносов.Начисление)
|ГДЕ
| СведенияОДоходах.ПериодРегистрации МЕЖДУ &НачалоПериода И &ТД // СпецДоработки - в конфигурации поставщика было &КонецПериода
|
...
Перед ближайшей строкой, инициирующей выполнение указанного запроса:
Запрос.Выполнить();
добавить указание нового параметра запроса, расширяющего период с апреля до мая, например:
Запрос.УстановитьПараметр("ТД", НачалоДня(ТекущаяДата()));
Учитывая, что пересчет по факту происходит уже в следующем месяце, и ПериодРегистрации сведений о доходах во временной таблице принимает значение начала месяца, то подойдет и текущая дата.