|
Проверка контрольной цифры-Налоговый и идентификационные коды Украина | ☑ | ||
---|---|---|---|---|
0
marinanima
02.09.13
✎
13:44
|
Здравствуйте! Поделитесь пожалуйста кодом для проверки контрольной суммы ИНН и ОКПО (юр/физ лиц).
Документооборот 8 КОРП 1.2 там есть эта проверка, но только для России а необходимо поменять для Украины. Функция ИННСоответствуетТребованиям(Знач ИНН, ЭтоЮрЛицо, ТекстСообщения) Экспорт |
|||
1
pumbaEO
02.09.13
✎
13:58
|
Функция нфПолучитьКЧ_ЕДРПОУ(Код,ВесКоэф,СмещениеКоэф=0)
КонтрольнаяСумма=0; Для ПерЦ=1 По СтрДлина(ВесКоэф) Цикл КонтрольнаяСумма=КонтрольнаяСумма+(Число(Сред(Код,ПерЦ,1))*(Число(Сред(ВесКоэф,ПерЦ,1))+СмещениеКоэф)); КонецЦикла; КонтрЧисло = КонтрольнаяСумма-Цел(КонтрольнаяСумма/11)*11; Возврат КонтрЧисло; КонецФункции //ПолучитьКЧ_ЕДРПОУ // нфОшибкаЕДРПОУ =============================== // Назначение: // Проверка кода ЕДРПОУ для Украины // Аргументы: // КодДляПроверки - Код ЕДРПОУ // Возвращает: // 0 - код правильный // 1 - код неверно, есть ошибка в коде Функция нфОшибкаВКоде_ЕДРПОУ_8(ЕДРПОУ) ЕстьОшибкаВКоде = Ложь; КодДляПроверки=СОКРЛП(ЕДРПОУ); // Определяем набор весовых коэффициентов Если (Число(КодДляПроверки)<30000000) Или (Число(КодДляПроверки)>60000000) Тогда Коэф="1234567"; Иначе Коэф="7123456"; КонецЕсли; // Расчитываем контрольное число как сумму произведений разрядов кода на соответсвующие коэфициенты КЧ=нфПолучитьКЧ_ЕДРПОУ(КодДляПроверки,Коэф); Если КЧ=10 Тогда КЧ = нфПолучитьКЧ_ЕДРПОУ(КодДляПроверки,Коэф,2); Если КЧ=10 Тогда КЧ=0; КонецЕсли; КонецЕсли; Если Число(Прав(КодДляПроверки,1))=КЧ Тогда ЕстьОшибкаВКоде = Ложь; Иначе ЕстьОшибкаВКоде = Истина; КонецЕсли; Возврат ЕстьОшибкаВКоде; КонецФункции // нфОшибкаЕДРПОУ =============================== // Назначение: // Проверка кода ЕДРПОУ для Украины // Аргументы: // КодДляПроверки - Код ЕДРПОУ // Возвращает: // 0 - код правильный // 1 - код неверно, есть ошибка в коде Функция нфОшибкаВКоде_ИНН(ИНН) Экспорт Перем ДлинаКода, ДлинаПроверки; ЕстьОшибкаВКоде=Ложь; ИНН = СокрЛП(ИНН); Если СтрДлина(ИНН)<>10 И СтрДлина(ИНН)<>9 И СтрДлина(ИНН)<>12 Тогда #Если Клиент Тогда Сообщить("Не соответствует длина кода ИНН", СтатусСообщения.Важное); #КонецЕсли Возврат Истина; КонецЕсли; Если СтрДлина(ИНН)=10 Тогда ДлинаПроверки = Число(Left(ИНН, 1)) * -1 +Число(Сред(ИНН, 2, 1)) * 5 + Число(Сред(ИНН, 3, 1)) * 7 + Число(Сред(ИНН, 4, 1)) * 9 +Число(Сред(ИНН, 5, 1)) * 4 +Число(Сред(ИНН, 6, 1)) * 6 +Число(Сред(ИНН, 7, 1)) * 10 +Число(Сред(ИНН, 8, 1)) * 5 + Число(Сред(ИНН, 9, 1)) * 7; ДлинаКода = ДлинаПроверки-Цел(ДлинаПроверки/11)*11; Если ДлинаКода=10 Тогда ДлинаКода = 0; КонецЕсли; Если Число(Прав(ИНН,1))=ДлинаКода Тогда ЕстьОшибкаВКоде = Ложь; Иначе ЕстьОшибкаВКоде = Истина; КонецЕсли; ИначеЕсли СтрДлина(ИНН)=12 Тогда ДлинаПроверки = Число(Лев(ИНН, 1)) * 13 +Число(Сред(ИНН, 2, 1)) * 17 + Число(Сред(ИНН, 3, 1)) * 19 +Число(Сред(ИНН, 4, 1)) * 23 + Число(Сред(ИНН, 5, 1)) * 29 + Число(Сред(ИНН, 6, 1)) * 31 + Число(Сред(ИНН, 7, 1)) * 37 + Число(Сред(ИНН, 8, 1)) * 41 + Число(Сред(ИНН, 9, 1)) * 43 + Число(Сред(ИНН, 10, 1)) * 47 + Число(Сред(ИНН, 11, 1)) * 53; ДлинаКода = ДлинаПроверки-Цел(ДлинаПроверки/11)*11; Если ДлинаКода=10 Тогда ДлинаКода = 0; КонецЕсли; Если Число(Прав(ИНН,1))=ДлинаКода Тогда ЕстьОшибкаВКоде = Ложь; Иначе ЕстьОшибкаВКоде = Истина; КонецЕсли; Иначе ДлинаПроверки = Число(Лев(ИНН, 1)) * 9 +Число(Сред(ИНН, 2, 1)) * 11 + Число(Сред(ИНН, 3, 1)) * 13 + Число(Сред(ИНН, 4, 1)) * 17 + Число(Сред(ИНН, 5, 1)) * 19 + Число(Сред(ИНН, 6, 1)) * 23 + Число(Сред(ИНН, 7, 1)) * 29 + Число(Сред(ИНН, 8, 1)) * 31; ДлинаКода = ДлинаПроверки-Цел(ДлинаПроверки/11)*11; Если ДлинаКода=10 Тогда ДлинаПроверки = Число(Лев(ИНН, 1)) * 11 +Число(Сред(ИНН, 2, 1)) * 13 + Число(Сред(ИНН, 3, 1)) * 17 +Число(Сред(ИНН, 4, 1)) * 19 + Число(Сред(ИНН, 5, 1)) * 23 + Число(Сред(ИНН, 6, 1)) * 29 + Число(Сред(ИНН, 7, 1)) * 31 + Число(Сред(ИНН, 8, 1)) * 37; ДлинаКода = ДлинаПроверки-Цел(ДлинаПроверки/11)*11; Если ДлинаКода=10 Тогда ДлинаКода = 0; КонецЕсли; Если Число(Прав(ИНН,1))=ДлинаКода Тогда ЕстьОшибкаВКоде = Ложь; Иначе ЕстьОшибкаВКоде = Истина; КонецЕсли; |
|||
2
pumbaEO
02.09.13
✎
14:02
|
||||
3
marinanima
02.09.13
✎
16:07
|
спасибо большое!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |