В процессе эксплуатации устаревших или специфических конфигураций, таких как 1С:Бухгалтерия предприятия 2.0, пользователи часто сталкиваются с жестким требованием системы иметь активную подписку ИТС и доступ к интернету для обновления классификаторов. Особую сложность это вызывает на закрытых серверах или в компаниях с ограниченным бюджетом на ИТС. В данной статье мы подробно разберем, как обойти механизмы проверки и обновить справочник банков вручную, используя локальные файлы и минимальные правки кода.
В типовых решениях 1С 8.2 и 8.3 (на обычных формах) механизм загрузки классификатора банков обращается к специализированным веб-сервисам. Программа сначала ищет настройки Интернет-поддержки пользователей. Если логин и пароль не введены или на сервере отсутствует физический доступ к сети, процедура прерывается, выдавая запрос на авторизацию. Наша задача — выяснить, как подсунуть программе готовый файл или заставить её игнорировать отсутствие связи с порталом 1С.
Рассмотрим вариант, когда интернет есть на другом компьютере. Исторически 1С использовала данные с ресурса РБК. Хотя сейчас основным источником является portal.1c.ru, многие старые обработки всё еще поддерживают загрузку с серверов РосБизнесКонсалтинг.
Проанализируем шаги для ручного получения файла:
exe (самораспаковывающийся архив) или zip.bnk.dbf или аналогичные структуры.Для загрузки из файла в 1С:БП 2.0 часто требуется указать путь к папке. Если стандартная форма упорно требует авторизацию, перейдем к техническим правкам.
Если вы обладаете правами администратора или программиста и база снята с поддержки (или находится на поддержке с возможностью редактирования), мы можем внести небольшие изменения в код. Это позволит пропустить этап аутентификации.
Выясним причину остановки загрузки. Как правило, она кроется в процедуре ПолучитьФайлИзИнтернета(). Разберем по шагам, что нужно изменить:
ЗагрузкаКлассификатораБанков или общий модуль, вызываемый из справочника Банки).ПолучитьФайлИзИнтернета().Пример кода, который следует изменить:
// Процедура модифицируется для обхода проверки авторизации
// НастройкиСоединения = ОбработкаПолученияФайлов.ПараметрыАутентификацииИнтернетПоддержки();
//
// Если НастройкиСоединения = Неопределено Тогда
// ИнтернетПоддержкаПользователейКлиент.СтартоватьМеханизм("handStart");
// Сообщить("После ввода логина и пароля следует повторить операцию загрузки данных.");
// Возврат;
// КонецЕсли;
Важный нюанс: Простое комментирование может привести к ошибке, если дальше по коду объект НастройкиСоединения используется для создания HTTP-соединения. В таком случае необходимо инициализировать эту переменную пустыми значениями или создать структуру с пустым логином и паролем, чтобы метод HTTPСоединение не вызывал исключение.
Если вы не хотите менять код конфигурации, можно прибегнуть к хитрости. Система 1С при загрузке из интернета сначала скачивает файл во временную папку, а затем обрабатывает его. Мы можем имитировать этот процесс:
Отладку, проверив значение функции КаталогВременныхФайлов()).bnk.zip или bnk.dbf.Однако этот метод трудоемок и требует точного знания того, какое имя файла ожидает программа. В старых релизах БП 2.0 это часто v8_bnk.zip.
Если на сервере нет интернета, но у вас есть другая база 1С (например, на домашнем компьютере), где классификатор банков актуален, проанализируем самый надежный способ — использование универсальной обработки Универсальный обмен данными в формате XML.
Разберем алгоритм действий:
Универсальный обмен данными в формате XML.Банки.banks.xml.Этот метод полностью игнорирует любые проверки ИТС, так как работает напрямую с объектами информационной базы данных.
Мало кто знает, что актуальный классификатор часто поставляется вместе с обновлениями самой конфигурации. Проанализируем путь поиска:
При установке обновления 1С распаковывает шаблоны в папку AppData\Roaming\1C\1cv8\tmplts\1c\Accounting\[НомерРелиза]. Посмотрите содержимое этой папки. Часто там находится файл bnk.zip. Если вы перенесли папку с обновлением на сервер для установки релиза, вы можете указать этот путь в обработке загрузки классификатора, выбрав вариант "Загрузить из файла на диске".
Для программистов, сопровождающих такие системы, мы рекомендуем создать небольшую внешнюю обработку (файл .epf). В ней можно реализовать упрощенный алгоритм чтения DBF-файла классификатора. Это позволит бухгалтерам самостоятельно обновлять банки, просто выбирая файл, скачанный системным администратором, без необходимости заходить в конфигуратор и править типовые модули.
Используйте объект XBase для работы с классификатором напрямую:
ФайлБД = Новый XBase;
ФайлБД.ОткрытьФайл(ПутьКФайлу);
Если ФайлБД.Открыта() Тогда
Пока ФайлБД.Следующая() Цикл
БИК = ФайлБД.BIC;
// Поиск или создание банка в справочнике
КонецЦикла;
КонецЕсли;
Таким образом, даже в условиях полной изоляции сервера и отсутствия активных сервисов ИТС, у вас остается как минимум три проверенных способа поддержания справочника банков в актуальном состоянии.