Хочу поделиться своим опытом, приобретённым при разработке и сопровождении информационной системы учёта физических лиц в одной организации. Масштаб — несколько десятков тысяч реальных людей. Разумеется, производился сбор в том числе и паспортных данных. Как это часто бывает, исчерпывающего ТЗ сформулировано не было и некоторые вещи пришлось доделывать в процессе. О тонкостях учёта физлиц для программистов, впервые сталкивающихся с такой задачей, я и хотел бы рассказать. В статье будут затронуты только вопросы ФИО, гражданства и документов, удостоверяющих личность. Материал получился несколько сумбурным в связи с тем, что содержит только личный опыт без пересказа общеизвестных фактов и цитирования официальных документов.

Сначала про фамилию, имя и отчество. Во-первых, простому русскому человеку не всегда очевидно, что отчества может не быть. Причём его может не быть как у иностранцев (что понятно), так и у граждан РФ (по различным причинам). Если это не учесть сразу и сделать поле обязательным, то операторы вынуждены будут вводить туда всякий мусор типа дефисов.

Дальше. Опыт показывает, что в русском написании фамилии и имени кроме кириллических букв могут встречаться пробелы и дефисы. Другие символы в документах, удостоверяющих личность, не встречались.
UPD: в комментариях подсказали, что иногда ещё встречается апостроф.

Третий нюанс: иностранцы (особенно из Азии) при переоформлении российской визы могут получить русское имя в новой транскрипции, таков уровень работы нашего МИДа. Поэтому хорошей практикой будет завести в системе поля для имени и фамилии иностранцев на латинице.

Теперь о том, что касается гражданства и документов, удостоверяющих личность. С гражданством всё почти просто: за редкими исключениями (их рассмотрим в конце) гражданство человека совпадает с той страной, которая выдала ему паспорт (или иной документ). А с документами — несколько сложнее.

Сперва кратко перечислим основные документы, удостоверяющие личность граждан в России. Обычно люди обращаются, имея на руках самый обычный внутренний паспорт РФ. Для военнослужащих также возможен военный билет, кроме того — у представителей отдельных профессий может встречаться такая экзотика, как паспорт моряка или служебный паспорт. На время ожидания готовности нового паспорта, например, по достижении 20 или 45 лет, документом является временное удостоверение личности по форме Т-2. Нужно иметь в виду, что форма Т-2 — это совсем не та справка из паспортного стола, которую там выдают при сдаче старого паспорта! Справка нужна для её обмена на новый паспорт, а также может удовлетворить любопытство сотрудника ППС или кого-нибудь не слишком требовательного к документам, а вот оформить по ней кредит в банке вряд ли получится, для этого нужно полноценное временное удостоверение с фотографией. Его оформление — дело добровольное и осуществляется при обращении непосредственно в отдел ФМС. Загранпаспорт удостоверяет личность только тех граждан, кто выехал на ПМЖ за рубеж. Обычно их паспорта получены в заграничных посольствах и имеют специальные серии — 51 или 53. Вообще, серия у этих документов состоит из двух цифр, номер — из семи, а коды выдающих подразделений совсем не похожи на коды у внутренних паспортов.

У большинства иностранцев личность удостоверяется заграничным паспортом своей страны, но граждане некоторых государств могут находиться в России и по внутреннему паспорту (там предусмотрены страницы с дублированием основных сведений на русском). К таким странам относятся Беларусь, Казахстан, Киргизия, Таджикистан, Узбекистан и Украина.

Однако, самая массовая категория документов, с которыми сталкивается средняя организация в России — это внутренние паспорта РФ, поэтому основное внимание уделим им. Существуют некоторые особенности, которые позволяют в некоторой степени автоматизировать контроль правильности их реквизитов.

