Может пригодится...
Множители = Новый Массив(11);
Множители[0] = 3;
Множители[1] = 7;
Множители[2] = 2;
Множители[3] = 4;
Множители[4] = 10;
Множители[5] = 3;
Множители[6] = 5;
Множители[7] = 9;
Множители[8] = 4;
Множители[9] = 6;
Множители[10] = 8;
////////////////////
ИНН = КонтрагентСсылка.ИНН;
ЮрФизЛицо = КонтрагентСсылка.ЮрФизЛицо;
Если НЕ ЗначениеЗаполнено(ИНН) Тогда
Продолжить;
КонецЕсли;
ДлинаИНН = СтрДлина(ИНН);
ТекстСообщения = "";
Если ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо Тогда
Если НЕ ДлинаИНН = 12 Тогда
ТекстСообщения = """ИНН"" физического лица 12 символов!";
КонецЕсли;
Иначе
Если НЕ ДлинаИНН = 10 Тогда
ТекстСообщения = """ИНН"" юридического лица 10 символов!";
КонецЕсли;
КонецЕсли;
Результат = Ложь;
Если ДлинаИНН = 10 Тогда
Сум = 0;
Для i=0 По 8 Цикл
Сум = Сум + Сред(ИНН,i+1,1) * Множители[i+2];
КонецЦикла;
Сум = Сум - 11 * Цел(Сум/11);
Сум = Сум - 10 * Цел(Сум/10);
Результат = ?(Число(Сред(ИНН,10,1)) = Сум,Истина,Ложь);
ИначеЕсли ДлинаИНН = 12 Тогда
Сум = 0;
Для i=0 По 9 Цикл
Сум = Сум + Сред(ИНН,i+1,1) * Множители[i+1];
КонецЦикла;
Сум = Сум - 11 * Цел(Сум/11);
Сум = Сум - 10 * Цел(Сум/10);
Сум2 = 0;
Для i=0 По 10 Цикл
Сум2 = Сум2 + Сред(ИНН,i+1,1) * Множители[i];
КонецЦикла;
Сум2 = Сум2 - 11 * Цел(Сум2/11);
Сум2 = Сум2 - 10 * Цел(Сум2/10);
Результат = ?((Число(Сред(ИНН,11,1)) = Сум)И(Число(Сред(ИНН,12,1)) = Сум2),Истина,Ложь);
КонецЕсли;
Если Результат = Ложь Тогда
ТекстСообщения = "Не совпадает контрольное число!";
КонецЕсли;
Если ЗначениеЗаполнено(ТекстСообщения) Тогда
ОбщегоНазначения.СообщитьОбОшибке(ТекстСообщения);
КонецЕсли;
Показать
где КонтрагентСсылка - ссылка на элемент справочника Контрагенты (1С 8.2 БП 2.0).