Архив 28 апреля 2013

Ад, заборы, коровники, ржавые запчасти от трактора

А вот хочется рассказать о граблях, на которые я неоднократно понаступал, пока делал “Каталог запчастей и их аналогов для ГАЗ-3111“. Вроде бы все просто, скажете вы? Да и в самом деле – чего тут сложного, табличка в Excel и всего делов.

На самом деле тут возникает довольно сложная база данных. Начнем хотя бы с того, что отталкивался я не от таблички, а от иллюстрированного каталога фирмы “Автософт” (ватермарки которого может наблюдать любой желающий). Соответственно, необходимо описывать два типа “сущностей” – запчасть и картинку. Как только у нас появляются две и более сущности, то тут же между ними возникают и отношения – в случае с запчастью и картинкой это “запчасть показана на картинке”. При этом, например, одна и та же деталь может быть показана на нескольких иллюстрациях одновременно. Пока ничего страшного, все хорошо, все в рамках описанной в любом учебнике ER-модели.

Дальше – больше. Где-то в начале 40-х, наверное (если судить по легковым ГАЗам – на М-11 этого не было, на М-20 появилось) в СССР была введена единая система нумерации автомобильных запчастей. Любая запчасть – от копеечного резинового сальника до кузова в сборе маркировалась как-то типа 12-2401060-Б или 31113-5000016-100. Здесь цифры до дефиса – номер модели (соответственно это ГАЗ М-12, он же ЗИМ и ГАЗ-31113). Семь цифр после дефиса разбиваются на три группы. Первые две – номер группы деталей (24 – задний мост, 50 – кузов), дальше – номер подгруппы (2401 – это картер и кожухи полуосей, 5000 – все тот же кузов), последние три цифры – номер детали в подгруппе. После второго дефиса идут цифровые или буквенные указания на комплектацию, взаимозаменяемость – в общем, все сложно.

Ничего сложного! – скажет “теоретик” от построения баз данных. Все же уже сделано, все каталогизировано, красота! Вот тут нас поджидает первый облом. Оказывается, что если на новой модели используется деталь от старой, то новый номер не присваивается. Соответственно, сальник заднего моста от ЗИМа, перекочевавший впоследствии на все легковые модели ГАЗ, даже будучи выпущенным в 2001 году и установленным на “Волгу”, все равно будет обозначаться 12-2401060. А опора вилки сцепления от довоенного еще ГАЗ М-11 – когда этот стандарт еще не ввели – на протяжении 70 лет обозначается 11-7576. Прикольно, да? Но это еще не все! Какие-нибудь резиновые шланги на одной модели могут использоваться в системе питания, а на другой – в системе охлаждения (при этом “топливный шланг для Чайки” в магазине не найдут, а “пароотводящий шланг от термостата на Волгу” – покопаются и отыщут).

Меняются со временем группы и подгруппы. Скажем, когда все электрооборудование ограничивается стартером и генератором – то для него достаточно одной группы. А когда электросхема с трудом помещается на 12 листах A4 – то логика, требующая засунуть в одну группу “все датчики системы управления двигателем, кроме ДТОЖ”, а в другую – “все три имеющихся датчика температурного состояния двигателя”, оказывается совершенно инопланетно-непонятной. В “историческом” разрезе, правда, все выглядит проще – пока датчики использовались только для индикации на приборной панели, то всем им выделили по отдельной подгруппе. Отдельно – датчик давления масла, отдельно – датчик температуры, отдельно – дачик скорости – да вроде и все. Выделять же по подгруппе для каждого из десятка датчиков в системе управления двигателем – явное расточительство. Впрочем, от этого не легче.

Я уже мельком упоминал про то, что не все детали имеют маркировку “модель-семь цифр-фигня всякая”. Скажу больше – такую маркировку имеет все электрооборудование. Что значит, скажем, 7702.3701? Это генератор (что подсказывают цифры 3701) модели 7702 (этот номер вообще ни о чем не говорит – просто порядковый номер разработки). Часть кнопочек и переключателей может обозначаться, например, как 2003.3769 (его обозначение “в стиле электрики”), 3111.3709 (еще одно его “электрическое” обозначение), и как 3111-3709300 (а это “автопромовское”). Переключатель этот ставился впоследствии на “Газели” и в магазинах может встречаться под любым из трех обозначений.

В общем, полагаться на то, что номер детали по каталога отражает то, где она применяется, как-то глупо. Для полноты картины добавлю, что метизы и подшипники обозначаются по “своим” стандартам. Правда, часть подшипников все-таки имеет номер “по стандартам автопрома”.

Короче говоря, имеем еще две “сущности” – детали и их обозначения. Говоря языком “отношений” – у нас имеются следующие отношения: деталь такая-то показана на картинке такой-то, деталь такая-то стоит там-то (имеется в виду “подгруппа” из ее обозначения), и деталь такая-то обозначена так-то. Вроде бы все просто? Но не забывайте, что речь идет только об одной модели автомобиля. Если добавить к нашему каталогу, скажем, “Чайку”, то придется столкнуться с тем, что одна и та же деталь на разных машинах называется по-разному. От кажущейся простоты задачи не остается практически ничего.

Я регулярно смотрю на всякие интернет-магазины автозапчастей. Самые примитивные – на каком-нибудь стандартном движке типа какого-нибудь OpenCart. Найти нужную деталь в таких – искусство. Немного лучше – те, кто сподобился поставить каталог “Автософта”. Там хотя бы можно найти “оригинальные” запчасти (хотя каталог – точнее, ссылки из него в “магазин” – абсолютно не учитывает взаимозаменяемость, предусмотренную в обозначениях типа 12-2401060-Б). Иномарочные магазины – в основном адский ад. Да, есть каталоги производителей с разбивкой по группам – но номера деталей там идут в произвольном порядке (есть, кстати, подозрение что одинаковые детали могут иногда иметь разные номера – даже у одного производителя). Есть огромное число “неоригинала” всех типов, цветов и размеров. Всякие Febi или Lemforder применяют свои системы нумерации. Даже в крупнейших каталогах неоригинала встречаются ошибки.

Короче, автору “идеальной” схемы БД для “идеального” интернет-магазина запчастей надо будет ставить памятник при жизни. И самое главное – не думайте, что тут поможет какой-то “опенсорс” типа OpenCart. Создается такое впечатление, что все “доступные и бесплатные” движки интернет-магазинов рассчитаны максимум на два-три десятка товаров. Ассортимент же любого придорожного ларька с “левыми” запчастями для “Жигулей” на порядок сложнее того, что может представить себе воображение типичного программиста-опенсорсника.

Если вы еще не верите – то вот контрольный вопрос – почему деталь с номером 24-1702144-01 в магазинах в диком виде не встречается, а только в составе “Ремкомплекта рычага КПП для ВАЗ-2101″?