Проверка счетов IBAN Беларусь

12.06.17

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

С 04.07.2017 в Беларуси вводится новая нумерация банковских счетов. Обработка поможет расчитать контрольную цифру, и проверить введенный счет на правильность. + Небольшое количество инфы по переходу

Скачать исходный код

Наименование Файл Версия Размер
Проверка счетов IBAN Беларусь:
.epf 6,45Kb
3
.epf 1.0 6,45Kb 3 Скачать

Итак. Официально и обо всем можно прочитать здесь: https://www.nbrb.by/payment/IBANBIC

О порядке расчета контрольной цифры и порядке проверки счета: https://www.nbrb.by/Legislation/documents/P_440.pdf

Таблица соответствия текущих банковских кодов кодам BIC лежит здесь: https://www.nbrb.by/payment/IBANBIC/ConformanceTableBICOldAndNew.docx

09.06.2017 Нацбанк опубликовал инструмент для пакетной обработки счетов старых в новые: http://iban.bisc.by/

Некоторые банки самостоятельно предоставляют онлайн-калькуляторы новых счетов из старых.

Обработка умеет расчитывать контрольную цифру, а также проверять счет на правильность.

Часто можно увидеть некоторую корреляцию между старыми и новыми счетами, но у различных банков она разная. Инвестбанк, судя по всему, вообще выдал новые номера.

Ниже я выкладываю код обработки для тех кто любит все бесплатно, но при наличии у вас $m буду благодарен, если поделитесь, путем загрузки обработки. Ибо сам обычно нищенствую.

&НаКлиенте
Функция ЧетыреЗнакаВХвост(СчетДляПроверки)

    ЧетыреЗнака = ""+Лев(СчетДляПроверки, 4);
    ЧистаяСтрока = Сред(СчетДляПроверки, 5);
    
    Возврат ""+ЧистаяСтрока+ЧетыреЗнака;

КонецФункции

&НаКлиенте
Функция ПостроитьМатрицуЗнаков()
	МатрицаЗнаков = Новый Соответствие;
	МатрицаЗнаков.Вставить("0","0");
	МатрицаЗнаков.Вставить("1","1");
	МатрицаЗнаков.Вставить("2","2");
	МатрицаЗнаков.Вставить("3","3");
	МатрицаЗнаков.Вставить("4","4");
	МатрицаЗнаков.Вставить("5","5");
	МатрицаЗнаков.Вставить("6","6");
	МатрицаЗнаков.Вставить("7","7");
	МатрицаЗнаков.Вставить("8","8");
	МатрицаЗнаков.Вставить("9","9");
	МатрицаЗнаков.Вставить("A","10");
	МатрицаЗнаков.Вставить("B","11");
	МатрицаЗнаков.Вставить("C","12");
	МатрицаЗнаков.Вставить("D","13");
	МатрицаЗнаков.Вставить("E","14");
	МатрицаЗнаков.Вставить("F","15");
	МатрицаЗнаков.Вставить("G","16");
	МатрицаЗнаков.Вставить("H","17");
	МатрицаЗнаков.Вставить("I","18");
	МатрицаЗнаков.Вставить("J","19");
	МатрицаЗнаков.Вставить("K","20");
	МатрицаЗнаков.Вставить("L","21");
	МатрицаЗнаков.Вставить("M","22");
	МатрицаЗнаков.Вставить("N","23");
	МатрицаЗнаков.Вставить("O","24");
	МатрицаЗнаков.Вставить("P","25");
	МатрицаЗнаков.Вставить("Q","26");
	МатрицаЗнаков.Вставить("R","27");
	МатрицаЗнаков.Вставить("S","28");
	МатрицаЗнаков.Вставить("T","29");
	МатрицаЗнаков.Вставить("U","30");
	МатрицаЗнаков.Вставить("V","31");
	МатрицаЗнаков.Вставить("W","32");
	МатрицаЗнаков.Вставить("X","33");
	МатрицаЗнаков.Вставить("Y","34");
	МатрицаЗнаков.Вставить("Z","35");
	
	Возврат МатрицаЗнаков;
КонецФункции

&НаКлиенте
Функция ПолучитьКонтрольноеЧисло(СчетДляПроверки)
	
	ВхСчет = СокрЛП(""+Прав(СчетДляПроверки, 24)+"BY00");
	
    ДлинуПроверил = ?(СтрДлина(ВхСчет) = 28, Истина, Ложь);
    КонтрольноеЧисло = "";
    Если ДлинуПроверил Тогда
       
		МатрицаЗнаков = ПостроитьМатрицуЗнаков();
		
		СтрокаСчета = "";
		Ном = 0;
        Для Ном = 1 По СтрДлина(СчетДляПроверки) Цикл
        	СтрокаСчета = СтрокаСчета + МатрицаЗнаков.Получить(Сред(ВхСчет, Ном, 1));    
        КонецЦикла; 
		МатрицаЗнаков = Неопределено;
		
		Число123 = Число(СтрокаСчета);
		Число124 = Цел(Число123/97);
		Число125 = Число124*97;
		Число126 = Число123-Число125;
		Число127 = 98 - Число126;
		КонтрольноеЧисло = Прав("00"+Число127,2);
	КонецЕсли;
	Возврат КонтрольноеЧисло;
