Как запросом получить суммы НДФЛ из регистра Начисления удержания по сотрудникам

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Налоговый учет IT и автоматизация бизнеса
← На главную

В конфигурациях на платформе 1С:Предприятие 8.3, таких как Зарплата и управление персоналом 3.1, ERP Управление предприятием 2 или Комплексная автоматизация 2, учет взаиморасчетов с сотрудниками ведется в специализированных регистрах. Одним из ключевых является регистр накопления РегистрНакопления.НачисленияУдержанияПоСотрудникам. Часто перед разработчиком встает задача: как из всего многообразия записей (зарплата, премии, отпуска, удержания) выделить именно суммы подоходного налога (НДФЛ). Рассмотрим этот процесс подробно, проанализируем структуру данных и разберем наиболее корректные способы написания запроса.

Анализ структуры регистра

Для начала разберем, как именно НДФЛ попадает в этот регистр. В отличие от справочников «Начисления» или «Удержания», которые создаются пользователями, НДФЛ является предопределенной системной сущностью. В регистре НачисленияУдержанияПоСотрудникам за тип операции отвечает измерение НачислениеУдержание. Это поле имеет составной тип, который может включать:

Именно в перечислении ВидыОсобыхНачисленийИУдержаний хранятся системные идентификаторы для НДФЛ.

Способ 1: Фильтрация по конкретным видам НДФЛ

Проанализируем самый простой и очевидный способ — использование фильтра по конкретным значениям перечисления в секции ГДЕ. Рассмотрим пример кода запроса, который собирает суммы основного НДФЛ и налога с превышения (так называемый «налог для богатых» со ставки 15%):


ВЫБРАТЬ
    НачисленияУдержания.Сотрудник КАК Сотрудник,
    НачисленияУдержания.Период КАК Период,
    НачисленияУдержания.Сумма КАК СуммаНДФЛ
ИЗ
    РегистрНакопления.НачисленияУдержанияПоСотрудникам КАК НачисленияУдержания
ГДЕ
    НачисленияУдержания.НачислениеУдержание В (
        ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.НДФЛ),
        ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.НДФЛСПревышения)
    )

Этот вариант является рабочим, однако он требует ручного расширения списка, если в вашей базе появляются другие виды налога (например, налог с дивидендов или доначисления по проверкам). Выясним, как сделать запрос более универсальным.

Способ 2: Использование группы начислений и удержаний (рекомендуемый)

В современных версиях конфигураций 1С (ЗУП 3.1.x) в регистре присутствует поле (измерение или реквизит, в зависимости от релиза) ГруппаНачисленияУдержанияВыплаты. Это поле позволяет классифицировать записи по их экономическому смыслу. Для всех записей, связанных с подоходным налогом, система устанавливает значение УдержаноНДФЛ из перечисления ГруппыНачисленияУдержанияВыплаты.

Посмотрим на пример более надежного запроса:


ВЫБРАТЬ
    НачисленияУдержания.ФизическоеЛицо КАК ФизическоеЛицо,
    СУММА(НачисленияУдержания.Сумма) КАК Сумма
ИЗ
    РегистрНакопления.НачисленияУдержанияПоСотрудникам КАК НачисленияУдержания
ГДЕ
    НачисленияУдержания.ГруппаНачисленияУдержанияВыплаты = ЗНАЧЕНИЕ(Перечисление.ГруппыНачисленияУдержанияВыплаты.УдержаноНДФЛ)
СГРУППИРОВАТЬ ПО
    НачисленияУдержания.ФизическоеЛицо

Преимущества этого подхода: нам не нужно перечислять все виды НДФЛ (дивиденды, превышение, обычный, прочие доходы). Система сама пометит их нужной группой при проведении документов начисления зарплаты. Для детального анализа и проверки сумм налога в расчетных документах можно использовать отчет для тестирования и расшифровки НДФЛ.

Важные нюансы учета НДФЛ в данном регистре

Проанализируем ситуацию с данными более глубоко. Нужно четко понимать разницу между исчисленным и удержанным налогом:

  1. Регистр «Начисления удержания по сотрудникам» отражает налог в момент его исчисления (когда мы нажали кнопку «Рассчитать» в документе «Начисление зарплаты и взносов»). Эти суммы попадают в расчетный листок и влияют на сальдо взаиморасчетов с сотрудником.
  2. Если ваша цель — подготовить данные для регламентированной отчетности (6-НДФЛ), то данных из этого регистра может быть недостаточно. Для целей налогового учета по главе 23 НК РФ необходимо использовать специализированные регистры, такие как РасчетыНалогоплательщиковСБюджетомПоНДФЛ.

Разберем также вопрос знаков сумм. В регистре НачисленияУдержанияПоСотрудникам суммы НДФЛ обычно записываются с положительным знаком, так как они уменьшают сумму к выплате. Однако в случае возвратов налога или сторнирования начислений могут появляться отрицательные записи. При суммировании в запросе СУММА(Сумма) эти знаки будут учтены корректно, что даст итоговое влияние на взаиморасчеты. Для автоматической свертки отрицательного дохода и сопоставления исчисленного налога с удержанным можно использовать инструмент для проверки и корректировки 6-НДФЛ.

Расширенный список видов НДФЛ

Если вы все же решили использовать первый способ с перечислением конкретных типов, убедитесь, что вы учли все возможные варианты в современных конфигурациях. Проанализируем список значений Перечисление.ВидыОсобыхНачисленийИУдержаний, которые относятся к НДФЛ:

Именно поэтому использование фильтра по ГруппаНачисленияУдержанияВыплаты, рассмотренного выше, является более «кошерным» и защищенным от ошибок при обновлении программы или изменении законодательства.

Работа с типами данных в запросе

Поскольку поле НачислениеУдержание имеет составной тип, при сравнении со ссылочными типами (справочниками) в более сложных задачах рекомендуется использовать оператор ССЫЛКА. Однако в случае с перечислениями конструкция ЗНАЧЕНИЕ(...) работает эффективно и позволяет однозначно типизировать фильтр. Выясним это на примере:


ВЫБРАТЬ
    НачисленияУдержания.Сотрудник,
    НачисленияУдержания.Сумма
ИЗ
    РегистрНакопления.НачисленияУдержанияПоСотрудникам КАК НачисленияУдержания
ГДЕ
    НачисленияУдержания.НачислениеУдержание ССЫЛКА Перечисление.ВидыОсобыхНачисленийИУдержаний
    И НачисленияУдержания.НачислениеУдержание В (ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.НДФЛ))

Такой подход гарантирует, что запрос не будет пытаться сравнивать значения разных типов впустую, хотя для современных СУБД это не является критичным ограничением производительности при работе с небольшими объемами данных.

← На главную