Загрузка классификатора банков на сервере терминалов для пользователей с ограниченными правами через AutoIT скрипт и внешнюю обработку.

30.11.13

Интеграция - WEB-интеграция

У клиента возникла проблема с загрузкой классификатора банков. Работа велась на сервере терминалов, и его прав не хватало для выполнения загрузки – при загрузке требуется запуск .exe файла, а это соответственно требует повышенных привилегий, которых не хотелось давать пользователю.  

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
LoadBankRBC
.zip 476,20Kb
25
25 Скачать (1 SM) Купить за 1 850 руб.

Идею подсмотрел на форуме: Установка перечня банков. Там было очень интересное обсуждение проблемы и предложен способ решения. Тут же захотелось набросать реализацию… Делюсь тем, что получилось.

Идея простая и состоит в следующем: вместо загрузки банков с сайта РБК – загружаем их из заданного каталога (общего ресурса). В сам каталог файлы с РБК загружаем или вручную или, как в данном примере, программой на AutoIT.

I. Выгружаем  обработку загрузки банков во внешнюю обработку.

 Операция обычная - здесь вопросов не у кого не появится.

II. Подправляем полученную обработку в конфигураторе:

 1. На форме устанавливаем по умолчанию загрузку с сайта РБК:

 Рис1

 Для чего в обработчике событий вносим изменения:

 Рис2

 2. В модуль формы добавляем переменную – полный путь к каталогу, из которого будем загружать банки в справочник :

   В начало модуля ставим объявление переменной – имени общего каталога:

Рис2_1

  В конец модуля ставим значение инициализации нашего каталога:

  Рис2_2              

 Ставим простую врезку кода в процедуру загрузки с РБК, для изменения способа загрузки – грузим файлы из папки:

 Рис3

 Теперь новая внешняя обработка готова загружать банки из файлов, которые, находятся  в заданном каталоге (и были ранее загружены каким либо способом).

III Формируем скрипт на AutoIT для загрузки информации в заданный каталог с сайта РБК.

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****

#AutoIt3Wrapper_UseX64=y

#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

 

;--------------------------------------------------------------------------------------

; SAM 19.11.2013 - Процедура загрузки файла архива БАНКОВ с сервера РБК

;

; - СерверИсточник = "cbrates.rbc.ru";

; - Адрес = "bnk/bnk.exe";

;

;--------------------------------------------------------------------------------------

; Использованы алгоритмы, код и библиотеки с ресурсов:

; http://autoit-script.ru/index.php?topic=1440.0

; http://autoit-script.ru/index.php/topic,14689.0.html

; http://code.google.com/p/autoit-winhttp/downloads/detail?name=1.6.3.4.zip&can=2&q=

;--------------------------------------------------------------------------------------

#include "File.au3"

#include "WinHttp.au3"

#RequireAdmin

Opt("MustDeclareVars", 1)

 

Global $sHost = "cbrates.rbc.ru"                                                             ; Сервер РБК

Global $sTarget = "bnk/bnk.exe"                                                            ; загружаемый файл

Global $sDestinationDir = "D:\1CBase\BankRBC"                                    ; каталог куда будет загружаеться файл с сервера РБК

Global $sDestinationFile = "\local_bnk.exe"                                            ; файл в который будет выгружаться файл с сервера 

 

Global $sDestination = $sDestinationDir & $sDestinationFile                  ; полный путь для исполняемого файла

Local $aReturn

Local $var

 

; Проверяем доступность сервера РБК

$var = Ping($sHost, 250)

If $var = 0 Then

    MsgBox(48, "Ошибка:", "Нет доступа к серверу cbrates.rbc.ru")

    Exit 1

EndIf

 

; Очищаем каталог от результатов предыдущих загрузок

$aReturn = _FileSearch($sDestinationDir, '*.*')

For $i = 1 To UBound($aReturn) - 1

        FileDelete($aReturn[$i])

Next

 

; Открываем HTTP сессию

Global $hHttpOpen = _WinHttpOpen()

If @error Then

    MsgBox(48, "Ошибка:", "Ошибка инициализации и использования функции: WinHTTP.")

    Exit 2

EndIf

 

; Устанавливаем соединение

Global $hHttpConnect = _WinHttpConnect($hHttpOpen, $sHost)

If @error Then

    MsgBox(48, "Ошибка:", "Ошибка связи с сервером.")

    _WinHttpCloseHandle($hHttpOpen)

    Exit 3

EndIf

 

; Определяем содержимое запроса

Global $hHttpRequest = _WinHttpOpenRequest($hHttpConnect, Default, $sTarget)

If @error Then

    MsgBox(48, "Ошибка:", "Ошибка HTTP запроса.")

    _WinHttpCloseHandle($hHttpConnect)

    _WinHttpCloseHandle($hHttpOpen)

    Exit 4

