Статейка с Хабра про почтовые адреса. Перечисляющие проблемы, которые я решал в году 96-м примерно. Ну то есть до нашей эры.
А именно. Я занимался системами поддержки принятия решений (СППР). Технология, по которой тогда мы это делали, была – на тот момент – довольно-таки передовой. Сейчас всё это перестало быть актуальным: удавили как всё русское. Однако, повторяю, на тот момент это была не просто работающая, но и продаваемая система.
Так вот, мне пришлось строить классификатор по адресам. Классификатор в тех системах был устроен как древовидная структура, листьями которой являлись карточки со стандартной структурой полей, в которых значились реквизиты. Можно было делать множественные реквизиты двух уровней вложения (множественные внутри множественного) и ещё всякие штуки.
Так вот. Мне поручили простую вроде бы вещь: создать карточку для внутрироссийского (sic!) адреса. Не почтового – просто адреса. Но – для ВСЕХ вариантов. Заказчиками был ЧОП, которого интересовало, чтобы адрес можно было найти, скажем, по надписи на конверте. Или по внятному разъяснению. Или по нескольким невнятным. Но найти. А также учесть уже имеющийся адрес, с пониманием того, что это за строение такое, это им было тоже важно. И чтобы было известно, как этот адрес звучал раньше.
В общем, дали мне в помощники знающего человека и пару справочников, и я сел разбираться.
В принципе, многие вещи, связанные с почтовыми адресами, я знал – поскольку имел опыт массовой рассылки открыток в системе католожной книготорговли (т.н. «Книга-почтой»). Соответственно, я знал, насколько важен индекс, что номера домов бывают невероятно причудливыми, что р-н указывать ну очень желательно, а также в чём разница между с., д., п. и п.г.т. (не удивляйтесь, из этих мест в некоторых случаях можно было выписать обратно в Москву довольно редкие книжки). Так что тот факт, что номер дома – это ни в коем случае не число, а текстовая строчка, мне было понятно с самого начала. Правда, я-то знал, что бывают номера домов через дефис (типа д. 1-3), о чём авторы статьи на хабрахабре, похоже, не ведают. Равно как и о том, что адрес типа д. 11/1 может означать очень разные вещи – например, что это дом 11 строение 1, или что это корпус 1, или что это дом на пересечении улиц, и по одной из них он 11, а по другой – первый, а также и то, что этот дом ПРОСТО имеет номер 11/1, вот так его назвали он один как перст, а почему так называется – лишь один Бог ведает. Равно как и то, что адрес типа 5-я ул. 70-летия Октября д. 13А корп. 5/1 стр. 7 кв. 12Б – это не бред сумасшедшего, а нормальный такой адрес. Как и тот факт, что физически этот дом может находиться совсем даже не на 5-й улице 70-летия Октября (так его нет, сколько по этой улице не бегай), а где-то в районе 2-го Старомаломолозивного переулка, который не дай бог перепутать со 2-м Старомаломолозивным проездом, который вообще на другом конце города. Этим меня уже удивить было сложно. Как и тем, что бывают дома без улиц, например. Или что, пишучи в какую-нибудь отдалённое село, в некоторых случаях совершенно бессмысленно указывать дом (хотя формально он есть), а надо писать «село Верхняя Щельга, Кузьмичёву Василию Петровичу (агроному)». Потому что бывшего агронома, а ныне продавца в книжно-газетном ларьке при станции Василь-Петровича все знают, а то, что он проживает в доме 10, не помнит никто. Включая, может быть, и самого Василь-Петровича.
Но опытный товарищ, с которым я работал, раскрыл мне глаза на всю глубину моего невежества. Выяснилось, что реально я не знают ни-че-го. Потому что даже в жилфонде скрывались бездны. Например, всякие ужасы с номерами квартир – особенно в домах, где сохранились остатки коридорной системы, в общежитиях (особенно старых) и прочих таких местах. Или – что дом может иметь не только подвалы и чердаки (это-то я знал отлично, но что они ещё и нумерованы – нет, не догадывался), а также многочисленные пристройки, хозстроения, и все они имеют адреса, вплоть до трансформаторной какой-нибудь будки. Или, скажем, голубятни. У вас где ближайшая голубятня? У меня – рядом с домом.
Но это всё цветочки-лютики по сравнению со строениями неопределённого статуса. Например, бывшая армейская казарма, ныне общежитие. Она может вообще не иметь легальных реквизитов, потому что она и существовать-то не должна. А там, между прочим, живут живые люди, да и само строение представляет некую ценность. И вот такого всякого по России больше, чем мы можем себе представить. Причём всё это вроде бы даже кому-то принадлежит и по каким-то документам проходит, «но, чёрт возьми, как?!»
Но всё это меркло по сравнению с проблемой переименований. Реально любой адрес существует во времени, от такого-то числа по такое-то. Потом он может быть изменён, по миллиону причин, из которых переименование улицы – далеко не самая распространённая. Был дом 11/7, а стал 9Б. Почему? А вот так. Мой собственный дом превратился в результате какой-то химии из 4/6 в 4а. Хорошо хоть корпус не поменялся… Но это я имел в виду, так что с самого начала делал не карточку, а множественный связанный реквизит, завязанный на поле «промежуток времени». У меня хватило ума не встраивать проверку по временной шкале, а давать шкалам пересекаться, при этом вешая на них табличку с экспертными оценками достоверности.
Дальше я учёл, что изменения в официальных бумагах и почтовые адреса – разные вещи: одни бумаги поменялись, другие нет, а письма-то ещё долгонько ходить будут. И ввёл окошко «адрес по версии» с мультиокраской связи.
Тут дело пошло веселее, так как появилась возможность вводить неформальные адреса – то есть те, по которым дома реально ищутся. Добавив несколько полей, включая такие, как «цвет» и «этажность», я сделал возможным ввод адреса вида или «жёлтая девятиэтажка на Кислопрудной». Товарищ, с которым я работал, эти новведения чрезвычайно одобрил со словами «вот теперь я вижу, что от вас толк есть». Я обрадовался и ввёл реквизит связи «поблизости от» с возможностью протянуть его к какому-нибудь известному адресу. Реквизит связи тут же расцвёл красками: «за», «перед», «справа», «слева», «вверх» и «вниз». Небольшая доработка позволила вводить данные вида «по Хитроклювской третий дом вверх от магазина «Весна» (предполагалось, что адрес «Весны» известен).
Отдельной песней были наименования строений. Их оказалось ну очень много. Особенный ад разверзся вне городских пределов. Например: я и раньше знал, что дача, садовый домик и дом в деревне – это разные типы строений с разным правовым статусом, но опытный товарищ и здесь явил мне какие-то пропасти, недра и хиатусы, особенно связанные с хозяйственными строениями. Словарь рос как на дрожжах. Не помню, вводил ли я определение «халупа», но был близок к этому. Учитывая же, что тип строения мог меняться в зависимости от разного рода махинаций и манипуляций, получалось нечто монструозное. Но и это наша системка перемалывала.
То, что некоторые здания имели что-то вроде названий или личных имён – в том числе официально, особенно которые памятники архитектуры – тоже было ясно с самого начала, как и то, что имён может быть несколько. Я сразу вклеил атрибут «по версии», что позволило учитывать и неофициальные названия типа «старая химчистка» или «ну это, ну где была раньше шашлычная». Всё это было снабжено атрибутами времени и прочей обвеской.
Я ещё там что-то подклеивал и подпиливал, а под конец, учтя вроде бы уже всё мыслимое, всё-таки оставил большое текстовое поле, привязанное к идентификатору – для описания тех подробностей, которые моя тщательно выстроенная сетка не отлавливала.
Когда началась тестовая загрузка адресов, это поле понадобилось на втором же объекте. То был охраняемое данным ЧОПом помещение в подвале бывшего завода – древнее советское бомбоубежище, по неизвестным причинам замурованное, заново открытое в ходе приватизации этого самого завода и в итоге превращённое в склад. Ни о каком сколько-нибудь вменяемом адресе этого объекта речи и не шло, так как его вроде бы даже и не существовало в официальной природе. Можно было только объяснить, как до него добраться, причём все мои заранее заготовленные наработки были мимо кассы, ибо добираться до него нужно было по каким-то адовым подземным коридорам.
Так живая административно-хозяйственная жизнь в очередной раз посрамила интеллигентскую рефлексию, тщащуюся всё по полочкам разложить.
)(
Источник