Перевод номера банковского счета в стандарт IBAN для Украины

09.08.19

Учетные задачи - Банковские операции

Перевод номера банковского счета в стандарт IBAN (только для Украины). Функции для повторного использования и демо-обработка для платформы 1С 8.х. Тестировалась на платформе 1С 8.3.12.1529

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Перевод номера банковского счета в стандарт IBAN для Украины
.epf 7,07Kb
3
3 Скачать (1 SM) Купить за 1 850 руб.

Формат кода IBAN включает

  • 1—2 символы — код страны, где находится банк получателя (в соответствии со стандартом ISO 3166-1 alpha-2)
  • 3—4 символы — контрольное уникальное число IBAN, рассчитываемое по стандарту (ISO 7064)
  • 5—34 символы — Basic Bank Account Number (BBAN), базовый номер банковского счёта, включающий, как минимум, сам номер счёта, так и признак банка получателя (в том числе код филиала банка). Длина и содержание этой части IBAN зависят от выбора конкретной страны, но ограничиваются максимум 30 знаками.

Источник: https://ru.wikipedia.org/wiki/IBAN

Для Украины длина номера IBAN 29 символов

Предпочтительный алгоритм:
   1. Проверить, что общая длина IBAN является правильной согласно стране. Если нет, IBAN является недействительным.
   2. Замените две контрольные цифры на 00 (например, UA00 для Украины).
   3. Переместить четыре начальных символа в конец строки.
   4. Заменить буквы в строке цифрами, расширив строку при необходимости, чтобы A или a = 10, B или b = 11 и Z или z = 35. Таким образом, каждый алфавитный символ заменяется 2 цифрами
   5. Преобразовать строку в целое число (то есть игнорировать начальные нули).
   6. Вычислить mod-97 из нового числа, в результате чего получится остаток.
   7. Вычислить остаток от 97; полученный результат отнять от 98 и использовать результат для двух контрольных цифр. Если результатом является однозначное число, добавьте к нему начальный 0, чтобы сделать двузначное число.

Поэтапный расчет D mod 97 может быть выполнен разными способами. Один из таких способов заключается в следующем:

   1. Начиная с самой левой цифры D, составьте число, используя первые 9 цифр, и назовите его N.
   2. Рассчитать N мод 97.
   3. Создайте новый 9-значный N путем объединения вышеуказанного результата (шаг 2) со следующими 7 цифрами D. Если в D осталось менее 7 цифр, но хотя бы один, то создайте новый N, который будет иметь менее 9 цифры из вышеприведенного результата (шаг 2), за которыми следуют оставшиеся цифры D
    4. Повторяйте шаги 2–3, пока все цифры D не будут обработаны

Результатом окончательного расчета на шаге 2 будет D mod 97 = N mod 97.

 

пример алгоритма mod 97

В этом примере вышеупомянутый алгоритм для D mod 97 будет применен к D = 3214282912345698765432161182. (Цифры имеют цветовую кодировку, чтобы помочь описанию ниже.) Если результат равен единице, IBAN, соответствующий D, проходит проверку контрольной цифры.

    Построить N из первых 9 цифр D

        N = 321428291

    Рассчитать N мод 97 = 70
    Создайте новый 9-значный N из вышеуказанного результата (шаг 2), а затем следующие 7 цифр D.

        N = 702345698

    Рассчитать N мод 97 = 29
    Создайте новый 9-значный N из приведенного выше результата (шаг 4), а затем следующие 7 цифр D.

        N = 297654321

    Рассчитать N мод 97 = 24
    Создайте новый N из приведенного выше результата (шаг 6), а затем оставшиеся 5 цифр D.

        N = 2461182

    Рассчитать N мод 97 = 1

Начиная с шага 8, конечный результат - D mod 97 = 1

Для проверки генерации IBAN можно использовать ряд сайтов, например, https://bank.codes/iban/generate/ukraine/

Программный код обработки:

