Имя: Пароль:
1C
1С v8
Загрузка Классификатора Банки в Альфа-Авто 5
0 avyub
 
14.06.17
21:01
Возобновление архивного топика:
Загрузка Классификатора Банки в Альфа-Авто 5
Альфа-Авто5
Имеется кнопка Загрузить, при ее нажатии только 2 варианта:
1. с диска ИТС (диск2)
2. с сайта агентства РосБизнесКонсалтинг
Диска нет, пробую с сайта. Выдает "Неудачная попытка соединения"
Интернет есть, без прокси

При запуске загрузки классификатора в папке временного каталога создаются большое количество файлов с расширением *.tmp и небольшое количество *.xml (*.tmp разного размера с содержимым, похожем на машинный код, а *.xml все пустые
1 avyub
 
14.06.17
21:05
+(0)файл bnk.exe загрузил вручную. Это самораспоковывающийся архив. При распаковке получаются файлы: bnkdel.txt, bnkseek.txt, bnkseek_swift.txt и reg.txt
Может можно как-нибудь загрузить из этих файлов?
2 avyub
 
14.06.17
21:07
Привожу полностью оригинальные процедуру и фунцию:

Процедура ЗагрузитьКлассификаторСРБК(ВремКаталог)
    
    ФайлБИК = Новый Файл(ВремКаталог+"\"+мИмяФайлаБИК);
    ФайлРег = Новый Файл(ВремКаталог+"\"+мИмяФайлаРег);
    
    ФормаИндикатора = ПолучитьОбщуюФорму("Индикация", ЭтаФорма);
    ФормаИндикатора.Заголовок = "Загрузка классификатора";
    ФормаИндикатора.СтрокаСостояния = "Загрузка классификатора";
    ФормаИндикатора.Открыть();
    
    Разделитель = Символы.Таб;
    СпРегионов = Новый СписокЗначений;
    мТекстКлассификатора = Новый ТекстовыйДокумент();
    мТекстКлассификатора.Прочитать(ВремКаталог + "\" + мИмяФайлаРег);
    КолСтрок = мТекстКлассификатора.КоличествоСтрок();
    Обновить();
    Для к = 1 По КолСтрок Цикл
        Стр = мТекстКлассификатора.ПолучитьСтроку(к);

        Если (Лев(Стр,2) = "//") или (ПустаяСтрока(Стр)) Тогда
            Продолжить;
        КонецЕсли;
        НомПоля = 1;
        Пока (ПустаяСтрока(Стр) = 0) Цикл    //    пока не обработали всю шапку
            Поз = Найти(Стр,Разделитель);
            Если Поз = 0 Тогда    //    не нашли
                НазваниеОдногоПоля = Стр;
                Стр = "";
            Иначе
                //    вырезаем очередное поля
                НазваниеОдногоПоля = Лев(Стр,Поз-1);
                Стр = Прав(Стр,СтрДлина(Стр)-Поз);
            КонецЕсли;

            НазваниеОдногоПоля = СокрЛП(НазваниеОдногоПоля);
            //    добавляем входное поле в таблицу
            Если НомПоля = 1 Тогда
                Симвл1 = СокрЛП(НазваниеОдногоПоля);
            ИначеЕсли НомПоля = 2 Тогда
                Симвл2 = СокрЛП(НазваниеОдногоПоля);
            КонецЕсли;

            Состояние("Обработка региона: " + Симвл1);

            НомПоля = НомПоля + 1;
            Если НомПоля > 2 Тогда
                Прервать;  // Завершить просмотр строки, т.к. обработаны все необходимые поля, но есть еще что-то.
            КонецЕсли;
        КонецЦикла;    
        
        СпРегионов.Добавить(Симвл1,Симвл2);
    КонецЦикла;    

    Состояние("Выполняется загрузка классификатора");

    мТекстКлассификатора.Прочитать(ВремКаталог + "\" + мИмяФайлаБИК);
    КолСтрок = мТекстКлассификатора.КоличествоСтрок();
    Обновить();
    Для к = 1 По КолСтрок Цикл
        Стр = мТекстКлассификатора.ПолучитьСтроку(к);
        Стр = СокрЛП(Стр);

        Если ПустаяСтрока(Стр) Тогда
            Продолжить;
        КонецЕсли;    

        НомПоля = 1;
        Пока (ПустаяСтрока(Стр) = 0) Цикл    //    пока не обработали всю шапку
            Поз = Найти(Стр,Разделитель);
            Если Поз = 0 Тогда    //    не нашли
                НазваниеОдногоПоля = Стр;
                Стр = "";
            Иначе
                //    вырезаем очередное поля
                НазваниеОдногоПоля = Лев(Стр,Поз-1);
                Стр = Прав(Стр,СтрДлина(Стр)-Поз);
            КонецЕсли;

            НазваниеОдногоПоля = СокрЛП(НазваниеОдногоПоля);
            //    добавляем входное поле в таблицу
            Если НомПоля = 1 Тогда
                ЗнТипБанка = ОпределитьТипБанка(СокрЛП(НазваниеОдногоПоля));
            ИначеЕсли НомПоля = 2 Тогда
                ЗнПункт = СокрЛП(НазваниеОдногоПоля);
            ИначеЕсли НомПоля = 3 Тогда
                ЗнТипПункта = ОпределитьТипГорода(СокрЛП(НазваниеОдногоПоля));
            ИначеЕсли НомПоля = 4 Тогда
                ЗнНаименование = СокрЛП(НазваниеОдногоПоля);
            ИначеЕсли НомПоля = 5 Тогда
                ЗнПризнакКода = СокрЛП(НазваниеОдногоПоля);
            ИначеЕсли НомПоля = 6 Тогда
                ЗнБИК = СокрЛП(НазваниеОдногоПоля);
            ИначеЕсли НомПоля = 7 Тогда
                ЗнКорСчет = СокрЛП(НазваниеОдногоПоля);
            КонецЕсли;
            НомПоля = НомПоля + 1;
            Если НомПоля > 7 Тогда
                Прервать;  // Завершить просмотр строки, т.к. обработаны все необходимые поля, но есть еще что-то.
            КонецЕсли;
        КонецЦикла;    

        ФормаИндикатора.Индикатор= к/КолСтрок * 100;

        КодРег          = Сред(ЗнБИК,3,2);
        НайденныйРегион = СпРегионов.НайтиПоЗначению(КодРег);
        Если НайденныйРегион = Неопределено Тогда
            Продолжить;
        КонецЕсли;

        РегТабл = ДеревоБанков.Строки.Найти(КодРег,"КодРегиона",Ложь);
        Если РегТабл = Неопределено Тогда
            НоваяСтрокаРегиона              = ДеревоБанков.Строки.Добавить();
            НоваяСтрокаРегиона.КодРегиона   = НайденныйРегион.Значение;
            НоваяСтрокаРегиона.Наименование = НайденныйРегион.Представление;
            НоваяСтрокаРегиона.Загрузка     = Ложь;
        Иначе    
            НоваяСтрокаРегиона = РегТабл;
        КонецЕсли;    
        
        НоваяСтрокаБанка              = НоваяСтрокаРегиона.Строки.Добавить();
        НоваяСтрокаБанка.Наименование = ЗнНаименование;
        НоваяСтрокаБанка.КодРегиона   = ЗнБИК;
        НоваяСтрокаБанка.ТипБанка     = ЗнТипБанка;
        НоваяСтрокаБанка.КоррСчет     = ЗнКорСчет;
        НоваяСтрокаБанка.Индекс       = "";
        НоваяСтрокаБанка.Город        = ЗнТипПункта+" "+ЗнПункт;
        НоваяСтрокаБанка.Адрес        = "";
        НоваяСтрокаБанка.Телефон      = "";
        НоваяСтрокаБанка.Загрузка = Ложь;
    КонецЦикла;    
    ФормаИндикатора.Закрыть();
    
КонецПроцедуры // ЗагрузитьКлассификаторСРБК()

Функция ПолучитьФайлРБК()
    
    СерверИсточник = "cbrates.rbc.ru/";
    НТТР = СоздатьСоединение(СерверИсточник);
    
    Адрес = "bnk/bnk.exe";
    ВремКаталог = Лев(КаталогВременныхФайлов(), 2) + "\_tempBik";
    СоздатьКаталог(ВремКаталог);
    
    Попытка УдалитьФайлы(ВремКаталог,"RbkZip.bat"); Исключение КонецПопытки;
    Попытка УдалитьФайлы(ВремКаталог,мИмяФайлаЗип); Исключение КонецПопытки;
    Попытка УдалитьФайлы(ВремКаталог,мИмяФайлаБИК); Исключение КонецПопытки;
    Попытка УдалитьФайлы(ВремКаталог,мИмяФайлаРег); Исключение КонецПопытки;
    
    Попытка
        НТТР.Получить(Адрес, ВремКаталог + "\" + мИмяФайлаЗип);
    Исключение
        Сообщить("Неудачная попытка соединения.");
        Возврат Ложь;
    КонецПопытки;
    
    Состояние("Выполняется обработка загрузки");
    
    ИмяБатФайла = "" + ВремКаталог + "\RbkZip.bat";
    БатФайл     = Новый ТекстовыйДокумент();
    БатФайл.Очистить();
    //БатФайл.ДобавитьСтроку(Лев(ВремКаталог,2));
    //БатФайл.ДобавитьСтроку("cd \" + Сред(ВремКаталог, 4));
    БатФайл.ДобавитьСтроку("""" + ВремКаталог + "\" + мИмяФайлаЗип + """");
    БатФайл.Записать(ИмяБатФайла,КодировкаТекста.OEM);
    
    КомандаСистемы(""""+ ИмяБатФайла + """",ВремКаталог);

    ФайлБИК = Новый Файл(ВремКаталог + "\" + мИмяФайлаБИК);
    ФайлРЕГ = Новый Файл(ВремКаталог + "\" + мИмяФайлаРег);
    
    НачальнаяДата = ТекущаяДата();
    Пока (НЕ (ФайлБИК.Существует() И ФайлРЕГ.Существует())) И ((ТекущаяДата() - НачальнаяДата) < 10) Цикл
    КонецЦикла;
    
    Если (ФайлБИК.Существует() И ФайлРЕГ.Существует()) Тогда
        ЗагрузитьКлассификаторСРБК(ВремКаталог);
    Иначе
        Возврат Ложь;
    КонецЕсли;
    
    Попытка УдалитьФайлы(ВремКаталог,"RbkZip.bat"); Исключение КонецПопытки;
    Попытка УдалитьФайлы(ВремКаталог,мИмяФайлаЗип); Исключение КонецПопытки;
    Попытка УдалитьФайлы(ВремКаталог,мИмяФайлаБИК); Исключение КонецПопытки;
    Попытка УдалитьФайлы(ВремКаталог,мИмяФайлаРег); Исключение КонецПопытки;
    Попытка
        Если НайтиФайлы(ВремКаталог, "*.*").Количество() = 0 Тогда
            Попытка УдалитьФайлы(ВремКаталог); Исключение; КонецПопытки;
        КонецЕсли;
    Исключение
    КонецПопытки;
    
    Возврат Истина;
    
КонецФункции // ПолучитьФайлРБК()
3 Winnie Buh
 
15.06.17
08:30
альфы сейчас нет под рукой посмотреть, но во многих типовых сейчас чтобы загрузить классификатор банков нужно настроить или интернет-поддержку или выставить новую константу "Использовать альтернативный сервер для загрузки классификатора банков"
http://www.online-ufa.ru/content/articles/zagruzka-klassifikatora-bankov-1c/
может в альфе теперь также
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший