Алгоритм используется, например, для вычисления контрольной цифры номера пластиковой карты, кода IMEI и т.п.
Функция ПроверитьНомерПоАлгоритмуЛуна(Номер) Экспорт
// Удаляем все нецифровые символы из номера
ОчищенныйНомер = СтрЗаменить(Номер, " ", "");
ОчищенныйНомер = СтрЗаменить(ОчищенныйНомер, "-", "");
ОчищенныйНомер = СтрЗаменить(ОчищенныйНомер, "/", "");
// Проверяем, что номер не пустой и содержит только цифры
Если ПустаяСтрока(ОчищенныйНомер) Тогда
Возврат Ложь;
КонецЕсли;
Для Позиция = 1 По СтрДлина(ОчищенныйНомер) Цикл
Символ = Сред(ОчищенныйНомер, Позиция, 1);
Если Символ < "0" Или Символ > "9" Тогда
Возврат Ложь;
КонецЕсли;
КонецЦикла;
// Реализация алгоритма Луна
Сумма = 0;
Позиция = СтрДлина(ОчищенныйНомер);
ЧетнаяПозиция = Ложь;
Пока Позиция > 0 Цикл
Цифра = Число(Сред(ОчищенныйНомер, Позиция, 1));
Если ЧетнаяПозиция Тогда
Цифра = Цифра * 2;
Если Цифра > 9 Тогда
Цифра = Цифра - 9;
КонецЕсли;
КонецЕсли;
Сумма = Сумма + Цифра;
ЧетнаяПозиция = Не ЧетнаяПозиция;
Позиция = Позиция - 1;
КонецЦикла;
Возврат (Сумма % 10 = 0);
КонецФункции
ПриЗагрузкеКлассификатора (БСП)
МенеджерКриптографииАлгоритмыУстановлены (БСП)
Алгоритм загрузки в документ "Корректировка регистров"
Реализовать возможность давать подсказки алгоритму определения типизации переменных.
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)