Функция ПеревестиБуквыВЦифрыДляМсчета(знак)
	Если найти("0123456789", "" + знак)>0 тогда 
		//это изначально цифра
		возврат "" + знак;
	Иначе
		//буква
		возврат "" + (10 + (кодсимвола(нрег(знак),1)-кодсимвола("a",1)));
	КонецЕсли;	
КонецФункции	

Функция КонтрольнаяСумма(кс)
	Если стрдлина(кс)<>29 Тогда
		Сообщить ("номер счета не для Украины");
		Возврат	"00";
	КонецЕсли;	
	//переставляем UA00 в конец
	кс = сред(кс, 5, 25) + сред(кс,1,4);
	кс2 = "";
	для сч = 1 по 29 цикл
		кс2 = кс2 + ПеревестиБуквыВЦифрыДляМсчета(сред(кс,сч, 1));
	конеццикла;	
	//алгоритм mod 97
	для сч = 0 по 10 цикл
		кс2 = ("" + (число(сред(кс2,1,9)) % 97) + сред(кс2, 10));
	конеццикла;
	возврат прав("00"+(98-число(кс2)),2);
КонецФункции	

Функция СчетВМеждународномФормате(счет, мфо)
	счет_ = сокрлп(счет);
	мфо_ = сокрлп(мфо);
	длина_счет = стрдлина(счет_);
	длина_мфо = стрдлина(мфо_);
	длинанулей = 29 - 2 - 2 - длина_мфо -длина_счет;
	кс = КонтрольнаяСумма("UA00" + мфо_ + прав("00000000000000000000000000000", длинанулей) + счет_);
	возврат "UA" + кс + мфо_ + прав("00000000000000000000000000000", длинанулей) + счет_;
КонецФункции

Процедура КнопкаВыполнитьНажатие(Кнопка)
	IBAN = СчетВМеждународномФормате(СтарыйСчет,мфо);
КонецПроцедуры

 

IBAN контрольная сумма

См. также

Банковские операции Обмен с интернет-банком Эквайринг/ридер магнитных карт Программист Бухгалтер Пользователь Платформа 1С v8.3 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Устали вручную дозаполнять и корректировать документы по банку после загрузки банковской выписки? С помощью правил обработки банковской выписки вы сможете автоматически определять правильный вид хозяйственной операции, заполнять расшифровку, аналитику платежа и многое другое.

15000 руб.

21.03.2023    11349    74    16    

63

SALE! 20%

Обмен с интернет-банком Банковские операции Программист Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Модуль представляет собой комплексную автоматизацию обмена данными 1С с банком для БП 3.0, ERP 2.4, ERP 2.5. Выписка клиент-банка загружается и обрабатывается по Вашим правилам. Заполнение реквизитов документов, анализ назначения платежа. Работа с клиент банком не отличается от типового варианта, а документы автоматически заполняются так, как нужно вам. Дополнительная обработка, работающая совместно с основным расширением позволяет подключать собственные произвольные алгоритмы.

20400 16320 руб.

03.04.2013    125020    253    377    

164

Банковские операции Обмен с интернет-банком Бухгалтер Платформа 1С v8.3 Бухгалтерский учет Конфигурации 1cv8 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Беларусь Россия Бухгалтерский учет Платные (руб)

Типовая обработка "Клиент-банк" из конфигурации 1С "Бухгалтерия для Беларуси, редакция 2.1" корректно работает с выписками только банка "Дабрабыт", до 28.01.2019 "Москва-Минск". А бухгалтеру нужно работать и с другими банками и с другими конфигурациями. Для этого было разработано расширение, которое позволит решить данную проблему!

10.10.2017    38000    81    Xershi    41    

68

Банковские операции Обмен с интернет-банком Загрузка и выгрузка в Excel Программист Бухгалтер Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Платные (руб)

