
ИНСТРУКЦИЯ ПО ОРГАНИЗАЦИИ СБОРА
ДАННЫХ СТРАХОВЫХ КОМПАНИЙ – ДЕЙСТВИТЕЛЬНЫХ ЧЛЕНОВ РОССИЙСКОГО СОЮЗА АВТОСТРАХОВЩИКОВ
ДЛЯ ПОДДЕРЖКИ ОПРЕДЕЛЕНИЯ КОЭФФИЦИЕНТА КЛАССА «БОНУС-МАЛУС»
Дата вступления в силу: 19 июля 2004 года
Этот документ предназначен для внутренних потребностей РОССИЙСКОГО СОЮЗА аВТОСТРАХОВЩИКОВ, распространяется УПРАВЛЕНИЕМ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ РСА в соответствии со списком контролируемого распространения и обозначен как “КОНТРОЛИРУЕМАЯ КОПИЯ”. Содержание данного документа не может воспроизводиться целиком или по частям либо передаваться любым лицам, не являющимся ЧЛЕНАМИ рса, без предварительного согласования с НАЧАЛЬНИКОМ УПРАВЛЕНИЯ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ РСА. Копии, переданные третьим лицам по согласованию с НАЧАЛЬНИКОМ УПРАВЛЕНИЯ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ РСА, должны быть обозначены как «НЕКОНТРОЛИРУЕМАЯ КОПИЯ»
Содержание
1 Общие положения.............................................................................................................. 4
2 Процедура информационного взаимообмена.................................................................... 5
3 Приложения к Инструкции по организации сбора данных страховых компаний – действительных членов Российского Союза Автостраховщиков для поддержки определения коэффициента КБМ..... 7
3.1 Приложение 1. Перечень элементов нормативно-справочной информации (НСИ), используемых для обеспечения сбора, консолидации и централизованной обработки данных для поддержки определения коэффициента КБМ................................................................................................................ 8
3.2 Приложение 2. Формат и структуры единых файлов-справочников, используемых для обеспечения информационного взаимообмена........................................................................................... 9
3.3 Приложение 3. Файл “Реестр данных по договорам страхования и страхователям ”... 11
3.4 Приложение 4 . Паспорт информационной посылки..................................................... 12
3.5 Приложение 5. Протокол обработки информации....................................................... 14
3.6 Приложение 6. Файл ошибок........................................................................................ 15
3.7 Приложение 7. Единые файлы-справочники, используемые для обеспечения информационного взаимообмена 16
3.8 Приложение 8. Правила первичного автоматического контроля отчетной информации страховых компаний 18
3.8.1 Синтаксический контроль записей и проверка кодированной информации в файлах «Реестр данных по договорам страхования и страхователям»......................................................................... 18
3.8.2 Выявление дублированных записей......................................................................... 20
3.9 Приложение 9. Пример «Реестра данных по договорам страхования и страхователям» в формате XML 21
3.10 Приложение 10. Порядок расчёта контрольного числа ИНН (пример функции на языке PASCAL) 22
Принятые сокращения
АИС РСА | Автоматизированная информационная система Российского Союза Автостраховщиков, обеспечивающая прием, контроль, консолидацию, хранение и аналитическую обработку данных по договорам ОС АГО |
БД | База данных |
ИП | Информационная посылка |
КИС СК | Корпоративная информационная система страховой компании |
НСИ | Нормативно-справочная информация – блок кодификаторов и справочников, применяемых при заполнении и контроле первичных данных (в электронном виде) по договорам страхования и страхователям. |
ОС АГО | Обязательное страхование автогражданской ответственности |
ПО | Программное обеспечение |
РСА | Российский Союз Автостраховщиков |
СК | Страховая компания – действительный член Российского Союза Автостраховщиков |
ТС | Транспортное средство |
УИТ РСА | Управление информационных технологий Российского Союза Автостраховщиков |
2 Общие положения
1) Настоящий документ регламентирует процедуру информационного взаимодействия страховых компаний (СК), участвующих в реализации Закона об обязательном страховании гражданской ответственности владельцев транспортных средств, и Российского Союза Автостраховщиков (РСА), при сборе данных по договорам страхования и страхователям, необходимых для поддержки определения коэффициента класса «бонус-малус» (далее – коэффициента КБМ).
2) Для обеспечения информационного взаимодействия между РСА и страховыми компаниями может использоваться «XML» или «DBF» формат обмена данными (по выбору страховой компании).
3) Для обеспечения информационного взаимодействия между РСА и страховыми компаниями используются следующие основные документы и файлы:
· перечень элементов нормативно-справочной информации, используемых для обеспечения сбора, консолидации и автоматизированного контроля данных по договорам страхования и страхователям, необходимых для поддержки определения коэффициента КБМ (Приложение 1);
· формат и структура единых файлов-справочников, используемых для обеспечения информационного взаимообмена (Приложение 2);
· файл «Реестр данных по договорам страхования и страхователям» (Приложение 3);
· паспорт информационной посылки (Приложение 4);
· протокол обработки информации (Приложение 5);
· файл ошибок (Приложение 6);
4) СК представляют в РСА информацию по заключенным, измененным и расторгнутым договорам страхования за определенный отчетный период. Все процедуры информационного взаимообмена между СК и РСА, предусмотренные настоящей Инструкцией, осуществляются в соответствии с устанавливаемым для каждого отчетного периода порядком сбора данных для поддержки определения коэффициента КБМ.
5) Информация, используемая при взаимодействии между страховыми компаниями и РСА, может состоять из основной, дополнительной и исправленной частей.
Основная часть информации содержит данные за очередной период.
Дополнительная часть информации содержит сведения, ранее не включенные (по тем, или иным причинам) в состав основной части информации.
В исправленную часть информации включаются данные, не отвечавшие на момент предъявления в составе основной (дополнительной) информации требованиям оформления в электронном виде (ошибочные в соответствии с «Правилами автоматического контроля» (Приложение 8 к настоящей Инструкции), – после уточнения и исправления ошибочных данных.
Автоматический контроль и обработка основной, дополнительной и исправленной частей информации проводятся по идентичным правилам.
6) Кодирование информации в файлах осуществляется в соответствии с требованиями настоящей Инструкции.
7) Обмен файлами между страховыми компаниями и РСА осуществляется на магнитных носителях или с использованием средств связи, включая пересылку данных по электронной почте. Данные представляются в архивированном виде с использованием формата ZIP.
3 Процедура информационного взаимообмена
1) Информационный взаимообмен между страховыми компаниями и РСА осуществляется в соответствии с установленным порядком сбора данных для поддержки определения коэффициента КБМ за отчетный период.
2) Каждая страховая компания представляет в РСА следующую информацию:
· файл или файлы «Реестр данных по договорам страхования и страхователям» (Приложение 3) – по всем заключенным, измененным и расторгнутым за отчетный период договорам ОСАГО; файл имеет наименование – «BM-ККК-В#NNN», где:
ККК – код СК, согласно справочнику СК (см. Приложение 7);
В – код вида информационной посылки;
NNN – номер файла данного типа в составе информационной посылки;
Пример: BM-РГС-О#014.XML – основная информация от , 14-ый файл в формате XML
· паспорт информационной посылки в виде документа (см. Приложение 4).
3) Данные по основной, дополнительной и исправленным частям информации представляются в виде отдельных файлов и документов (паспорт информационной посылки, протокол обработки и т. д.). Допускается формальное разделение «Реестра данных по договорам страхования и страхователям» на несколько (до 99-и) файлов в составе информационной посылки одного вида.
4) При обнаружении ошибок или неустранимых сбоев в процессе приема-передачи информации допускается ее повторное предъявление после исправления ошибок в пределах срока, предусмотренного установленным порядком сбора данных.
5) Проверки записей файлов «Реестра данных по договорам страхования и страхователям» включает:
· Синтаксический контроль записей и проверку кодированной информации;
· Выявление дублированных записей;
· Проверку соответствия данных, приведенных в кодированном виде кодификаторам и справочникам НСИ.
6) По результатам обработки данных РСА формирует и представляет СК:
· протокол обработки информации (Приложение 5, отдельно - для основной, дополнительной и исправленных частей информации), который содержит - статистические данные о количестве предъявленных, принятых и забракованных записей, а также общее количество записей в файле ошибок и контрольную сумму (CRC-32) файла ошибок;
· файл ошибок (отдельно - для основной, дополнительной и исправленной частей информации) в виде базы данных (Приложение 6), каждая запись которого включает следующие данные: имя файла, код ошибки, идентификатор забракованной записи. Файл ошибок имеет наименование – «EBM-ККК-В», где
ККК – код СК, согласно справочнику СК (см. Приложение 7);
В – код вида информационной посылки;
Пример: EBM-РГС-О. XML – файл ошибок по основной информации от , в формате XML
· При расчете статистических данных о количестве забракованных записей, каждая ошибочная запись должна учитываться однократно, вне зависимости от количества ошибок, обнаруженных в данной записи. Количество представленных записей в протоколе обработки должно соответствовать количествам записей в файлах, указанных в Паспорте информационной посылки.
4 Приложения к Инструкции по организации сбора данных страховых компаний – действительных членов Российского Союза Автостраховщиков для поддержки определения коэффициента КБМ
4.1 Приложение 1. Перечень элементов нормативно-справочной информации (НСИ), используемых для обеспечения сбора, консолидации и централизованной обработки данных для поддержки определения коэффициента КБМ
№ | Имя файла | Наименование кодификатора / справочника |
1 | Spr_SKXX | Справочник «Страховые компании – члены РСА» |
2 | RS_BMXX | Справочник «Разряды (классы) системы бонус-малус» |
3 | CodErrXX | Кодификатор «Виды дефектов данных» |
4 | Cod_IPXX | Кодификатор «Виды информационных посылок» |
Область применения НСИ:
1) Подсистемы прототипа АИС РСА;
2) Подсистемы КИС СК.
4.2 Приложение 2. Формат и структуры единых файлов-справочников, используемых для обеспечения информационного взаимообмена
1. Справочник «Страховые компании – члены РСА» - «Spr_SKXX»
Имя поля | Тип | Назначение |
Cod | T (3) | Условный код СК |
S_Name | T (254) | Краткое наименование СК |
P_Name | T (254) | Полное наименование СК |
2. Справочник «Разряды (классы) системы бонус-малус» - «RS_BMXX»
Имя поля | Тип | Назначение |
Cod | T (3) | Код |
Name | T (254) | Наименование |
Kbm_n | N (4,2) | Коэффициент КБМ |
3. Кодификатор «Виды дефектов данных» - «CodErrXX»
Имя поля | Тип | Назначение |
Cod | T (3) | Код дефекта |
Name | T (254) | Наименование вида дефекта |
4. Кодификатор «Виды информационных посылок» - «Cod_IPXX»
Имя поля | Тип | Назначение |
Cod | T (1) | Код |
Name | T (50) | Наименование вида информационной посылки |
4.3 Приложение 3. Файл “Реестр данных по договорам страхования и страхователям ”
Формат файла «Реестр данных по договорам страхования и страхователям» представлен в таблице 3.3.1. Пример заполнения «Реестра…» в формате XML приведён в Приложении 9.
Таблица 3.3.1
Имя поля | Тип | Назначение | Правила заполнения |
Recid | T (25) | Идентификатор записи | Указывается внутренний идентификатор записи, используемый в корпоративной информационной системе СК. При отсутствии такового в КИС СК – указывается порядковый номер записи в файле. Требования – наличие заполнения и уникальность в пределах одного отчётного периода. |
S_Pol | T (3) | Серия страхового полиса | Указывается серия выданного полиса ОС АГО. |
N_Pol | N (10) | Номер страхового полиса | Указывается серия выданного полиса ОС АГО. |
Du_S | D | Дата начала срока страхования | Указывается дата начала срока страхования (по полису ОС АГО). |
Du_F | D | Дата окончания срока страхования | Указывается дата окончания срока страхования (по полису ОС АГО). |
VIN | T (25) | VIN транспортного средства | Указывается VIN транспортного средства. |
GRN | T (25) | Государственный регистрационный номер транспортного средства | Указывается Государственный регистрационный номер транспортного средства |
KBM_N | N (4,2) | Коэффициент КБМ на начало действия договора | Указывается значение коэффициента за наличие или отсутствие страховых выплат (коэффициент класса «БОНУС-МАЛУС») в соответствии со справочником «Разряды (классы) системы «БОНУС-МАЛУС» |
S_S_OPL | N (2) | Количество страховых случаев, по которым наступило обязательство страховщика произвести выплату | Указывается количество страховых случаев по данному договору |
D_AKT | D | Дата актуальности информации | Указывается дата, на которую представленные данные были актуальны |
FUZ_UR | N (1) | Признак страхователя юридическое/физическое лицо | Указывается 1, если страхователь – физическое лицо, 2 – если страхователь юридическое лицо |
SN_PASP | T (25) | Серия и номер документа – паспорта или удостоверения личности офицера | Указывается серия и номер документа – паспорта или удостоверения личности офицера |
FAM | T (25) | Фамилия страхователя | Указывается фамилия страхователя (только для страхователей – физических лиц) |
NAME | T (25) | Имя страхователя | Указывается имя страхователя (только для страхователей – физических лиц) |
SNAME | T (25) | Отчество страхователя | Указывается отчество страхователя (только для страхователей – физических лиц) |
INN | T (15) | ИНН страхователя | Указывается ИНН страхователя (только для страхователей – юридических лиц) |
UL_NAME | T (100) | Наименование организации – страхователя | Указывается наименование организации – страхователя (только для страхователей – юридических лиц) |
4.4 Приложение 4 . Паспорт информационной посылки
ПАСПОРТ ИНФОРМАЦИОННОЙ ПОСЫЛКИ
Страховая компания, представившая информацию: ______________________________
Вид информационной посылки: Основная, Дополнительная, Исправленная
Представлено:
Имя файла | Общее количество записей в файле | Контрольная сумма файла (CRC – 32) | |
Реестр данных по договорам страхования и страхователям |
Представитель СК ___________________ (должность, ФИО)
“____” ____________ 200___г.
4.5 Приложение 5. Протокол обработки информации
П Р О Т О К О Л
обработки информации
Количество записей | |||
Представлено | Принято | Забраковано | |
Реестр данных по договорам страхования и страхователям |
Количество записей в файле ошибок __________________
Контрольная сумма (CRC-32) файла ошибок __________________
Представитель УИТ РСА ___________________ (должность, ФИО) Представитель СК _________________ (должность, ФИО)
“____” ____________ 200___г. “____” ____________ 200___г.
4.6 Приложение 6. Файл ошибок
Имя поля | Тип | Назначение | Правила заполнения |
Fl | T (8) | Имя файла | Указывается имя файла, в котором выявлена ошибка. |
C_Err | T (3) | Код ошибки | Указывается код вида дефекта по кодификатору «Виды дефектов данных» - «CodErrXX». |
Recid | T (25) | Идентификатор ошибочной записи | Указывается идентификатор (значение атрибута «Recid») ошибочной записи в файле. |
4.7 Приложение 7. Единые файлы-справочники, используемые для обеспечения информационного взаимообмена
1. Справочник «Страховые компании – члены РСА» - «Spr_SK02»
Cod | S_Name | P_Name | |
... | ... | ... |
|
РОС |
| Открытое акционерное общество «Российское страховое народное общество» | |
СОГ | ОСГ «Согласие» | Общество с ограниченной ответственностью компания «Согласие» | |
СПВ | «Спасские ворота» | Закрытое акционерное общество «Страховая группа «Спасские ворота» |
|
... | ... | ... |
|
2. Справочник «Разряды (классы) системы бонус-малус» - «RS_BM02»
Cod | Name | Kbm_n |
M | Низший разряд (класс) | 2.45 |
000 | 0-ой разряд (класс) | 2.30 |
001 | 1-ый разряд (класс) | 1.55 |
002 | 2-ой разряд (класс) | 1.40 |
003 | 3-ий (начальный) разряд (класс) | 1.00 |
004 | 4-ый разряд (класс) | 0.95 |
005 | 5-ый разряд (класс) | 0.90 |
006 | 6-ой разряд (класс) | 0.85 |
007 | 7-ой разряд (класс) | 0.80 |
008 | 8-ой разряд (класс) | 0.75 |
009 | 9-ый разряд (класс) | 0.70 |
010 | 10-ый разряд (класс) | 0.65 |
011 | 11-ый разряд (класс) | 0.60 |
012 | 12-ый разряд (класс) | 0.55 |
013 | 13-ый разряд (класс) | 0.50 |
3. Кодификатор «Виды дефектов данных» - «CodErr02»
Cod | Name |
R00 | Не заполнено поле RECID (идентификатор записи) |
R01 | Не заполнено или неверно заполнено поле S_POL (серия полиса ОС АГО) |
R02 | Не заполнено или неверно заполнено поле N_POL (номер полиса ОС АГО) |
R03 | Не заполнено или неверно заполнено поле DU_S (дата начала действия договора ОС АГО) |
R04 | Не заполнено или неверно заполнено поле DU_F (дата окончания действия договора ОС АГО) |
R05 | Не заполнено или неверно заполнено поле VIN (VIN транспортного средства) |
R06 | Не заполнено или неверно заполнено поле GRN (Государственный регистрационный номер) |
R07 | Не заполнено или неверно заполнено поле KBM_N (коэффициент КБМ) |
R08 | Неверно заполнено поле S_S_OPL (количество страховых случаев) |
R09 | Не заполнено или неверно заполнено поле D_AKT (дата актуальности информации) |
R10 | Не заполнено или неверно заполнено поле SN_PASP (серия и номер паспорта страхователя) |
R11 | Не заполнено или неверно заполнено поле FAM (фамилия страхователя) |
R12 | Не заполнено или неверно заполнено поле NAME (имя страхователя) |
R13 | Не заполнено или неверно заполнено поле SNAME (отчество страхователя) |
R14 | Не заполнено или неверно заполнено поле INN (ИНН страхователя) |
R15 | Не заполнено или неверно заполнено поле UL_NAME (наименование организации - страхователя) |
RDR | Дублирование записи по атрибуту RECID (идентификатор записи) |
RDL | Дублирование запаси по атрибутам S_POL+N_POL (серия и номер полиса ОСАГО) |
R16 | Не заполнено или неверно заполнено поле FIZ_UR (признак страхователя юридическое/физическое лицо) |
4. Кодификатор «Виды информационных посылок» - «Cod_IP02»
Cod | Name |
O | Основная часть информации |
D | Дополнительная часть информации |
I | Исправленная часть информации (к основной информации) |
J | Исправленная часть информации (к дополнительной информации) |
4.8 Приложение 8. Правила первичного автоматического контроля отчетной информации страховых компаний
Контроль подготовленных СК первичных данных по реестрам договоров страхования и страхователям проводится в автоматическом режиме прикладным программным обеспечением Управления информационных технологий Российского Союза Автостраховщиков.
В рамках первичного автоматического контроля осуществляются следующие проверки:
· соответствия форматов и структуры файлов действующим технологическим правилам их построения и заполнения;
· соответствия данных, приведенных в записях файлов в кодированном виде, кодификаторам и справочникам НСИ, действующим в отчетный период;
· полноты заполнения, синтаксис и семантику записей;
· наличия дублированных записей в отчетных файлах.
4.8.1 Синтаксический контроль записей и проверка кодированной информации в файлах «Реестр данных по договорам страхования и страхователям».
Контроль записи реестра договоров страхования состоит из проверки полноты заполнения данных, соответствия кодированных данных справочникам и кодификаторам НСИ, информативности записи в целом. Описание осуществляемых при первичном автоматическом контроле проверок и применяемые коды ошибок приведены в таблице 1.
Таблица 1
Имя поля | Код ошибки | Правила проверки |
Recid | R00 | Ошибочным считается отсутствие заполнения атрибута «Recid». |
S_Pol | R01 | Ошибочным считается любое значение атрибута «S_Pol», отличное от набора символов «ААА» (верхний регистр, русский алфавит). |
N_Pol | R02 | Ошибочными считаются следующие случаи: · атрибут «N_Pol» заполнен значением, отличным от целого положительного числа; · атрибут «N_Pol» заполнен целым положительным числом, превышающим 9999999999. |
Du_S | R03 | Ошибочным считается: · отсутствие заполнения; · значения даты<01.07.2003; · значения даты>даты представления отчетных данных. |
Du_F | R04 | Ошибочным считается: · отсутствие заполнения; · значение даты<значения атрибута DU_S; · разница между значениями атрибутов DU_F и DU_S меньше 15 дней; · разница между значениями атрибутов DU_F и DU_S больше года. |
VIN | R05 | Ошибочным считаются: · отсутствие заполнения; · наличие каких-либо символов, кроме букв латинского алфавита и цифр; · заполнения поля значениями вида: НЕТ, ОТСУТСТВУЕТ, и. т.д. |
GRN | R06 | Ошибочным считаются: · отсутствие заполнения; · заполнения поля значениями вида: НЕТ, ОТСУТСТВУЕТ, и. т.д. |
KBM_N | R07 | Ошибочным считаются: · отсутствие заполнения; · заполнения поля значениями, не соответствующими справочнику «Разряды (классы) системы «БОНУС-МАЛУС» |
S_S_OPL | R08 | Ошибочными считаются отрицательные значения атрибута |
D_AKT | R09 | Ошибочным считаются: · отсутствие заполнения; · значения даты<01.07.2003; · значения даты более текущей (на момент проверки) даты; |
SN_PASP | R10 | Ошибочным считаются: · отсутствие заполнения для страхователей – физических лиц; заполнения поля значениями вида: НЕТ, ОТСУТСТВУЕТ, и. т.д. |
FAM | R11 | Ошибочным считаются: · отсутствие заполнения для страхователей – физических лиц; · заполнения поля значениями вида: НЕТ, ОТСУТСТВУЕТ, и. т.д. |
NAME | R12 | Ошибочным считаются: · отсутствие заполнения для страхователей – физических лиц; · заполнения поля значениями вида: НЕТ, ОТСУТСТВУЕТ, и. т.д. |
SNAME | R13 | Атрибут заполняется только для страхователей – физических лиц |
INN | R14 | Ошибочным считаются: · отсутствие заполнения для страхователей – юридических лиц; · некорректный номер ИНН (проверяется в соответствии с правилами проверки контрольного числа, см. Приложение 3.10) |
UL_NAME | R15 | Ошибочным считаются: · отсутствие заполнения для страхователей – юридических лиц; · заполнения поля значениями вида: НЕТ, ОТСУТСТВУЕТ, и. т.д. |
4.8.2 Выявление дублированных записей
Описание проверки файла «Реестр данных по договорам страхования и страхователям» на наличие дублированных записей приведено в таблице 2.
Таблица 2
Код ошибки | Правила проверки |
RDR | Ошибочными считаются все выявленные повторы записей «Реестра договоров страхования» по идентификатору записи (атрибуту «Recid») – бракуются обе записи. К ошибочным относятся как полностью идентичные записи («чистые дубли»), так и записи, имеющие отличия в части иных атрибутов. |
RDL | Ошибочными считаются все выявленные повторы записей «Реестра договоров страхования» по серии и номеру полиса – бракуются обе записи. К ошибочным относятся как полностью идентичные записи («чистые дубли»), так и записи, имеющие отличия в части иных атрибутов. |
4.9 Приложение 9. Пример «Реестра данных по договорам страхования и страхователям» в формате XML
<?xml version="1.0" encoding="windows-1251"?>
<REESTR>
<POLICY
RECID="0000001"
S_POL="ААА"
N_POL="3321246312"
DU_S="2003-07-01"
DU_F="2004-06-30"
VIN="WBAAA143K39973461248375ZS"
GRN="Р056EM99"
KBM_N="1.00"
S_S_OPL="0"
D_AKT="2004-07-12"
FIZ_UR="1"
SN_PASP="46-00 034893"
FAM="ВЯЗЕМСКИЙ"
NAME="ДМИТРИЙ"
SNAME="НИКОЛАЕВИЧ"
INN="" NAME_UR=""
/>
<POLICY
RECID="0000002"
S_POL="ААА"
N_POL="1969845683"
DU_S="2004-01-01"
DU_F="2005-12-31"
VIN="ZZZ423409DF4234KL12312597"
GRN="Х330АМ77"
KBM_N="1.00"
S_S_OPL="1"
D_AKT="2004-07-12"
FIZ_UR="2"
SN_PASP=""
FAM=""
NAME=""
SNAME=""
INN="7770239898"
NAME_UR='ОАО "ФАЙНЭНС ГРУПП"'
/>
</REESTR>
4.10 Приложение 10. Порядок расчёта контрольного числа ИНН (пример функции на языке PASCAL)
// Функция вычисляет контрольное число ИНН и возвращает True если ИНН
// введен правильно или False в противном случае
// В качестве параметра передается проверяемый ИНН
// Для справки: структура ИНН
// 10-ти разрядный ИНН - NNNNXXXXXC
// 12-ти разрядный ИНН - NNNNXXXXXXCC
// где: NNNN - номер налоговой инспекции
// XXXXX, XXXXXX - порядковый номер налогоплательщика (номер записи в госреестре)
// C - контрольное число в 10-ти разрядном ИНН
// CC - контрольное число в 12-ти разрядном ИНН
// (фактически, идущие подряд две контрольные цифры)
//
function CheckINN(const INN: string): Boolean;
const
factor1: array[0..8] of byte = (2, 4, 10, 3, 5, 9, 4, 6, 8);
factor2: array[0..9] of byte = (7, 2, 4, 10, 3, 5, 9, 4, 6, 8);
factor3: array[0..10] of byte = (3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8);
var
i: byte;
sum: word;
sum2: word;
begin
Result := False;
try
if Length(INN) = 10 then begin
sum := 0;
for i:=0 to 8 do
sum := sum + StrToInt(INN[i+1])*factor1[i];
sum := sum mod 11;
sum := sum mod 10;
Result := StrToInt(INN[10]) = sum;
end
else if Length(INN) = 12 then begin
sum := 0;
for i:=0 to 9 do
sum := sum + StrToInt(INN[i+1])*factor2[i];
sum := sum mod 11;
sum := sum mod 10;
sum2 := 0;
for i:=0 to 10 do
sum2 := sum2 + StrToInt(INN[i+1])*factor3[i];
sum2 := sum2 mod 11;
sum2 := sum2 mod 10;
Result := (StrToInt(INN[11]) = sum) and
(StrToInt(INN[12]) = sum2);
end;
except
Result := False;
end;
end;


