При разработке интеграций, настройке обмена данными или создании справочников контрагентов часто возникает необходимость автоматически разделять физических и юридических лиц. Например, если у нас есть два разных метода API (один работает только с компаниями, а второй — с физическими лицами), нам нужно заранее понимать, кого именно мы собираемся опрашивать. Разберем по шагам, как решить эту задачу, имея на руках только 12-значный идентификационный номер контрагента Республики Казахстан.
Многие разработчики начинают искать сложные пути, обращаться к внешним сервисам или пытаться анализировать базы данных. Однако выясним причину, по которой все эти сложности излишни. Номер ИИН (Индивидуальный идентификационный номер) можно безошибочно отличить от БИН (Бизнес-идентификационный номер) всего по одной позиции — по пятой цифре.
Рассмотрим это правило подробнее:
ИИН (физическое лицо или обычный индивидуальный предприниматель).БИН (юридическое лицо или совместное ИП).В коде 1С получение пятого символа строки можно реализовать очень легко, используя встроенную функцию Сред. Проанализируем ситуацию на простом примере логики:
ПятаяЦифра = Число(Сред(НомерКонтрагента, 5, 1));
Если ПятаяЦифра >= 0 И ПятаяЦифра <= 3 Тогда
// Это физическое лицо (ИИН)
ТипКонтрагента = "ФизЛицо";
ИначеЕсли ПятаяЦифра >= 4 И ПятаяЦифра <= 6 Тогда
// Это юридическое лицо (БИН)
ТипКонтрагента = "ЮрЛицо";
КонецЕсли;
Посмотрим на структуру формирования ИИН, чтобы понять техническую логику. Номер всегда состоит из 12 цифр. Исторически алгоритм генерации этого номера жестко привязывался к дате рождения гражданина.
Первые шесть цифр обозначают год, месяц и день рождения в формате ГГММДД. Таким образом, 5-я и 6-я цифры в ИИН кодируют день месяца (от 01 до 31). Поскольку дней в месяце физически не может быть больше 31, первая цифра дня (а это и есть пятая цифра всего идентификатора) может принимать только значения 0, 1, 2 или 3. Она по математическим причинам никогда не может быть 4, 5 или 6.
Важное примечание: Хотя с 2013 года в Казахстане законодательно отменили строгую привязку индивидуального номера к персональным данным (признав его просто уникальным набором цифр), алгоритм генерации остался прежним. Это было сделано для сохранения целостности баз данных, поэтому правило проверки пятой цифры продолжает надежно работать для всех.
Теперь проанализируем структуру БИН. Этот номер также состоит из 12 цифр, но логика его формирования совершенно иная.
Первые четыре цифры кодируют год и месяц государственной регистрации юридического лица (в формате ГГММ). А вот пятая цифра — это не день регистрации, как можно было бы подумать. Она специально выделена государством в качестве признака типа юридического лица и его резидентства. Эта позиция строго регламентирована справочниками:
Поскольку обычные индивидуальные предприниматели в Казахстане чаще всего используют свой личный индивидуальный номер как физического лица, правило разделения контрагентов по пятой цифре работает отлично и перекрывает 100% случаев из практики.
Разберем еще несколько фактов о структуре этих номеров, которые могут быть полезны при программных проверках контрагентов:
В номере БИН: Шестая цифра имеет важное административное значение. Она показывает структурный тип компании. Если там стоит 0 — это головное подразделение компании. Цифра 1 означает филиал, 2 — представительство, а 3 — крестьянское или фермерское хозяйство.
В номере ИИН: Седьмая цифра у физических лиц традиционно используется для определения пола и века рождения человека. Посмотрим на примеры: значение 3 указывает на мужчину, родившегося в XX веке, 4 — на женщину XX века. А вот цифры 5 и 6 относятся к мужчинам и женщинам, родившимся уже в XXI веке (начиная с 2000 года).
Таким образом, зная эти простые алгоритмические правила, мы можем без дополнительных обращений к базам данных и сервисам валидации определять тип контрагента, его резидентство или структуру подразделения, выполняя лишь базовую работу со строками в 1С.