Обработка создания файла по стандарту обмена с системами "Клиент банка" kl_to_1c.txt Формат файла обмена Российская Федерация, версия 1.03 При восстановлении учета в случае отсутствия в 1с банковских выписок (например, р/с в банке закрыт в связи с банкротством и доступ к выгрузке из клиент-банка невозможен), можно запросить у банка выписку за период в формате Excel. С помощью этой обработки создается файл формата 1CClientBankExchange, в 1с77 он назывался kl_to_1c.txt который загружается штатными средствами в 1с8. При этом будут созданы загружаемые контрагенты и их р/с.

3840 руб.

19.04.2019    44185    150    53    

83

Пакетная печать Банковские операции Кассовые операции Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Обработка для групповой печати чеков ККМ с настройкой, загруженных из банковской выписки. На основании документа Поступление на расчетный счет!

4800 руб.

21.08.2019    20286    75    10    

24
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. eact 20.08.19 10:39 Сейчас в теме
Автор, есть проверка генерации для 1С? (Проверка счета на корректность IBAN)
4. alur 22 10.09.19 16:38 Сейчас в теме
(1)условие проверки: число счета (с перекодированными символами) % 97 = 1
2. alexpot 6 20.08.19 19:37 Сейчас в теме
Номер можно проверить на сайте, например, https://bank.codes/iban/generate/ukraine/. В обработке только перевод старого номера счета в IBAN
3. alur 22 10.09.19 16:34 Сейчас в теме
Всё гораздо проще:
Функция ПолучитьНомерСчетаIBAN(Страна, МФО, РСчет)
	
	сРезультат = СтроковыеФункцииКлиентСервер.ДополнитьСтроку(МФО, 6, "0", "Слева")
	+ СтроковыеФункцииКлиентСервер.ДополнитьСтроку(РСчет, 19, "0", "Слева");
	
	СтрокаСтраны = Формат(КодСимвола(Сред(Страна, 1, 1)) - 55, "ЧЦ=2; ЧДЦ=0; ЧН=; ЧВН=; ЧГ=")
	+ Формат(КодСимвола(Сред(Страна, 2, 1)) - 55, "ЧЦ=2; ЧДЦ=0; ЧН=; ЧВН=; ЧГ=");
	
	Если Не СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(сРезультат + СтрокаСтраны, Истина, Ложь) Тогда
		Возврат РСчет;
	КонецЕсли;
	
	ЧислоРасчета = Число(сРезультат + СтрокаСтраны);
	КонтрольнаяСумма = 98 - ЧислоРасчета * 100 % 97;
	СтрокаКС = Формат(КонтрольнаяСумма, "ЧЦ=2; ЧДЦ=0; ЧН=; ЧВН=; ЧГ=");
	
	сРезультат = Страна + СтрокаКС + сРезультат;
	
	Если УправлениеДенежнымиСредствами.НомерБанковскогоСчетаСоответствуетСтандартуIBAN(сРезультат) Тогда
		Возврат сРезультат;
	Иначе
		Возврат РСчет;
	КонецЕсли;
	
КонецФункции
Показать
5. eact 16.09.19 12:25 Сейчас в теме
Может есть у кого функция на проверку корректности номера счета стандарту IBAN по контрольной!!! сумме (не просто на количество символов и присутствие символов "UA")?
6. alur 22 16.09.19 13:35 Сейчас в теме
(5) как-то так:
Функция НомерБанковскогоСчетаСоответствуетСтандартуIBAN(сIBAN)
	
	сIBANРаскодированный = Сред(сIBAN, 5)
	+ Формат(КодСимвола(Сред(сIBAN, 1, 1)) - 55, "ЧЦ=2; ЧН=; ЧВН=")
	+ Формат(КодСимвола(Сред(сIBAN, 2, 1)) - 55, "ЧЦ=2; ЧН=; ЧВН=")
	+ Сред(сIBAN, 3, 2);
	
	Если СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(сIBANРаскодированный) Тогда
		Возврат сIBANРаскодированный % 97 = 1;
	Иначе
		Возврат Ложь;
	КонецЕсли;
	
КонецФункции
Показать
Оставьте свое сообщение