Введение.
SFTP (SSH File Transfer Protocol) — протокол прикладного уровня передачи файлов, работающий поверх безопасного канала.
Как известно, в платформе 1СV8 не реализован функционал для работы с SFTP. Поэтому приходиться использовать внешние инструменты, наиболее популярным из которых является программа WinSCP (распространяется по лицензии GNU GPL), которая поддерживает разнообразные протоколы работы с удаленными файловыми хранилищами, в т.ч. и SFTP. Данная библиотека реализует основные методы для работы с файлами удаленного хранилища по протоколу SFTP. Работа по протоколу FTP также поддерживается.
Описание обработки.
В обработке реализованы базовые методы WinSCP.
Для быстрой интеграции библиотеки с вашей системой архитектура обработки специально сделана следующим образом. В модуле обработки находятся процедуры и функции библиотеки, реализующие методы и классы WinSCP.
Вы можете создать общий модуль, например WinSCP, и полностью перенести туда содержимое модуля обработки.
Вызовы методов библиотеки могут выглядеть, например, так:
ReturnValue = WinSCP.GetFilesToDirectory(SessionOptions, remoteDirectory, localDirectory, ?(ЗначениеЗаполнено(filemask), filemask, NULL), remove);
Первым аргументом функций всегда идут параметры соединения SessionOptions. Все остальные аргументы идут в порядке и соответствии с методами WinSCP.
Функции библиотеки возвращают результаты выполнения метода, преобразованные в объекты 1С (структуры, массивы, примитивные значения) в соответствии со структурой классов WinSCP.
Для вашего удобства все вызовы методов библиотеки реализованы в форме обработки. Вы можете на форме обработки попробовать реальную работу всех методов.
Быстрый старт.
Для того чтобы начать использовать WinSCP, необходимо установить саму программу на рабочую станцию, где будет выполняться код 1С. Если у вас используется сервер 1С, то соответственно на рабочую станцию, где он располагается.
Также необходимо выполнить регистрацию компонент WinSCP.
********WINSCP REGISTRATION***************
Если нужно удалить регистрацию компонент старой версии
%WINDIR%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe WinSCPnet.dll /unregister
%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe WinSCPnet.dll /unregister
Регистрация компоненты
Файл WinSCPnet.dll из каталога C:\Program Files (x86)\WinSCP скопировать в директории C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ и C:\Windows\Microsoft.NET\Framework\v4.0.30319\
в командной строке (запустить как администоратор) выполнить регистрацию 32х и 64х разрядной компоненты
%WINDIR%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe WinSCPnet.dll /codebase /tlb:WinSCPnet32.tlb
%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe WinSCPnet.dll /codebase /tlb:WinSCPnet64.tlb
********WINSCP REGISTRATION ***************
Для того чтобы подключиться к удаленному хранилищу, понадобится отпечаток ключа SSH – Ssh Host Key Fingerprint. Получить его можно с помощью метода этой библиотеки ScanFingerprint, либо получить в программе WinSCP, при первом подключении к удаленному хосту отпечаток ключа будет выведен на экран, где его можно скопировать, либо скопировать позднее в параметрах созданной сессии.
При этом нужно учитывать один нюанс, отпечаток ключа будет работать только при подключении с того хоста, на котором он был сгенерирован при первом подключении. При подключении с другого хоста нужно будет сгенерировать свой отпечаток для этого хоста и использовать его.
Далее остается только создать общий модуль, перенести туда все процедуры и функции модуля обработки и реализовать вызовы методов библиотеки в своем коде. Примеры вызова функций можно взять в модуле формы обработки.
Полезные ссылки
Скачать WinSCP - https://winscp.net/eng/download.php
Документация WinSCP .NET Assembly and COM Library - https://winscp.net/eng/docs/library
Обработка тестировалась на платформе 8.3.21.1709.
Зависимостей от БСП нет.
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.12.102