1С:Бухгалтерия,например, версии 3.70.50 и до 80-х версий - распознавание зашифрованных банковских счетов у них старенькое и, соответственно, обработка, вшитая в типовую 1С:Бухгалтерию,- так же старенькая....
А с начала этого (2021г) - бюджетники (налоговая и иже с ними) перешли на новые счета в своих банках (у них поменялся корр.счет и сам расчетный счет)...
Так вот, если у Вас типовая 1С:Бухгалтерия застыла в старых версиях и пока НИКАК не может обновиться, например, по причине сильной переписки типовой конфигурации, то стандартными обработками, вшитыми в конфигурацию, - невозможно обновить Классификатор банков, а следовательно в бухгалтерии - не смогут создать новые расчетные банковские счета для контрагентов, таким образом бухгалтерам придется вручную в клиент банке рисовать платежки...
Здесь на Инфостарте есть парочка готовых обработок, которые могут загружать Классификаторы Банков не только с сайта 1С, но с РБК и др. Я выбрала вот эту: //infostart.ru/public/1208625/
Но оказалось, что данная обработка не может помочь мне загрузить из интернета ни с сайта 1с ни с сайта РБК....может потому что у меня серверный вариант базы, но пробовала и на файловой - нет, нужно дописать код корректной загрузки с сайта, если кто шарит, то дорисуйте - будет здорово.
Меня вполне устраивала загрузка не с сайта, а напрямую из zip-архива на компьютере (просто я заранее залила на комп архивы из 1с и с РБК - см. скрин как из 1С слить архив банка:
). Но здесь появилась следующая проблема: скаченная обработка обращается к готовой ТИПОВОЙ обработке "ЗагрузкаКлассификатораБанков"......а у меня конфигурация старая и переписанная - у меня изначально в конфигурации эта обработка старая и, конечно, она не будет работать!....какой тогда смысл?
Нашла выход: установила свежую версию демо 1С:Бухгалтерия - и по кусочкам затягивала в исходную скачанную обработку - программный код из типовой обработки "ЗагрузкаКлассификатораБанков" свежей версии 1сБух. Все четко! Получилось загрузить из архива Классификатор Банков!!!! Ураааа!!!
Но, внутри моей версии 1С: 1) старый распознаватель расшифровки банковских счетов; 2) в справочнике Классификатор Банков - не хватает нового реквизита БИКРКЦ.....................ну и ладно, так как конфигурация у нас все равно уже переписанная, то чуток нашего кода ей уже не повредит))
Итак, начнем: в нашей конфигурации открываем справочник "КлассификаторБанков" и добавляем новый реквизит БИКРКЦ, тип которого ссылка на этот же справочник (см. скрин)
Далее, открываем в конфигураторе справочник"БанковскиеСчета", открываем форму Элемента, далее модуль формы, находим Процедуру ПередЗаписью(), там идет обращение к другой процедуре БанковскиеСчетаФормыКлиент.ПередЗаписью(Объект.НомерСчета, БИКБанка, Объект.Ссылка, Отказ), правая клавиша мышки на эту процедуру и "Перейти к определению", нас переносит в Общий модуль на следующую процедуру ПередЗаписью(НомерСчета, БИКБанка, СсылкаНаОбъект, Отказ) Экспорт, внутри этой процедуры - есть обращение к функции БанковскиеПравила.ЭтоКорректныйСчетБанкаРФ(НомерСчета, БИКБанка), вновь кликаем по ней правой кнопкой мышки-"Перейти к определению"-летим внутрь этой функции, а внутри нее - еще одно обращение к другой функции ЭтоКорректныйСчетБанкаРФ(НомерСчета, КодБанка) Экспорт, летим вновь внутрь этой и видим ссылку еще на одну функцию ПроверитьКонтрольныйКлючВНомереБанковскогоСчета(НомерСчета, КодБанка), прыгаем в нее, и вуа ля! то, что мы искали!!!
Теперь все, что находится внутри функции ПроверитьКонтрольныйКлючВНомереБанковскогоСчета(НомерСчета, КодБанка) - затираем (ставим // вначале каждой строки), и копируйте вот отсюда код и вставляйте его внутрь функции:
// Письмо ЦБР от 8 сентября 1997 г. N 515
Если СтрокаСоответствуетФормату = Неопределено Тогда
СтрокаСоответствуетФормату = СтрокаСоответствуетФорматуБанковскогоСчета(НомерСчета);
КонецЕсли;
Если Не СтрокаСоответствуетФормату Тогда
Возврат Ложь;
КонецЕсли;
Если Не ПроверитьДлинуБИК(БИК) Тогда
Возврат Ложь;
КонецЕсли;
Если Не ПроверитьДлинуНомераСчета(НомерСчета) Тогда
Возврат Ложь;
КонецЕсли;
Если ЭтоБИКТОФК(БИК) И ЭтоКазначейскийСчет(НомерСчета) Тогда
// Ключевание не предусмотрено.
Возврат Истина;
КонецЕсли;
// 2. Для расчета контрольного ключа используется совокупность двух реквизитов -
// условного номера РКЦ (если лицевой счет открыт в РКЦ)
// или кредитной организации (если лицевой счет открыт в кредитной организации)
// и номера лицевого счета.
// 3. Значение трехзначного условного номера РКЦ соответствует разрядам 5 и 6
// банковского идентификационного кода (БИК), дополненным слева нулем до трех разрядов.
// 4. Значение условного номера кредитной организации соответствует разрядам 7, 8 и 9 БИК.
Если ЭтоОтделениеЦентральногоБанка(БИК) Тогда
УсловныйНомер = "0" + Сред(БИК, 5, 2);
Иначе
УсловныйНомер = Сред(БИК, 7, 3);
КонецЕсли;
Если Не СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(УсловныйНомер) Тогда
Возврат Ложь;
КонецЕсли;
// Контрольный ключ (К)
// ^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^88; Порядковые номера разрядов ^72;^72;^72;^72;^72;^72;^88;
// ^84;^72;_16;^72;_16;^72;^88; ^84;^72;_16;^72;_16;^72;_16;^72;_16;^72;_16;^72;_16;^72;_16;^72;_16;_24;_16;^72;^72;_16;^72;^72;_16;^72;^72;_16;^72;^72;_16;^72;^72;_16;^72;^72;_16;^72;^72;_16;^72;^72;_16;^72;^72;_16;^72;^72;_16;^72;^72;^88; ^74;
// ^74;1^74;2^74;3^74; ^74;1^74;2^74;3^74;4^74;5^74;6^74;7^74;8^74;9^74;10^74;11^74;12^74;13^74;14^74;15^74;16^74;17^74;18^74;19^74;20^74;<^72;^96;
// ^92;^72;_24;^72;_24;^72;^96; ^92;^72;_24;^72;_24;^72;_24;^72;_24;^72;_24;^72;_24;^72;_24;^72;_24;^72;_24;^72;^72;_24;^72;^72;_24;^72;^72;_24;^72;^72;_24;^72;^72;_24;^72;^72;_24;^72;^72;_24;^72;^72;_24;^72;^72;_24;^72;^72;_24;^72;^72;^96;
// ^74; ^74; ^74; Номер лицевого счета ^74;
// ^74; ^74; ^92;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^96;
// ^74; ^92;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;
// ^74; Условный номер РКЦ или кредитной организации
// ^92;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;
ВсеСимволы = УсловныйНомер + НомерСчета;
ТипЧисло = Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(1, 0, ДопустимыйЗнак.Неотрицательный));
ПроверяемыйНаборЦифр = Новый Массив(23);
Для НомерСимвола = 1 По 23 Цикл
Цифра = ТипЧисло.ПривестиЗначение(Сред(ВсеСимволы, НомерСимвола, 1));
ПроверяемыйНаборЦифр[НомерСимвола-1] = Цифра;
КонецЦикла;
// 8. При наличии алфавитного значения в 6-ом разряде лицевого счета
// (в случае использования клиринговой валюты) данный символ заменяется на соответствующую цифру:
// ^84;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;_16;^72;^72;_16;^72;_16;^72;_16;^72;_16;^72;_16;^72;_16;^72;_16;^72;_16;^72;_16;^72;^88;
// ^74;Допустимое алфавитное значение 6-го разряда^74; А^74;В^74;С^74;Е^74;Н^74;К^74;М^74;Р^74;Т^74;Х^74;
// ^74;номера лицевого счета ^74; ^74; ^74; ^74; ^74; ^74; ^74; ^74; ^74; ^74; ^74;
// _00;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;_32;^72;^72;_32;^72;_32;^72;_32;^72;_32;^72;_32;^72;_32;^72;_32;^72;_32;^72;_32;^72;_08;
// ^74;Соответствующая цифра ^74; 0^74;1^74;2^74;3^74;4^74;5^74;6^74;7^74;8^74;9^74;
// ^92;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;^72;_24;^72;^72;_24;^72;_24;^72;_24;^72;_24;^72;_24;^72;_24;^72;_24;^72;_24;^72;_24;^72;^96;
// После выполнения замены расчет и проверка значения контрольного ключа производится в соответствии с п. 6 и п. 7.
АлфавитныйСимвол = Сред(НомерСчета, 6, 1);
Если Не СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(АлфавитныйСимвол) Тогда
ЦифраШестогоРазряда = СтрНайти(ДопустимыеАлфавитныеСимволыНомераБанковскогоСчета(), АлфавитныйСимвол);
Если ЦифраШестогоРазряда = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
ЦифраШестогоРазряда = ЦифраШестогоРазряда - 1;
ПроверяемыйНаборЦифр[3+6] = ЦифраШестогоРазряда;
КонецЕсли;
// 5. Контрольный ключ рассчитывается с использованием весовых коэффициентов,
// устанавливаемых каждому разряду.
// Порядковые номера разрядов ^72;^72;^72;^72;^72;^72;^88;
// ^84;^72;_16;^72;_16;^72;^88; ^84;^72;_16;^72;_16;^72;_16;^72;_16;^72;_16;^72;_16;^72;_16;^72;_16;^72;_16;^72;^72;_16;^72;^72;_16;^72;^72;_16;^72;^72;_16;^72;^72;_16;^72;^72;_16;^72;^72;_16;^72;^72;_16;^72;^72;_16;^72;^72;_16;^72;^72;^88; ^74;
// ^74;1^74;2^74;3^74; ^74;1^74;2^74;3^74;4^74;5^74;6^74;7^74;8^74;9^74;10^74;11^74;12^74;13^74;14^74;15^74;16^74;17^74;18^74;19^74;20^74;<^72;^96;
// _00;^72;_32;^72;_32;^72;_08; _00;^72;_32;^72;_32;^72;_32;^72;_32;^72;_32;^72;_32;^72;_32;^72;_32;^72;_32;^72;^72;_32;^72;^72;_32;^72;^72;_32;^72;^72;_32;^72;^72;_32;^72;^72;_32;^72;^72;_32;^72;^72;_32;^72;^72;_32;^72;^72;_32;^72;^72;_08;
// ^84;^72;>^74;7^74;1^74;3^74; ^74;7^74;1^74;3^74;7^74;1^74;3^74;7^74;1^74;3^74; 7^74; 1^74; 3^74; 7^74; 1^74; 3^74; 7^74; 1^74; 3^74; 7^74; 1^74;
// ^74; ^92;^72;_24;^72;_24;^72;^96; ^92;^72;_24;^72;_24;^72;_24;^72;_24;^72;_24;^72;_24;^72;_24;^72;_24;^72;_24;^72;^72;_24;^72;^72;_24;^72;^72;_24;^72;^72;_24;^72;^72;_24;^72;^72;_24;^72;^72;_24;^72;^72;_24;^72;^72;_24;^72;^72;_24;^72;^72;^96;
// ^74;
// ^92;^72;^72; Весовые коэффициенты
ВесовыеКоэффициенты = Новый Массив;
ВесовыеКоэффициенты.Добавить(7);
ВесовыеКоэффициенты.Добавить(1);
ВесовыеКоэффициенты.Добавить(3);
// 7. Алгоритм проверки правильности расчета контрольного ключа:
// 7.1. Рассчитываются произведения значений разрядов на соответствующие весовые коэффициенты
// с учетом контрольного ключа.
// 7.2. Рассчитывается сумма младших разрядов полученных произведений.
Сумма = 0;
Для Разряд = 0 По 22 Цикл
ИндексВесовогоКоэффициента = Разряд % 3;//3%3=0, 4%3=1, 5%3=2
ВесовойКоэффициент = ВесовыеКоэффициенты[ИндексВесовогоКоэффициента];
Произведение = ПроверяемыйНаборЦифр[Разряд] * ВесовойКоэффициент;
МладшийРазряд = Произведение % 10;
Сумма = Сумма + МладшийРазряд;
КонецЦикла;
// При получении суммы, кратной 10 (младший разряд равен 0),
// значение контрольного ключа считается верным.
Возврат Сумма % 10 = 0;
//******************************************
новый код обращается еще к двум функциям, которых в старой конфигурации нету, поэтому прямо сразу после нашей измененной функции ПроверитьКонтрольныйКлючВНомереБанковскогоСчета(НомерСчета, КодБанка), копируем и вставляем вот эти пару функций:
Функция ЭтоБИКТОФК(КодБанка) Экспорт
ПервыеЦифрыБИК = Лев(КодБанка, 2);
Результат = ПроверитьДлинуБИК(КодБанка)
И (ПервыеЦифрыБИК = "00" Или ПервыеЦифрыБИК = "01" Или ПервыеЦифрыБИК = "02");
Возврат Результат;
КонецФункции
Функция ЭтоКазначейскийСчет(НомерСчета) Экспорт
Возврат СтрНачинаетсяС(НомерСчета, "0");
КонецФункции
Все, жмите F7 и запускайте пользовательский режим. Откройте мою внешнюю обработку "Загрузка классификаторов банка" - выбирайте ТОЛЬКО из файла (предварительно скачайте эти файлы: хоть с РБК, хоть с 1С), укажите путь - где находится ваш zip-архив, жмите кнопку "Загрузить" - все загрузится.
Далее в клиента вбиваете новый вид банковского счета - и замечательно проходит проверка и записывается банковский счет!
п.с. специально не стала убирать переключатель на загрузку с сайта - возможно, что кто-нибудь набросает рабочий код на загрузку с сайта, и будет вообще красота!)
***
п.с. тестировалась данная обработка на ЗУП редакции 3.0.70.50 - работает! на редакции 3.0.88.22 - летает!) а с последнего релиза на сегодня 3.0.105.31 - были взяты архивы Классификаторов Банка на сайте ИТС.