Проверка ИНН v.7.7

08.03.14

Разработка - Универсальные функции

Проверка ИНН, есть наверняка куча аналогов, для v.8.x точно есть и не один.

Конечно же, для кого-то это и "баян", но я поискал и для себя не нашел решения.

Может кому-то пригодиться.

Проверка ИНН, есть наверняка куча аналогов, для v.8.x точно есть и не один.

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

 

Проверка ИНН

См. также

Библиотека процедур и функций для технологической платформы "1С: Предприятие 7.7"

Универсальные функции Платформа 1С v7.7 Россия Абонемент ($m)

В библиотеку собраны различные функции по работе с документами, журналами, типами данных, строками, датой и временем, таблицами значений, Excel, файлами, XML, JSON, Http-сервисами, SMTP серверами и т.п.

1 стартмани

22.12.2023    631    8    user706545_kseg1971    0    

4

1С 7.7 и новый 1С:Контрагент

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Получение реквизитов контрагентов из 1С:Контрагент для старых конфигураций под 1с 7.7.

25.04.2022    1802    zhenyat    7    

6

Печать таблицы значений в 1С 7.7 при отладке

Универсальные функции Платформа 1С v7.7 Россия Бесплатно (free)

Функция выводит таблицу значений в табличный документ. (v7.7) Особенно полезно при отладке. Не нужно вносить изменения в код, вызываем функцию как вычисляемое выражение при останове. Если таблица обрабатывается в несколько этапов, можно вывести её после каждого и визуально проследить эволюцию.

30.06.2021    4371    Zoltan_Black    11    

2

Установка принтера по умолчанию для 1С 7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Установка принтера по умолчанию в 1С 7.7. Обработка может быть полезна в том случае, когда нужно установить принтер по умолчанию, а доступа к рабочему столу нет (например, терминальный режим без рабочего стола или remoteApp)

1 стартмани

13.02.2019    13259    4    alsen    3    

3

Формирование строки json в 1С: 7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 1С:Комплексная 7.7 Абонемент ($m)

Предлагается набор функций 1с 7.7 для формирования строки json стандартными средствами.

1 стартмани

10.12.2018    10045    malovandrey    1    

17

Как создать индикатор в 1С:Предприятии 7.7

Универсальные функции Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

В статье дано описание создания индикатора на форме в среде разработки 1С:Предприятие 7.7 исключительно типовыми средствами.

1 стартмани

27.09.2016    18658    2    HAMMER_59    6    

2