Контрольный ключ лицевого счета соответствует требованиям. Проверка контрольного ключа в номере лицевого счета (9-й разряд номера счета),
// Проверка контрольного ключа в номере лицевого счета (9-й разряд номера счета),
// алгоритм установлен документом:
// "ПОРЯДОК РАСЧЕТА КОНТРОЛЬНОГО КЛЮЧА В НОМЕРЕ ЛИЦЕВОГО СЧЕТА"
// (утвержден ЦБ РФ 08.09.1997 N 515).
//
// Параметры:
// НомерСчета - Строка - номер банковского счета.
// БИК - Строка - БИК банка в котором открыт счет.
// ЭтоБанк - Булево - если Истина, то проверяется банковский счет, иначе проверяется как счет РКЦ
// (у РКЦ корреспондентский счет не заполняется).
//
// Возвращаемое значение:
// Булево - Истина, если соответствует.
//
Функция КонтрольныйКлючЛицевогоСчетаСоответствуетТребованиям(НомерСчета, БИК, ЭтоБанк = Истина)Экспорт
НомерСчетаСтрока = СокрЛП(НомерСчета);
// При наличии алфавитного значения в 6-ом разряде лицевого
// счета (в случае использования клиринговой валюты) данный символ
// заменяется на соответствующую цифру:
Разряд6 = Сред(НомерСчетаСтрока, 6, 1);
Если НЕ СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(Разряд6) Тогда
АлфавитныеЗначения6гоРазряда = СтрРазделить("А,В,С,Е,Н,К,М,Р,Т,Х", ",", Ложь);
Цифра = АлфавитныеЗначения6гоРазряда.Найти(Разряд6);
Если Цифра = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Разряд6 = Строка(Цифра);
КонецЕсли;
// Для расчета контрольного ключа используется совокупность двух
// реквизитов - условного номера РКЦ (если лицевой счет открыт в РКЦ)
// или кредитной организации (если лицевой счет открыт в кредитной
// организации) и номера лицевого счета.
Если ЭтоБанк Тогда
УсловныйНомерКО = Прав(БИК, 3);
Иначе
УсловныйНомерКО = "0" + Сред(БИК, 5, 2 );
КонецЕсли;
НомерСчетаСтрока = УсловныйНомерКО + Лев(НомерСчетаСтрока,5) + Разряд6 + Сред(НомерСчетаСтрока, 7);
Если СтрДлина(НомерСчетаСтрока) <> 23 Тогда
Возврат Ложь;
КонецЕсли;
Если НЕ СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(НомерСчетаСтрока) Тогда
Возврат Ложь;
КонецЕсли;
ВесовыеКоэффициенты = "71371371371371371371371";
КонтрольнаяСумма = 0;
Для Разряд = 1 По 23 Цикл
Произведение = Число(Сред(НомерСчетаСтрока, Разряд, 1)) * Число(Сред(ВесовыеКоэффициенты, Разряд, 1));
МладшийРазряд = Число(Прав(Строка(Произведение), 1));
КонтрольнаяСумма = КонтрольнаяСумма + МладшийРазряд;
КонецЦикла;
// При получении суммы, кратной 10 (младший разряд равен 0), значение
// контрольного ключа считается верным.
Возврат Прав(Строка(КонтрольнаяСумма), 1) = "0";
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ИННСоответствуетТребованиям (БСП)
КППСоответствуетТребованиям (БСП)
ОГРНСоответствуетТребованиям (БСП)
Проверка, есть ли ключ у соответствия
КодПоОКПОСоответствуетТребованиям (БСП)
СтраховойНомерПФРСоответствуетТребованиям (БСП)