КонецФункции

&НаКлиенте
Функция ПроверитьСчетIBAN(СчетДляПроверки)
	
	ВхСчет = СокрЛП(СчетДляПроверки);
	
    ДлинуПроверил = ?(СтрДлина(ВхСчет) = 28, Истина, Ложь);
    Правильно = ЛОЖЬ;
    Если ДлинуПроверил Тогда
        
		ЧетыреЗнака = ""+Лев(ВхСчет, 4);
    	ЧистаяСтрока = ""+Сред(ВхСчет, 5)+ЧетыреЗнака;
		
		МатрицаЗнаков = ПостроитьМатрицуЗнаков();
		
        Ном = 0;
        СтрокаСчета = "";
        Для Ном = 1 По СтрДлина(ЧистаяСтрока) Цикл
        
            СтрокаСчета = СтрокаСчета + МатрицаЗнаков.Получить(Сред(ЧистаяСтрока, Ном, 1));    
        
        КонецЦикла; 
		МатрицаЗнаков = Неопределено;
		
		Число132 = Число(СтрокаСчета);
		Число133 = Цел(Число132/97);
		Число134 = Число133*97;
		Число135 = Число132-Число134;
		Правильно = (Число135 = 1);
	КонецЕсли;
	Возврат Правильно;
КонецФункции

&НаКлиенте
Процедура Проверить(Команда)
	
	Сообщить(ПолучитьКонтрольноеЧисло(СчетДляПроверки));
	
	Сообщить(ПроверитьСчетIBAN(СчетДляПроверки))
	
КонецПроцедуры

См. также

Автоматическая обработка документов по банку при загрузке банковской выписки в 1С

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

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

15000 руб.

21.03.2023    8807    50    12    

48

Обмен с клиентом банка для БП 3.0, ERP 2.4, ERP 2.5 с дополнительными правилами загрузки

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

Выписка клиент-банка загружается и обрабатывается по Вашим правилам. Заполнение реквизитов документов, анализ назначения платежа. Работа с клиент банком не отличается от типового варианта, а документы автоматически заполняются так, как нужно вам. Дополнительная обработка, работающая совместно с основным расширением позволяет подключать собственные произвольные алгоритмы.

20400 руб.

03.04.2013    123246    247    377    

161

Обмен с клиентом банка для Беларуси

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

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

10.10.2017    36737    71    Xershi    41    

58

Обмен 1С с СУФД (УФК)

Банковские операции Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Выгрузка платежных поручений из коммерческих программ 1С в Казначейство (СУФД). Загрузка выписок из Казаначейства (СУФД) в 1С.

15000 руб.

07.11.2017    97500    302    82    

324

Загрузка банковской выписки из Excel и формирование файла формата 1CClientBankExchange (kl_to_1c)

Банковские операции Обмен с интернет-банком Загрузка и выгрузка в 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    42158    130    52    

64

Обработка обслуживания Терминал системы быстрых платежей - оплата по QR коду для УТ10.х, УПП 1.3.х, КА 1.х, Розница 1.х

Банковские операции СБП. Оплата по QR-коду Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Платные (руб)

Система быстрых платежей - мгновенный способ оплаты чека по QR-коду комиссия от 0,4 % до 0,7%. Обработка обслуживания Система быстрых платежей оплата по QR коду позволяет  подключить 1С:Управление торговлей редакция 10 к Системе быстрых платежей для приема оплаты. Может быть использована в 1С: Управление производственным предприятием 1.3 и 1С: Комплексная автоматизация 1.1 и 1С:Розница 1.х..

10400 руб.

16.02.2022    30417    40    144    

50

Загрузка в БГУ из УРМ "Криста"

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

Обработки для загрузки данных из УРМ "Криста" в бухгалтерию государственного учреждения редакция 2.0. Есть Демо доступ на вкладке Бесплатные файлы на 1 месяц со дня получения демонстрационного ключа регистрации. Поддерживает ПО "Web-исполнение" от НПО "Криста".

4800 руб.

19.06.2013    38844    136    102    

30

Обработка обслуживания терминалов пин-пад Ingenico IPP320/350 для УТ 10.х

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

Обработка обслуживания эквайринговых терминалов пин-пад Ingenico и АТОЛ PT-5 ( ПО Arcus2) позволяет подключить банковские терминалы Ingenico и АТОЛ PT-5 к 1С:Управление торговлей редакция 10. Может быть использована в 1С: Управление производственным предприятием 1.3 и 1С: Комплексная автоматизация 1.1 и 1С:Розница 1.х

