В практике автоматизации учета в 1С разработчики и бухгалтеры регулярно сталкиваются с необходимостью четко разделять индивидуальных предпринимателей (ИП) и обычных физических лиц (ФЛ). Типичный пример — выполнение требований Федерального закона № 54-ФЗ (о применении ККТ). Бухгалтерия часто требует: «Отправляйте чеки только обычным физическим лицам, но не отправляйте их индивидуальным предпринимателям, если оплата пришла по безналичному расчету».
Сложность заключается в том, что ИНН индивидуального предпринимателя совпадает с его личным ИНН как физического лица и состоит из 12 цифр. Человек получает ИНН один раз в жизни, и даже если он регистрирует ИП, прекращает деятельность, а затем регистрирует его снова — ИНН остается прежним. Обычные алгоритмы проверки длины ИНН (где 10 символов — это юридическое лицо, а 12 символов — физическое лицо) здесь не помогают, так как и для ИП, и для ФЛ длина ИНН одинакова.
В этой статье мы подробно рассмотрим, как программно и методологически решить задачу разделения ИП и ФЛ в конфигурациях 1С, проанализируем банковские маски счетов и разберем нюансы законодательства.
Самый простой, но наименее надежный способ — это анализ текстового наименования контрагента или заполненных классификаторов (например, ОКОПФ). Если пользователи ведут базу аккуратно, в наименовании ИП обязательно будут присутствовать аббревиатура «ИП» или словосочетание «Индивидуальный предприниматель».
Рассмотрим пример функции на языке 1С, которая анализирует наименование контрагента и заполненный код ОКОПФ:
Функция ЭтоИндивидуальныйПредприниматель(КонтрагентСсылка) Экспорт
// 1. Проверка по наименованию контрагента
Наименование = НРег(КонтрагентСсылка.Наименование);
Если СтрНайти(Наименование, "ип ") > 0
Или СтрНайти(Наименование, " индивидуальный предприниматель") > 0
Или СтрНайти(Наименование, "предприниматель ") > 0 Тогда
Возврат Истина;
КонецЕсли;
// 2. Проверка по ОКОПФ (Общероссийский классификатор организационно-правовых форм)
// Для ИП код ОКОПФ обычно равен 50102 ("Индивидуальные предприниматели")
Если ЗначениеЗаполнено(КонтрагентСсылка.ОКОПФ) Тогда
КодОКОПФ = СокрЛП(КонтрагентСсылка.ОКОПФ.Код);
Если КодОКОПФ = "50102" Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
Преимущества метода: Высокая скорость работы, отсутствие необходимости отправлять запросы во внешние сервисы.
Недостатки метода: Полная зависимость от человеческого фактора. Если менеджер зарегистрировал контрагента как «Иванов Иван Иванович» без указания статуса «ИП» в наименовании или некорректно выбрал ОКОПФ, система допустит ошибку.
Более надежным решением является использование встроенных механизмов проверки контрагентов. Современные конфигурации 1С (такие как «1С:Бухгалтерия 3.0», «1С:ERP Управление предприятием» или «1С:Комплексная автоматизация») включают встроенный сервис 1С:Контрагент, который в фоновом режиме отправляет запросы к базе ФНС.
Принцип работы строится на следующих правилах:
Проанализируем пример кода, определяющего наличие ОГРНИП через типовые регистры сведений встроенной подсистемы проверки контрагентов:
Функция ПроверитьСтатусИПЧерезЕГРИП(ИНН) Экспорт
Если СтрДлина(СокрЛП(ИНН)) <> 12 Тогда
Возврат Ложь; // Только у физлиц и ИП ИНН состоит из 12 цифр
КонецЕсли;
// В типовых конфигурациях 1С данные проверок кэшируются в регистре "СостоянияКонтрагентов"
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Состояния.Состояние
|ИЗ
| РегистрСведений.СостоянияКонтрагентов КАК Состояния
|ГДЕ
| Состояния.Контрагент.ИНН = &ИНН";
Запрос.УстановитьПараметр("ИНН", ИНН);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
// Если сервис подтвердил существование контрагента, значит, это зарегистрированный ИП
Если Выборка.Состояние = ПредопределенноеЗначение("Перечисление.СостоянияКонтрагентов.ДеятельностьПрекращена") Тогда
Возврат Ложь; // Регистрация ИП прекращена, теперь это просто физлицо
ИначеЕсли Выборка.Состояние = ПредопределенноеЗначение("Перечисление.СостоянияКонтрагентов.СодержитсяВВК") Тогда
Возврат Истина; // Действующий ИП найден в ведомственном классификаторе ФНС
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
Для целей налогового учета и применения ККТ (54-ФЗ) ключевое значение имеет не столько сам юридический статус гражданина в ЕГРИП, сколько способ проведения расчетов. Физическое лицо может иметь действующий статус ИП, но совершать покупку для личных домашних нужд, расплачиваясь личной банковской картой. И наоборот — производить оплату за бизнес-услуги со своего расчетного счета предпринимателя.
При получении безналичной оплаты через банковские выписки (Клиент-Банк) система может автоматически и со 100% точностью определить тип плательщика по первым цифрам его 20-значного расчетного счета:
Рассмотрим, как реализовать проверку входящего платежа в 1С при разборе банковской выписки:
Функция ОпределитьКатегориюПлательщика(НомерСчета) Экспорт
ОчищенныйСчет = СокрЛП(СтрЗаменить(НомерСчета, " ", ""));
Если СтрДлина(ОчищенныйСчет) <> 20 Тогда
Возврат "Не определено";
КонецЕсли;
// Извлекаем первые 5 цифр балансового счета второго порядка
БалансовыйСчет = Лев(ОчищенныйСчет, 5);
Если БалансовыйСчет = "40802" Тогда
Возврат "ИндивидуальныйПредприниматель";
ИначеЕсли БалансовыйСчет = "40817" Или БалансовыйСчет = "40820" Тогда
Возврат "ФизическоеЛицо";
Иначе
Возврат "Прочее";
КонецЕсли;
КонецФункции
Почему это важно для бухгалтера: Согласно п. 9 ст. 2 Федерального закона № 54-ФЗ, безналичные расчеты между организациями и (или) индивидуальными предпринимателями освобождены от применения ККТ (за исключением расчетов с предъявлением электронного средства платежа). Таким образом:
Для построения надежной системы разграничения ИП и физических лиц в 1С рекомендуется использовать гибридный подход:
Контрагенты создайте отдельный реквизит (флаг или тип) для явного указания статуса. Заставьте пользователей заполнять его при ручном вводе.1С:Контрагент. Если при вводе 12-значного ИНН сервис находит данные в ЕГРИП — автоматически выставляйте статус «ИП» и заполняйте поле ОГРНИП.40802 освобождают вас от печати чеков по безналичным расчетам, а счета группы 40817 безоговорочно требуют фискализации.