Обработка предназначена для загрузки значений ставок рефинансирования с сайта центробанка России и записи данных значений в базу 1С.
Замечания:
- Для загрузки используется COM-объект InternetExplorer.Apllication, работа проверялась только на Windows с версией IE8.0
- Обработка сильно завязана на структуру документа на сайте ЦБ - ищутся объекты с тэгом TABLE, из выбираются только те таблицы, которые не имеют вложенных таблиц, признаком нужной таблицы является наличие слова "ПЕРИОД" в первой строке таблицы (заголовок). Также считается, что нужные данные содержатся в первых двух колонках таблицы и есть зависимость от формата даты изменения ставки рефинансирования в первой колонке.
- Также можно отметить, что обработка завязана на URL-адрес страницы на сайте ЦБ, но есть возможность изменить его перед загрузкой.
- В настоящее время нет возможности задать название объекта метаданных, в которых хранится история изменения ставок - по умолчанию используется константа "СтавкаРефинансирования". В будущем, если данная опция понадобится, есть в планах её добавить.
- В обработке добавлена попытка поймать ошибки и зависания - если объект IE не переходит в состояние готовности дольше, чем таймаут в 10 секунд (т.е. слишком долго пытается загрузить сайт или выполнить парсинг страницы), то обработка прекращает ожидание ответа. Также ошибкой считается несовпадение адреса страницы, которую мы пытались открыть, и которая в итоге открылась - это бывает при отсутствии соединения с интернетом, IE автоматически перенаправляет на сообщение об ошибке.
- В будущем планируется добавить возможность полностью автоматической работы - например в случае запуска обработки при начале работы системы из глобального модуля с передачей нужных параметров.
История версий и изменений:
1.00 13.02.2010: Обработка загружает значения ставок рефинансирования с сайта центробанка России с помощью COM-объекта InternetExplorer.Application. Производится парсинг загруженной страницы - поиск основной таблицы с данными по признаку наличия 6 букв "ПЕРИОД" в первой строке таблицы. Выполняется разбор данных и заполнение таблицы значений на форме.
1.01 15.02.2010: Добавлена обработка возможных ошибок - в качестве таймаута выбрано значение 10 секунд - после чего ожидание ответа от ИЕ прекращается. В случае если URL документа отличается от заданного в начале, это воспринимается как ошибка связи, т.е. ИЕ перенаправил страницу на сообщение об ошибке. Добавлен кусок для корректного завершения работы, чтобы процесс ИЕ не оставался висящим в памяти. Сделаны мелкие улучшения и оптимизация кода.
1.02 16.02.2010: Добавлена возможность выбора периода загрузки. Добавлена базовая возможность - сохранение загруженных значений в историю константы "СтавкаРефинансирования".
1.03 26.02.2010: Добавлена возможность предварительной очистки истории значений константы "СтавкаРефинансирования". Вся работа с историей значений теперь выполняется с помощью объекта "Периодический". Мелкие интерфейсные доработки и подготовка к первой публичной версии.
P.S. Прошу строго не судить - это моя первая публикация здесь, постарался все оформить получше и подробнее. Да, возможно такая обработка уже была, но я такой не нашел и когда понадобилось писать отчет по расчету пеней, заодно и такая вещь пригодилась. Может конечно и не сильно нужна такая обработка, т.к. ставки рефинансирования редко используются и не так уж часто меняются, но в моем случае она сильно облегчает жизнь бухгалтерам и устраняет еще одну заморочку - помнить о необходимости обновления ставок рефинсирования в константах (ну это конечно, если я ее доделаю в итоге до полностью автоматического запуска при каждом запуске).
P.P.S. А на сайте ЦБ РФ кстати есть ошибка У них самое первое значение ставки рефинансирования указано на дату 01.01.1991, хотя должно быть явно 01.01.1992