Опять про sFTP и вообще

Нет такого программиста 1С, который бы не сталкивался с необходимостью программно передавать данные посредством FTP.

В 90% случаев это использование протокола FTP, в 9% FTPs и в 1% это sFTP (имхо)

Сразу стоит подчеркнуть, что FTPs и sFTP не одно и тоже и кардинально отливается в реализации.

Для любопытных, но ленивых вот ссылки:

https://ru.wikipedia.org/wiki/FTPS

https://ru.wikipedia.org/wiki/SFTP

Теперь рассмотрим реализацию передачи файлов по каждому варианту.

FTP – Легко

Дано:

Передать файл «C:\My.txt» на FTP «myhost.ru/mydir/»

Сервер – myhost.ru

Порт – 21

Подкаталог  – mydir

Логин – user

Пароль – pass

При этом настройка в FileZilla будет следующая:

Для реализации в 1С будем использовать следующую конструкцию:

СоединениеFTP = Новый FTPСоединение(Сервер, Порт, Логин, Пароль)

При этом для соединения будет использоваться прокси по умолчанию, и если нам нужно пойти в обход прокси или использовать «особый», то будем этот самый прокси переопределять

Прокси = Новый ИнтернетПрокси(Ложь);//Не использовать прокси по умолчанию

СоединениеFTP = Новый FTPСоединение(Сервер, Порт, Логин, Пароль, Прокси);

После создания соединения начинаем передачу

СоединениеFTP.Записать(«C:\My.txt»,  «mydir/My.txt»);

Все, файл там, где нужно

 

FTP – легко и безопасно

Дано:

Передать файл «C:\My.txt» на FTPs «myhost.ru/mydir/»

Сервер – myhost.ru

Порт – 22

Подкаталог  – mydir

Логин – user

Пароль – pass

При этом настройка в FileZilla будет следующая:

В данном случае поступаем по аналогии с https-соединением, а именно добавляем описание защищенного соединения и указываем его в параметрах:

ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();

СоединениеFTP = Новый FTPСоединение(Сервер, Порт, Логин, Пароль,,,, ЗащищенноеСоединение);

FTP – сложно и безопасно

Дано:

Передать файл «C:\My.txt» на sFTP «myhost.ru/mydir/»

Сервер – myhost.ru

Порт – 522

Подкаталог  – mydir

Логин – user

Пароль – pass

При этом настройка в FileZilla будет следующая:

Хочу Вас сразу огорчить – с данным соединением 1С не работает и стандартный класс FTPСоединение не поможет.

Для работы с sFTP нужно будет использовать сторонние продукты. Я использую WinSCP, на основе нее и опишу решение передачи.

Скачать WinSCP можно тут https://winscp.net/eng/download.php

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

https://winscp.net/eng/docs/scripting#using_scripting

https://firstwiki.ru/index.php/WinSCP

ТекстСценария = "option batch abort
                |option confirm on
                |open sftp://" + Логин + ":" + Пароль + "@" + Сервер + ":" + Порт + "
				|put C:\My.txt /mydir/My.txt
				|exit";

ИмяФайлаСценария = ПолучитьИмяВременногоФайла(".txt");
ФайлСценария = Новый ТекстовыйДокумент;
ФайлСценария.УстановитьТекст(ТекстСценария);
ФайлСценария.Записать(ИмяФайлаСценария);

ПутьWinSCP = "C:\WinSCP\WinSCP.exe";
Команда = """" + ПутьWinSCP + """ /console /script=""" + ИмяФайлаСценария + """";
ЗапуститьПриложение(Команда,,Истина);

По результату выполнения команды файл будет отправлен.

Для ленивых приложу обработину, где в МОДУЛЕ ОБЪЕКТА есть готовые процедуры работы с sFTP.

В КАТАЛОГ »