4200 руб.

14.05.2019    60147    136    178    

121
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. MSConfig 11.05.17 15:42 Сейчас в теме
IBAN.
Не очень сильно вникал в суть разработки, но название приятное. Душевное название я бы сказал. Плюс за хороший нейминг!
2. GOshaSaveiko 39 11.05.17 16:01 Сейчас в теме
(1) Для программеров и юзеров оно действительно как называется, так и выглядит, но для справки:
IBAN (International Bank Account Number) – это номер банковского счета клиента в банке или другом финансовом учреждении, присвоенный в соответствии с международным стандартом ISO 13616:2007
3. merlin1975 2 11.05.17 18:58 Сейчас в теме
Интересненько.
Только от себя добавил удаление пробелов в счете, ибо нашел счет в "красивом" виде с пробелами.
4. GOshaSaveiko 39 11.05.17 23:03 Сейчас в теме
(3) ну, тут, скорее, методология, чем обработка. Вряд ли вы ее именно в таком чистом виде использовать. Но 28 символов длины практически обязывают проверять за человеком.
Для удобства восприятия человеком, код IBAN записывается, как правило, группами по 4 знака, разделяемых пробелами, начиная с первого. В платёжных и иных документах в электронном формате IBAN вводится без пробелов.
По-идее пробела или любого другого символа кроме цифр и букв в соответствии нет. Если значение в соответствии не найдено, то метод Получить() вернёт неопределено. А в свою очередь "строка"+неопределено вернёт просто "строка". По-идее должен проглотить без модификаций. И пробелы и неразрывные пробелы и чёрточки и точечки и что там ещё кому на голову упадет.
5. merlin1975 2 11.05.17 23:28 Сейчас в теме
Посидел вечерок и на основе Вашей обработки написал для 8.2 и 7.7 и выяснил, что в 8-ке надобно использовать СтрокаСчета = "0" и преобразование Число(СтрокаСчета)+Число(МатрицаЗнаков.Получить(Сред(ЧистаяСтрока, Ном, 1))) иначе она все подряд лепит (по крайней мере у меня). Выяснил это расчетным путем в 7-ке. Стал выводить все расчеты в сообщения и удивился...
6. GOshaSaveiko 39 11.05.17 23:34 Сейчас в теме
(5)
число("1")+число("10")
// = 11 
. Нам же не надо символы складывать между собой. Нам надо получить слепленную строку "110" и в самом конце получить огромное число 110.
Мы, как бы подменяем буквы цифрами. Цифры в соответствии для фильтрации левых символов.
В 7.7 мне это видится как отдельная функция с чередой
Если символ = "1" тогда
Возврат "1";
ИначеЕсли символ = "2" тогда
Возврат "2";
//....
ИначеЕсли символ = "А" тогда
Возврат "10";
//....
Иначе возврат ""; конецесли
Показать
" *не судите. Пишу с телефона.
Кстати Число132, Число135 - это не просто от балды названия переменных. Это пункты 1.3.2, 1.3.5 из методологии расчета контрольного числа в документах нацбанка.
7. merlin1975 2 12.05.17 10:08 Сейчас в теме
Благодарю!
Теперь понял, а то суммировал... В семерке я реализовал через ТЗ и обращение к ней.
8. Bonia1979 13.05.17 11:25 Сейчас в теме
Из вышеперечисленных файлов немного подкорректировал файл банков добавил адрес и город в формате Dbf и xls .Также присутствует универсальная обработка загрузи из DBF файлов для 1с7,7 Думаю пригодится ребятам. https://yadi.sk/d/d-KwToRh3J6sX8
daraiznau; +1 Ответить
9. merlin1975 2 13.05.17 13:34 Сейчас в теме
10. wtlz 272 31.05.17 12:01 Сейчас в теме
Спасибо! Очень пригодилось!
11. GOshaSaveiko 39 31.05.17 15:50 Сейчас в теме
12. Dnki 4 01.06.17 06:35 Сейчас в теме
Буду скачивать. Сейчас над этой темой работаем.
13. GOshaSaveiko 39 01.06.17 15:45 Сейчас в теме
(12), я так понимаю, сейчас почти все над этой темой работают. )))
14. wtlz 272 14.06.17 10:54 Сейчас в теме
http://iban.bisc.by - появилась такая пакетная штука. Через WSDL к ней кто-нибудь научился обращаться (напрямую из 1С подсовывать входной файл и забирать результат?)
15. wtlz 272 14.06.17 12:38 Сейчас в теме
(14) сам себе отвечу ответом от НБРБ:
работа калькулятора в качестве веб-сервиса не предусмотрена и реализовываться не будет.
AlenkaZu; +1 Ответить
Оставьте свое сообщение