EndIf

 

; Посылаем запрос

_WinHttpSendRequest($hHttpRequest)

If @error Then

    MsgBox(48, "Ошибка:", "Ошибка передачи запроса.")

    _WinHttpCloseHandle($hHttpConnect)

    _WinHttpCloseHandle($hHttpOpen)

    Exit 5

EndIf

 

; Ждем ответа на запрос

_WinHttpReceiveResponse($hHttpRequest)

 

; Читаем данные с сервера

Global $bChunk, $bData, $hFile

If _WinHttpQueryDataAvailable($hHttpRequest) Then

    While 1

        $bChunk = _WinHttpReadData($hHttpRequest, 2)                          ; читаем двоичные данные

        If @error Then ExitLoop

        $bData = _WinHttpSimpleBinaryConcat($bData, $bChunk)             ; дописываем очередные данные...

    WEnd

    ; Сохраняем данные в файл (старый файл с таким же именем перезаписывается)

    $hFile = FileOpen($sDestination, 26)

    FileWrite($hFile, $bData)

    FileClose($hFile)

Else

    MsgBox(48, "Ошибка:", "Невозможно загрузить данные. " & @CRLF)

EndIf

 

; Чистим указатели

_WinHttpCloseHandle($hHttpRequest)

_WinHttpCloseHandle($hHttpConnect)

_WinHttpCloseHandle($hHttpOpen)

 

; Выполняем загруженный файл для распаковки архива в заданном каталоге

ShellExecute($sDestination, "", $sDestinationDir)

;------------------------------------------------------------

; вспомогательная функция построения списка файлов каталога

;------------------------------------------------------------

Func _FileSearch($sPath, $sFileMask)

    Local $sOut = StringToBinary("0" & @CRLF, 2), $aOut

    Local $hDir = Run(@ComSpec & ' /U/C DIR "' & $sPath & '\' & $sFileMask & '" /S/B/A-D', @SystemDir, @SW_HIDE, 6)

 

    While 1

        $sOut &= StdoutRead($hDir, False, True)

        If @error Then ExitLoop

    WEnd

 

    $aOut = StringRegExp(BinaryToString($sOut, 2), "[^\r\n]+", 3)

    If @error Then Return SetError(1)

 

    $aOut[0] = UBound($aOut) - 1

    Return $aOut

EndFunc

 

IV Созданый  скрипт  помещаем в Планировщик заданий, для автоматизации обновлений по расписанию (с нужной нам периодичностью).

 

Теперь у нас есть каталог, в который по расписанию загружается свежая информация по классификатору банков (с нужной нам периодичностью). И внешняя обработка при помощи которой можно загрузить классификатор в конкретную базу. В приложеном архиве находятся: скрипт (полный исходный и скомпилированный для 64 разрядной Windows), скорректированная внешняя обработка.

PS: На Infostart есть статьи на подобную тему, но те, которые просмотрел не имели описания и только ссылку на загрузку обработки – просто так, чтобы посмотреть решение, качать обработки не было желания.

AutoIT

См. также

WEB-интеграция Администрирование веб-серверов Платные (руб)

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL(ИТИЛ), 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    3024    5    0    

11

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

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    35100    69    45    

29

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

Онлайн-заказ - это решение для автоматизации процесса оформления заказов на сайте в торговых организациях. Продукт обеспечивает легкое взаимодействие между компанией и клиентами через веб-интерфейс, интегрированный с 1С:Предприятие. Система позволяет снизить операционные расходы, повысить лояльность клиентов и оптимизировать работу отдела продаж.

57600 руб.

26.11.2024    2761    2    3    

5

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

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    1065    7    2    

9

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 1C:Бухгалтерия 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    4722    4    2    

5

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

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    19290    23    22    

20

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

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    19052    54    50    

31
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. MaeXtro 55 26.11.14 14:08 Сейчас в теме
Можно без шаманства!

берем ИТС ПРОФ и из него две папки в корень любого диска:
\1CIts\EXE\EXTDB\ - обработки
\Database\Garant\MorphDB\ - базы БИК, Кладр, ОКОНХ...

Выбираем загрузку с ИТС и 1С-ка сама их найдет. Проверено на БП 3.0 и 2.0

PS Почему-то БП 3.0 просит http://cbrates.rbc.ru/bnk/bnk.zip
2. LexSeIch 212 10.12.14 10:27 Сейчас в теме
(1) MaeXtro,
Как часто обновляется ИТС ПРОФ? Как часто закрываются банки или меняются их атрибуты?
Каждой вещи - свое место и время... ИМХО.
itmadmin; +1 Ответить
Оставьте свое сообщение