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