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