Как вывести КПП обособленного подразделения в 1С и настроить отбор по кодам ФНС

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

В процессе работы с нормативно-справочной информацией в «1С:Управление холдингом» или «1С:ERP» часто возникает ситуация, когда данные о контрагентах загружаются из внешних систем некорректно. Одной из типичных проблем является отсутствие установленного признака ОбособленноеПодразделение у тех контрагентов, которые фактически являются филиалами или представительствами. В этой статье мы разберем, как с помощью языка запросов 1С выявить таких контрагентов, проанализируем структуру КПП и научимся правильно настраивать условия отбора.

Разбор структуры КПП для корректной фильтрации

Прежде чем переходить к написанию кода, давайте вспомним, что КПП (код причины постановки на учет) состоит из 9 знаков. Для решения нашей задачи критически важны 5-й и 6-й знаки. Именно они указывают на причину постановки организации на учет:

  1. 01 — Постановка на учет в налоговом органе самой российской организации по месту ее нахождения.
  2. 02, 03, 04, 05, 31, 32 — Постановка на учет российской организации по месту нахождения ее обособленного подразделения.
  3. 43, 44, 45 — Постановка на учет иностранной организации по месту нахождения ее обособленного подразделения.
  4. 51–56 — Крупнейшие налогоплательщики.

Проанализируем ситуацию: если в базе данных у контрагента не стоит галочка «Обособленное подразделение», но в КПП на 5–6 позиции стоят цифры, отличные от «01» (например, «45»), это прямой признак того, что перед нами филиал или представительство, который нужно обработать особым образом.

Решение задачи с помощью функции ПОДСТРОКА в запросе

Рассмотрим основной способ решения проблемы через запрос к справочнику Контрагенты. Мы будем использовать функцию ПОДСТРОКА, чтобы извлечь нужные символы из строкового поля КПП. Проанализируем пример кода, который позволяет выбрать контрагентов, не помеченных как «обособки», но имеющих соответствующие коды в КПП.


ВЫБРАТЬ
    Контрагенты.Ссылка КАК Ссылка,
    Контрагенты.Наименование КАК Наименование,
    Контрагенты.ИНН КАК ИНН,
    Контрагенты.КПП КАК КПП
ИЗ
    Справочник.Контрагенты КАК Контрагенты
ГДЕ
    НЕ Контрагенты.ОбособленноеПодразделение
    И ПОДСТРОКА(Контрагенты.КПП, 5, 2) В ("02", "03", "04", "05", "30", "31", "32", "43", "44", "45")
    И Контрагенты.ЮридическоеФизическоеЛицо = &ВидКонтрагентаЮрЛицо
УПОРЯДОЧИТЬ ПО
    Наименование

В этом запросе мы отсекаем физических лиц, так как у ИП нет КПП, и ищем только те записи, где логическое поле ОбособленноеПодразделение равно Ложь, но символы КПП указывают на обратное. Это позволяет сформировать список «технических» ошибок заполнения справочника.

Использование регистра сведений «Регистрации в налоговом органе»

Посмотрим на ситуацию шире. В современных конфигурациях (БП 3.0, УХ 3.2, ERP) КПП может храниться не только в карточке контрагента, но и в подчиненном регистре сведений. Это необходимо, так как организация может менять место регистрации, и КПП будет меняться во времени. Выясним, как получить актуальный КПП на определенную дату.

Проанализируем альтернативный подход: получение данных через срез последних регистра сведений. Это более грамотный метод, так как он учитывает историю изменений. Если нам нужно проверить, является ли контрагент обособленным подразделением на текущий момент, следует обратиться к регистру регистраций в ФНС.


ВЫБРАТЬ
    Контрагенты.Ссылка КАК Ссылка,
    РегистрацииВНалоговомОргане.КПП КАК АктуальныйКПП
ИЗ
    Справочник.Контрагенты КАК Контрагенты
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрацииВНалоговомОргане.СрезПоследних(&Период, ) КАК РегистрацииВНалоговомОргане
    ПО Контрагенты.Ссылка = РегистрацииВНалоговомОргане.Контрагент
ГДЕ
    ПОДСТРОКА(РегистрацииВНалоговомОргане.КПП, 5, 2) <> "01"
    И НЕ Контрагенты.ОбособленноеПодразделение

Важный нюанс: при использовании функции ПОДСТРОКА в условиях ГДЕ, следует учитывать, что это может замедлить выполнение запроса на очень больших базах данных, так как такая операция не позволяет использовать индексы по полю КПП. Если база содержит сотни тысяч контрагентов, разберем возможность предварительной фильтрации по длине строки (КПП должен быть 9 символов).

Обработка иностранных контрагентов и специфических кодов

Особое внимание уделим коду 45. Как мы уже выяснили, он используется для иностранных организаций. В «1С:Управление холдингом» работа с нерезидентами требует тщательного контроля ИНН и КПП. Если ваша задача — исключить обособленные подразделения из отчета, но при этом подтянуть их КПП для сопоставления с головной организацией, используйте связь через реквизит ГоловнойКонтрагент.

Рассмотрим логику сопоставления:

  1. Выбираем всех контрагентов, у которых ГоловнойКонтрагент заполнен и не равен самой ссылке контрагента.
  2. Если ГоловнойКонтрагент заполнен — это гарантированно обособленное подразделение или филиал.
  3. Для таких записей поле ОбособленноеПодразделение всегда должно быть ИСТИНА. Если это не так — данные требуют корректировки.

Рекомендации по доработке условий отбора

Чтобы ваш код был универсальным и не требовал постоянного обновления списка кодов (02, 03, 04...), можно применить условие «от противного». Разберем пример, где мы исключаем только основные подразделения (код 01) и крупнейших налогоплательщиков (коды 50-56), оставляя всё остальное как потенциальные обособки:


ГДЕ
    ДЛИНА(Контрагенты.КПП) = 9
    И ПОДСТРОКА(Контрагенты.КПП, 5, 2) <> "01"
    И НЕ (ПОДСТРОКА(Контрагенты.КПП, 5, 1) = "5") // Исключаем крупнейших

Подведем итог. Для вывода КПП обособленного подразделения в 1С необходимо четко понимать, ищем ли мы признак в метаданных (булево поле ОбособленноеПодразделение) или анализируем саму строку КПП. Комбинация функции ПОДСТРОКА и анализа регистра регистраций в налоговых органах дает наиболее точный результат для целей бухгалтерского и налогового учета.

← На главную