Серия паспорта — как известно, 4 цифры. Первые две обычно соответствуют коду ОКАТО/ОКТМО субъекта РФ, в котором были выданы, но с рядом исключений. Одно из них — Крым и Севастополь. Насколько можно понять из публикаций в Интернете, в прошлом году туда свозили запасы бланков паспортов со всей России. Последние две цифры приблизительно равны году выдачи паспорта, но могут отличаться на 1-2 единицы в любую сторону. Кроме того, с серией связан неразрешимый вопрос: нужен ли пробел между этими группами цифр? Единомыслия нет даже у федеральных ведомств. ФМС, которая заведует выдачей и учётом паспортов, в БД на своём сайте обрабатывает серию без пробелов, а ФНС (налоговая) в бланках требует разделять группы пробелом. Хорошей практикой, на мой взгляд, является ввод и хранение серии без пробела, а при генерации документов, в которых он необходим — добавлять его «на лету».

Номера паспортов — 6-значные, присваиваются последовательно в пределах каждой серии и никаких хитростей, связанных с ними, мне неизвестно.

Дата выдачи паспорта, согласно главе «Исчисление сроков» Гражданского кодекса, не должна приходиться на дни рождения в 14, 20 и 45 лет и следующие за ними выходные и праздничные дни, иначе в некоторых особо придирчивых организациях документ будет объявляться недействительным.

Подразделение, выдавшее паспорт, и его код — самые длинные поля в списке реквизитов паспорта. Соответственно, в них совершается наибольшее количество ошибок. Код подразделения состоит из двух групп по 3 цифры, разделённых дефисом. Первые 2 цифры — код региона, но почему-то не по ОКАТО/ОКТМО, как в серии, а по справочнику, примерно соответствующему КЛАДРу или автомобильным кодам. 3-я цифра — тип подразделения (ФМС, ОВД и т.п.). Последние 3 цифры — собственно порядковый номер подразделения. Для оптимизации ввода этих данных можно организовать автодополнение по справочнику подразделений и их кодов.

Также будет нелишним знать, что ФМС предоставляет сервис проверки по списку недействительных паспортов. Собственно, весь их список доступен для свободного скачивания. Проблема заключается в том, что файл с этим списком занимает свыше 1 Гб и организовать его обработку на среднем сервере может стать непростой задачей. В таких случаях можно воспользоваться сервисом для автоматизированной проверки паспортов.

Теперь о тех случаях, когда гражданство человека отличается от страны, в которой выдан документ, удостоверяющий личность. Во-первых, нужно иметь в виду категорию лиц без гражданства вообще, личность которых может удостоверяться видом на жительство. Во-вторых, у многих жителей частично признанных Абхазии и Южной Осетии, а также непризнанной Приднестровско-Молдавской Республики есть гражданство России и загранпаспорта России (поскольку они постоянно проживают за пределами РФ), что даёт им все права и обязанности российских граждан. В-третьих, это некоторые жители замечательной европейской страны Латвии, имеющие, в основном, русское происхождение. Они считаются «негражданами» и имеют документы, которые так и называются: "паспорт негражданина". В-четвёртых, это беженцы.

Разумеется, в этой статье освещены далеко не все вопросы, связанные с программным учётом физических лиц и контролем их документов, в связи с тем, что многие потенциально возможные ситуации автору на практике не встречались. Но, несмотря на это, надеюсь, что даже изложенные сведения помогут кому-то не допустить типовых ошибок при проектировании информационных систем обработки персональных данных и повысить качество собираемых сведений с помощью автоматического контроля.

