В конфигурации 1С:Зарплата и управление персоналом 3.1 задача получения отчетности по налогам (НДФЛ) и взносам (ПФР, ФОМС, ФСС) в разрезе структурных подразделений часто вызывает затруднения. Это связано с тем, что учет налогов и взносов в системе ориентирован прежде всего на налоговую отчетность (по ИФНС и регистрациям), а не на управленческую структуру организации. Однако, потребность в таких данных для целей бюджетирования или сверки с бухгалтерским учетом возникает регулярно.
В рамках этой статьи мы разберем технические особенности хранения этих данных, проанализируем, почему прямое соединение регистров является ошибкой, и рассмотрим наиболее эффективные способы решения задачи.
Для начала проанализируем, где в системе хранятся сведения о начисленных взносах. Автор темы предлагал использовать регистр накопления СтраховыеВзносыПоФизическимЛицам. Рассмотрим структуру этого регистра подробнее. В нем поле Подразделение является реквизитом, а не измерением. Это критически важный момент: при работе с виртуальной таблицей Обороты мы не всегда сможем получить корректную детализацию, если в течение расчетного периода у сотрудника происходили кадровые перемещения.
Более надежным источником данных для программного извлечения взносов считается регистр накопления ИсчисленныеСтраховыеВзносы. В нем аналитика по подразделениям более прозрачна и привязана к моменту расчета документа Начисление зарплаты и взносов. Разберем пример запроса к этому регистру:
ВЫБРАТЬ
ВзносыОбороты.Организация КАК Организация,
ВзносыОбороты.Подразделение КАК Подразделение,
ВзносыОбороты.СуммаОборот КАК ВсегоВзносов,
ВзносыОбороты.ПФРДоПредельнойВеличиныОборот КАК ПФР
ИЗ
РегистрНакопления.ИсчисленныеСтраховыеВзносы.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ВзносыОбороты
Ситуация с НДФЛ сложнее. Основной регистр для учета — РасчетыНалогоплательщиковСБюджетомПоНДФЛ. Важно понимать, что для типовой конфигурации ЗУП 3.1 основным разрезом учета НДФЛ является РегистрацияВНалоговомОргане. Однако в регистре присутствует измерение Подразделение. Оно заполняется автоматически при проведении расчетов.
Если организация имеет обособленные подразделения, выделенные на отдельный баланс, они заводятся как отдельные элементы справочника Организации. Если же подразделения просто обособлены (имеют свой КПП и ОКТМО), они настраиваются внутри справочника Подразделения с установленным признаком "Это обособленное подразделение". В этом случае данные по НДФЛ будут четко разделены.
Для "обычных" подразделений данные также записываются, но стоит учитывать ситуацию, когда сотрудник работает в нескольких отделах в течение месяца. В документе начисления суммы НДФЛ будут распределены пропорционально доходам, полученным в каждом подразделении.
Типичная ошибка начинающего разработчика — попытка соединить обороты регистра взносов и обороты регистра НДФЛ по физическому лицу и подразделению. Рассмотрим, почему это приведет к неверным результатам:
Решение: Проанализируем правильную методику объединения данных. Вместо СОЕДИНЕНИЯ следует использовать ОБЪЕДИНИТЬ ВСЕ в рамках временных таблиц с последующей итоговой группировкой.
Рассмотрим пошагово, как реализовать этот алгоритм:
ВТ_Взносы, где выбираем данные из регистра взносов с группировкой по Сотруднику, Подразделению и ПериодуРегистрации.ВТ_НДФЛ, где аналогично выбираем данные по налогу.ОБЪЕДИНИТЬ ВСЕ для объединения этих таблиц в одну.Пример структуры такого запроса:
ВЫБРАТЬ
Т.Сотрудник,
Т.Подразделение,
СУММА(Т.СуммаВзносов) КАК Взносы,
СУММА(Т.СуммаНДФЛ) КАК НДФЛ
ИЗ
(ВЫБРАТЬ
Взносы.Сотрудник,
Взносы.Подразделение,
Взносы.Сумма КАК СуммаВзносов,
0 КАК СуммаНДФЛ
ИЗ
РегистрНакопления.ИсчисленныеСтраховыеВзносы КАК Взносы
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
НДФЛ.Сотрудник,
НДФЛ.Подразделение,
0,
НДФЛ.Сумма
ИЗ
РегистрНакопления.РасчетыНалогоплательщиковСБюджетомПоНДФЛ КАК НДФЛ) КАК Т
ГРУППИРОВАТЬ ПО
Т.Сотрудник,
Т.Подразделение
Выясним, существует ли еще более простой способ решения задачи. Если в вашей организации настроено формирование документа Отражение зарплаты в бухучете, то это — идеальный источник данных.
В этом документе система уже проделала всю сложную работу за вас:
Данные для отчета в этом случае лучше брать из регистра накопления Сведения о доходах сотрудников для учета зарплаты в бухучете или напрямую из табличных частей документа. Это гарантирует, что ваш отчет сойдется с данными, которые уйдут в 1С:Бухгалтерию.
Иногда возникают ситуации, когда требуется получить актуальное подразделение сотрудника на определенную дату. В ЗУП 3.1 прямое обращение к регистру сведений Кадровая история сотрудников не рекомендуется, так как структура хранения данных в "тройке" отличается от версии 2.5.
Для получения кадровых данных разберем использование программного интерфейса. Наиболее эффективным методом является использование временной таблицы ДанныеСотрудников, которая формируется встроенными функциями общих модулей. Однако, если вы пишете простой запрос, помните: информация о подразделении сотрудника на момент начисления всегда хранится в самих регистрах расчета и налогов в соответствующих полях Подразделение. Использование среза последних из кадровой истории может привести к ошибкам, если налоги начислялись за один месяц, а кадровая проводка была сделана следующим месяцем "задним числом".
Проанализируем дополнительные рекомендации для получения качественного результата:
Сотрудник. У одного физического лица может быть основное место работы и внутреннее совместительство в разных подразделениях. Соединение по ФизическомуЛицу приведет к "каше" в данных.ПериодуРегистрации (месяцу, за который начислена зарплата), а не по дате документа. Это позволит корректно учитывать перерасчеты и "хвосты" прошлых периодов.Подведем итог: вытащить налоги по подразделениям в ЗУП 3.1 возможно как через прямые запросы к регистрам накопления (ИсчисленныеСтраховыеВзносы и РасчетыНалогоплательщиковСБюджетомПоНДФЛ), так и через данные документа Отражение зарплаты в бухучете. Второй вариант является более предпочтительным для сверки с бухгалтерским учетом и управленческой отчетности.