Комментарии (33)


  1. Alexufo
    29.05.2015 17:30
    +2

    Я как то писал в ФМС с просьбой дать список регионов ФМС отделений и их кодов, мне отказали. Запрещено. Почему запрещено знать номер отделения, который указан в паспорте, где получал паспорт — не понятно.


    1. qmax
      31.05.2015 21:35

      В базе fias это всё есть, вобщето.


  1. newdya
    29.05.2015 19:16
    +2

    Опыт показывает, что в русском написании фамилии и имени кроме кириллических букв могут встречаться пробелы и дефисы. Другие символы в документах, удостоверяющих личность, не встречались.

    Апостроф ещё.


    1. pdadm Автор
      29.05.2015 20:58

      В своей практике ни разу не сталкивался с апострофом в российских документах. Гугл тоже не добавил ясности. Не расскажете ли поподробнее, в каких именно документах встречается апостроф? И как именно его пишут: как апостроф или как одинарную кавычку?


      1. Sap_ru
        29.05.2015 21:23
        +1

        Вы не верите, но О'Генри, О'Конор и О'Рейли (в разный написаниях) имеют место быть в природе. В частности, в случае интернациональных браков. По крайней мере люди с апострофом в свидетельстве о рождении существуют, но что у них сейчас в паспорте…


      1. Sap_ru
        29.05.2015 21:29
        +1

        Кстати руководящих документах ФМС (например) упоминания апострофа встречаются. В частности, в данном документе сказано, что при преобразовании имени и фамилии к машиночитаемому виду «апострофы исключаются». Что означает, что они допускаются.
        Такие же отсылки есть в руководствах и документах по гос.услугам, заполнению бланков на выдачу паспорта и т.п. Получается, что апостроф в русском написании имён и фамилий очень даже законен.


        1. pdadm Автор
          29.05.2015 21:36

          Спасибо за ссылку, добавил замечание в пост. Открытым остаётся вопрос о предпочтениях ФМС, а именно, О'Генри или О`Генри…


          1. Sap_ru
            29.05.2015 22:32
            +1

            ' — этот символ. В свидетельстве о рождении писали именно его. Имел удовольствие общаться с владелицей такой фамилии.
            Совершенно аналогичная история Причём, регулярно возникали проблемы, т.к. в различных органах активно пытались поставить `, что порождало массу проблем. Так что скорее всего нужно допускать оба, на случай, если кому-то всё же вписали в паспорт не тот символ.


            1. danfe
              30.05.2015 11:55

              Это поистине удивительное пристрастие к обратным апострофам (ASCII 0x60, back tick/quote, grave accent) можно наблюдать не только в госорганах (там традиционно низкий уровень компьютерной грамотности), но и в интернете. Ладно бы употребление вместо апострофа было просто ошибкой, так ведь еще и выглядит отвратительно!

              Оба символа как равнозначные допускать как раз, имхо, не нужно: безграмотность надо искоренять, а не поощрять.


              1. Sap_ru
                30.05.2015 19:32
                +1

                Гхм… Т.е. если у гражданина в паспорте стоит ` то нужно «искоренять» и не поощрять? Это как? Напишите другой символ? Так это будет уже другой гражданин. Ссылку, на тётеньку, у которой ` в паспорте пропечатали я в комментарии выше дал. Что будете в такой ситуации делать? (я бы предупреждение при попытке ввода ФИО с этим символом вываливал с объяснением, что правильный символ другой и необходимостью подтверждения в случае, если действительно попался паспорт с неправильным символом)


                1. danfe
                  31.05.2015 13:19

                  Если у гражданина в паспорте ошибка, государство должно ее как можно скорее исправить, желательно извинившись перед человеком. Т.е. ответ на ваш вопрос: да, искоренять, писать другой символ, вот так. Нет, это не будет другой человек: О'Генри это О<0x27>Генри и никак иначе.

                  К сожалению, т.к. мы говорим о России, обычно всё происходит именно так, как в истории по ссылке. Пожалуй, надо уточнить: принимать оба варианта, в новых данных писать правильно, ошибку по возможности исправлять (т.е. действовать по закону Постела).


                  1. Sap_ru
                    02.06.2015 23:19

                    Это будет другой человек. Я это своими глазами видел. Человеку пришлось из буквы ё пришлось долго судиться. Более того у меня в свидетельстве о рождении точки на буквой от времени стали нечитаемые — адским чудом и везением удалось исправить все документы на вариант без ё. Иначе бы я судился по поводу собственной квартиры и доказывал, что я это я. Ни один юрист Вам ничего не заверит, если написание не идентично паспорту.
                    Так что писать можно что угодно, но в случае проблем придётся судиться.


                  1. pdadm Автор
                    03.06.2015 03:06

                    Я бы ещё добавил, что ваши теоретические построения хороши до первого межсистемного взаимодействия, когда списки людей передаются с какой-либо целью из «нашей» системы в «чужую». Шансов, что её разрабатывали так же скурпулёзно, как хотелось бы вам, очень мало, а разница в одном символе ФИО может привести к невозможности найти сведения о человеке. И дело здесь, поверьте, вовсе не в России…


            1. Greendq
              01.06.2015 16:41

              Хммм, странное поведение систем учёта — разве они все не идентифицируют человека по индивидуальному номеру налогоплательщика? У нас (в Молдове) есть, конечно, категории граждан, которым религия не позволяет использовать ИНН, но самый прикол в том, что этот идентификатор not null и обязателен и есть, просто их религиозная галочка указывает системе его не печатать :) У меня постоянно приколы возникают с контрактами, так как одни используют румынский вариант моего имени (как в удостоверении личности), другие — в русском варианте, но так как везде указывается ИНН — то никто не парится вообще. В РФ с этим не так?


              1. Sap_ru
                02.06.2015 23:16

                Это не поведение систем учёта. Это закон такой. Если у вас, например, в праве собственности на квартиру написано «е» вместо «ё» (ошиблись при выдаче и сразу не заметили), то придётся судиться, т.к. квартира — не ваша. ИНН практически нигде не пишется — пишется ФИО, дата рождения и номер паспорта. При несовпадении любого — это уже другой человек.


                1. Greendq
                  03.06.2015 12:02

                  Очень интересно. Т.е. при наличии полного тёзки, родившегося в ту же дату — у человека могут возникнуть проблемы на ровном месте? Везде, во всех контрактах, во всех свидетельствах о собственности у нас я видел ИНН — хотя, может это из-за того, что постоянно возникают разночтения между русским и румынским вариантами имён.

                  А с множественными именами у вас как? Тот же Эрих Мария Ремарк в полном имени может быть прописан или только Эрих или Мария и обязательно раздельно?


                  1. pdadm Автор
                    06.06.2015 21:26

                    Вам же написали: ФИО, дата рождения и реквизиты паспорта. Последние у всех разные по определению.
                    А ИНН в России не применяется в качестве универсального идентификатора в том числе и потому, что он непостоянный и подлежит смене при переезде в другой регион. Зато делаются попытки ввести повсеместное использование номера СНИЛС (присваивается пенсионным фондом), он с некоторых пор выдаётся даже детям.
                    Понятия множественного имени в российском законодательстве нет. Есть фамилия, имя и отчество (иногда может отсутствовать).
                    P.S. К слову, зверства насчёт е/ё есть не везде, во многих государственных системах при различии ФИО в этой букве закрывают глаза.
                    P.P.S. Надо же, как интересно: всего 25 лет прошло, а в Молдове уже совсем другая реальность, и российская действительность известна так же плохо, как и, например, аргентинская…


                    1. Greendq
                      08.06.2015 10:38
                      +1

                      Про непостоянный ИНН — очень интересно. Я, конечно, понимаю, что Россия — большая, но так ведь затеряться можно достаточно легко…

                      Рано или поздно государства начнут использовать какой-нибудь хеш от ДНК — вот тогда исчезнет вся неоднозначность. Хотя останутся полные близнецы и появятся вопросы с клонами…


                      1. ALIron
                        22.06.2015 11:52

                        В России роль «молдавского» ИНН играет СНИЛС от Пенсионного фонда.
                        Он не меняется при переездах, но есть случаи с дублированием, один СНИЛС — два человека и два СНИЛС- один человек, но это скорее исключение на уровне стат погрешности, но вот попавшим под такие погрешности приходится не сладко.
                        Относительно паспортов — не лучший идентификатор, время жизни от 6 (20-14 лет) + возможности потери (выдается новый номер)


                  1. ALIron
                    22.06.2015 11:48
                    +2

                    Вы будете смеяться, но да.
                    blog.chirkov.net/2015/01/14/pro-tezok-sudebnyx-pristavov-i-vytekayushhie-iz-etogo-problemy
                    Гарантированными идентификаторами являются:
                    ФИО+ДР+ Место рождения.
                    На выборках до 20 млн записей «Место рождения» чаще не играет роли, а на бОльших объемах находятся такие казусы.


          1. Sap_ru
            29.05.2015 22:37
            +2

            Собственно, вопрос о предпочтениях не понятен, т.к. апострофом называется вполне определённый символ, который есть в ГОСТах и разнообразных стандартах — код символа 27 — «машинописный апостроф».


            1. pdadm Автор
              29.05.2015 22:50

              Вот те на, второе открытие за три часа. Оказывается, символ, который всегда считал апострофом, на самом деле является обратным апострофом. Регистрация на хабре превзошла ожидания с точки зрения расширения кругозора.


  1. Velikodniy
    29.05.2015 21:49

    Во-вторых, практически у всех граждан частично признанных Абхазии и Южной Осетии, а также непризнанной Приднестровско-Молдавской Республики есть также гражданство России и загранпаспорта России

    Справедливости ради замечу, что в ПМР не у практически у всех гражданство РФ, а меньше, чем у половины (~200к из ~500к).


    1. pdadm Автор
      29.05.2015 22:01

      Спасибо за замечание! Писал по ощущениям, без глубокого изучения региональных особенностей.


  1. paranoik
    30.05.2015 09:04

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

    В связи с этим, если хотите использовать локальную базу недействительных паспортов, не забывайте регулярно ее обновлять.


    1. Borz
      30.05.2015 16:06

      ФМС — паспорт действителен (проверяют только по номеру). Банки — не действителен (проверяют не только номер).
      методом ухищрений выяснил, что виной неверно записанное ДР — в ПФР было неверно записано ДР — вместо 30 числа указано 29-е. Вроде бы там исправили, но ещё огребаю последствия «незначительной ошибки»


  1. qmax
    31.05.2015 21:40

    А у нас однажды была сотрудница, у которой не было фамилии.
    Было имя и отчество, а фамилии не было.

    Оказывается, в Монголии фамилии были запрещены для борьбы с пережитками досоциалистического общества, а вернулись только в 2000г.


    1. ALIron
      01.06.2015 13:31

      Ну почему же только у Монголии, У Ирландии тоже нет.
      Т.н. Ирландское имя — ходовой вариант.


      1. ALIron
        01.06.2015 13:35

        перепутал Исландское имя


        1. qmax
          01.06.2015 15:33

          ну, если так далеко ходить, то тогда уж можно вспомнить и испанские с арабскими.
          а с ними вобще отдельную таблицу заводить придётся.


          1. ALIron
            01.06.2015 15:52

            таблицу может и нет, а вот расширять длину атрибута с 255 (обычно так делают) до 3000 знаков потребуется=)


            1. alexanderzaytsev
              03.06.2015 01:58

              Какие 255, какие 3000? ЗАЧЕМ? Экономить копейки? Не получится, Oracle, к примеру, для varchar2, короче 2000 знаков всегда выделяет максимум памяти, чтобы избежать дефрагментации/переаллокации: asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1542606219593

              Я всегда удевляюсь кто эти волшебные лимиты придумывает.


              1. ALIron
                04.06.2015 14:21

                Например для верстки нужны предельные величины, как электронной так и для печатной.
                Аналогично ограничения нужны для интеграционных сообщений. Тип и длина атрибута всё еще требуется описывать во многих системах.
                Не говорю уже про старые наследуемые системы которые принимают данные и хранят в текстовых файлах.=)