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

23.05.18

Интеграция - Внешние источники данных

Памятка для разработчика по работе с FTP, FTPs и sFTP.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Опять про sFTP и вообще: Обертка для WinSCP с расширенным логированием
.epf 5,27Kb
92
92 Скачать (1 SM) Купить за 1 850 руб.

Нет такого программиста 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.

sFTP WinSCP Обертка

См. также

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

120000 руб.

19.08.2020    26665    26    1    

28

Внешние источники данных Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Готовая интеграция для управляемых форм. Встраивается в вашу 1С как расширение. Реализует автоматический обмен данными между 1С (1С:Фитнес клуб и аналогов) и СКУД RusGuard, автоматизирует бизнес-процессы по созданию и учету сотрудников в СКУД. Значительно упрощает работу специалистов отдела кадров и отдела безопасности: избавляет от двойного ввода информации в 1С и СКУД.

94999 руб.

11.07.2024    1347    1    0    

3

Розничная торговля Внешние источники данных Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Бухгалтерский учет 1С:Бухгалтерия 3.0 Фармацевтика, аптеки Россия Бухгалтерский учет Платные (руб)

Внешняя обработка загрузки данных из файла-выгрузки, сформированного в программе F3 TAIL версии 3.4 (и выше) или еФарма версии 2.1, в базу конфигурации 1С: Бухгалтерия предприятия 8, ред. 3.0 (базовая, ПРОФ, КОРП, ФРЕШ).

13200 руб.

19.12.2016    48781    99    106    

70

Розничная торговля Внешние источники данных Файловый обмен (TXT, XML, DBF), FTP Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Фармацевтика, аптеки Россия Бухгалтерский учет Налоговый учет Платные (руб)

Представлена обработка для импорта документов из розничной программы учета товара в торговых точках и аптеках, необходимых для ведения бухгалтерского и налогового учёта, в Бухгалтерию 3.0. При загрузке данных в бухгалтерию переносятся документы поступлений, реализации, возвратов и перемещений в торговых точках и формируются все бухгалтерские и налоговые отчеты с учетом этих документов для любой системы налогообложения. Обработка позволяет загрузить данные из ПО ТрейдФарм. Имеются варианты для других розничных программ (ПО Manuscript Solution, Е-Фарма и S-Market).

18000 руб.

09.04.2020    18726    13    8    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. onec.developer 180 24.05.18 00:51 Сейчас в теме
Кто подскажет, как установить подключение к sFTP из мобильного устройства?
3. BigClock 24.05.18 10:51 Сейчас в теме
(1), из известных мне бесплатных приложений под Android это
Ghost Commander: https://play.google.com/store/apps/details?id=com.ghostsq.commander
со специальным плагином для sFTP: https://play.google.com/store/apps/details?id=com.ghostsq.commander.sftp
2. пользователь 24.05.18 05:44
Сообщение было скрыто модератором.
...
4. onec.developer 180 24.05.18 14:21 Сейчас в теме
если в мобильное приложение зашить только плагин, подхватит подключение без установки самого приложения? кто то пробовал?
5. viptextil1 23 30.05.18 09:04 Сейчас в теме
Из трех вышеуказанных протоколов, на мой взгляд, sftp самый предпочтительный для передачи не очень больших объемов информации (до нескольких Гб), поскольку используется один порт и гораздо проще реализовать проброс порта. И к тому же по сравнению с ftp передаваемые данные (и пароли) шифруются.

Под Linux пользуюсь консольным клиентом lftp.wiki
6. Region102 30.05.18 13:00 Сейчас в теме
Вот вам в копилку по той же теме, только не статья а видео https://www.youtube.com/watch?v=UEAMWQles04
7. triviumfan 99 16.07.18 09:54 Сейчас в теме
Что-то у меня файл не отправляется. Где логи посмотреть? И как их включить...
8. triviumfan 99 16.07.18 10:07 Сейчас в теме
(7) Туплю...
Команда = """" + ПутьWinSCP + """ /console /script=""" + ИмяФайлаСценария + """" + " /log=""" + ИмяФайлаЛога + """";

Но почему то моей папки не видит...
9. triviumfan 99 16.07.18 10:09 Сейчас в теме
(8)
* 2018-07-16 10:06:10.113 Не удается найти указанный файл
. 2018-07-16 10:06:10.114 Asking user:
. 2018-07-16 10:06:10.114 Файл или папка 'C:\Users\UserName\Desktop\Технические' не существует. ("Системная ошибка. Код: 2.
10. triviumfan 99 16.07.18 10:12 Сейчас в теме
(9) Попробовал из другого пути (С:\мойфайл.хмл) и заработало.
В чём прикол? Опять беда с кириллицей в пути? Или путь у меня был слишком длинный?
11. palsergeich 11.10.19 12:05 Сейчас в теме
(9) А пробела там в пути не было?
zhuravlev_as; +1 Ответить
12. triviumfan 99 11.10.19 15:38 Сейчас в теме
(11) был. Задача решена, не помню уже причину ошибок.
32. zhuravlev_as 471 24.02.25 20:37 Сейчас в теме
(11) да, пробелы мешают, не нужны - тоже с этим столкнулся.
13. ChepurkoMax 01.10.20 08:38 Сейчас в теме
А прокси где прописывать если с winscp работаешь?
14. leongl 552 01.10.20 12:43 Сейчас в теме
15. MasI 9 23.11.20 12:45 Сейчас в теме
Подскажите в точности повторил код, зарегистрировал WinScp, но при попытке соединения выдается ошибка Произошла исключительная ситуация WinSCP Connection Failed. Понять бы в какую сторону копать?
16. leongl 552 23.11.20 15:46 Сейчас в теме
17. MasI 9 24.11.20 00:44 Сейчас в теме
Да? в File Zila или если открываю через Win CSP то все открывается успешно
18. leongl 552 24.11.20 08:19 Сейчас в теме
(17)Какая строка подключения? Подключение на клиенте или на сервере?
19. MasI 9 24.11.20 14:29 Сейчас в теме
Поключение на клиент сервере, платформа 8.3.16.1063

код подключения привел ниже, буду очень благодарен если подскажите, что можно подправить)

Попытка
		
		
		HostName ="filetransfer.XXXX.com";
		UserName="tdls...";
		Password = 
		PortNumber = "22022";
		Protocol = 2;
		FTPSecure = 3;
		
		//SshHostKeyFingerprint="2048 e9:27:17:d4:ca:76:3f:c1:f6:39:e4:8a:947-74";
		
		//Задаем параметры подключения
		sessionOptions = Новый COMОбъект("WinSCP.SessionOptions"); //Создаем объект SessionOptions
		sessionOptions.HostName = HostName;
		sessionOptions.UserName = UserName;
		sessionOptions.Password = Password;
		
		sessionOptions.Protocol  = Protocol;
		sessionOptions.FTPSecure = FTPSecure;
		
		//sessionOptions.SshHostKeyFingerprint = SshHostKeyFingerprint;

		sessionoptions.PortNumber = PortNumber;
		
		
		session = Новый COMОбъект("WinSCP.Session"); //Создаем объект SessionOptions
		
		//masi {+ 
		//fingerprint = session.ScanFingerprint(sessionOptions,"SHA-256");
        //sessionOptions.SshHostKeyFingerprint = fingerprint;
				//masi -}
		//параметр необходимо использовать если пути регистрации DLL и исполняемого файла различны
		session.ExecutablePath = "C:\WinScp\winscp.exe";
		
		// Подключаемся
		session.Open(sessionOptions);
		
		Сообщить("Соединение успешно установлено");
	Исключение
		Сообщить("!: "+ОписаниеОшибки());
		Возврат;
	КонецПопытки;
Показать
20. leongl 552 24.11.20 15:29 Сейчас в теме
(19) Ошибка и на клиенте и на сервере? Может доступа на сервере/клиенте нет?
Пробовали отправку как описано в статье, а не через COMОбъект?
21. MasI 9 04.12.20 10:28 Сейчас в теме
Доброе утро!

Выполнил отправку не через com объект, а как написано в статье, ошибок не возникает, все вроде бы проходит гладко, но файл не переносится, не вижу его через приложение File Zila.

Возможно можете подсказать, в чем может быть дело?
23. leongl 552 04.12.20 15:25 Сейчас в теме
*infostart
(21) запустите с ключем /log=<FILENAME>.log, посмотрите что в логах.
26. Maznud 28.05.21 11:24 Сейчас в теме
(21)Здравствуйте, как вы решили проблему?
22. MasI 9 04.12.20 11:16 Сейчас в теме
Если делаю через Com объект, то ошибка возникает вот в этой строке

session.Open(sessionOptions);

насколько понимаю процедура срабатывает на клиенте, во всяком случае добавил Директиву &НаКлиенте

{ВнешняяОбработка.ОбменСSFTP.Форма.Форма.Форма(44)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (WinSCP): Connection failed.

Попробуем еще установить компоненту на сервере 1с, вдруг поможет...
24. MasI 9 24.12.20 15:50 Сейчас в теме
Запустил, логи получились следующие, если можете подсказать, где в них указание на ошибку буду очень признателен.

"C:\WinScp\winscp.exe" /console /script="C:\Users\imashevs\AppData\Local\Temp\241\v8_6322_13.txt" /log="C:\Users\imashevs\AppData\Local\Temp\241\v8_6322_14.log"
. 2020-12-24 13:59:46.637 --------------------------------------------------------------------------
. 2020-12-24 13:59:46.637 WinSCP Version 5.1.5 (Build 3261) (OS 6.2.9200)
. 2020-12-24 13:59:46.652 Configuration: C:\WinScp\winscp.ini
. 2020-12-24 13:59:46.652 Local account: EMEA\imashevs
. 2020-12-24 13:59:46.652 Working directory: C:\Program Files (x86)\1cv8\common
. 2020-12-24 13:59:46.652 Process ID: 83092
. 2020-12-24 13:59:46.652 Command-line: "C:\WinScp\winscp.exe" /console /script="C:\Users\imashevs\AppData\Local\Temp\241\v8_6322_13.txt" /log="C:\Users\imashevs\AppData\Local\Temp\241\v8_6322_14.log"
. 2020-12-24 13:59:46.652 Time zone: Current: GMT+3, Standard: GMT+3, DST: GMT+4, DST Start: 30.12.1899, DST End: 30.12.1899
. 2020-12-24 13:59:46.652 Login time: 24 Декабрь 2020 г. 13:59:46
. 2020-12-24 13:59:46.652 --------------------------------------------------------------------------
. 2020-12-24 13:59:46.652 Session name: tdlsftp (Ad-Hoc session)
. 2020-12-24 13:59:46.652 Host name: tdlsftp (Port: -1)
. 2020-12-24 13:59:46.652 User name: (Password: No, Key file: No)
. 2020-12-24 13:59:46.652 Tunnel: No
. 2020-12-24 13:59:46.652 Transfer Protocol: SFTP
. 2020-12-24 13:59:46.652 Ping type: -, Ping interval: 30 sec; Timeout: 15 sec
. 2020-12-24 13:59:46.652 Proxy: none
. 2020-12-24 13:59:46.652 SSH protocol version: 2; Compression: No
. 2020-12-24 13:59:46.652 Bypass authentication: No
. 2020-12-24 13:59:46.652 Try agent: Yes; Agent forwarding: No; TIS/CryptoCard: No; KI: Yes; GSSAPI: No
. 2020-12-24 13:59:46.652 Ciphers: aes,blowfish,3des,WARN,arcfour,des; Ssh2DES: No
. 2020-12-24 13:59:46.652 SSH Bugs: A,A,A,A,A,A,A,A,A,A
. 2020-12-24 13:59:46.652 Return code variable: Autodetect; Lookup user groups: A
. 2020-12-24 13:59:46.652 Shell: default
. 2020-12-24 13:59:46.652 EOL: 0, UTF: 2
. 2020-12-24 13:59:46.652 Clear aliases: Yes, Unset nat.vars: Yes, Resolve symlinks: Yes
. 2020-12-24 13:59:46.652 LS: ls -la, Ign LS warn: Yes, Scp1 Comp: No
. 2020-12-24 13:59:46.652 Local directory: default, Remote directory: /pwT1rnw==*########, Update: Yes, Cache: Yes
. 2020-12-24 13:59:46.652 Cache directory changes: Yes, Permanent: Yes
. 2020-12-24 13:59:46.652 DST mode: 1; Timezone offset: 0h 0m
. 2020-12-24 13:59:46.652 --------------------------------------------------------------------------
. 2020-12-24 13:59:46.652 Looking up host "tdlsftp"


option batch abort
option confirm on
open sftp://tdls###.........:22022 -hostkey="*"
put C:\WinScp\Test.txt /.//Test.txt
exit
25. MasI 9 24.12.20 16:09 Сейчас в теме
В логах вот такие данные выдаются. если можете подсказать, что они значат буду очень признателен

Ошибка выгрузки файлов
"C:\WinScp\winscp.exe" /console /script="C:\Users\imashevs\AppData\Local\Temp\241\v8_6322_13.txt" /log="C:\Users\imashevs\AppData\Local\Temp\241\v8_6322_14.log"
. 2020-12-24 13:59:46.637 --------------------------------------------------------------------------
. 2020-12-24 13:59:46.637 WinSCP Version 5.1.5 (Build 3261) (OS 6.2.9200)
. 2020-12-24 13:59:46.652 Configuration: C:\WinScp\winscp.ini
. 2020-12-24 13:59:46.652 Local account: EMEA\imashevs
. 2020-12-24 13:59:46.652 Working directory: C:\Program Files (x86)\1cv8\common
. 2020-12-24 13:59:46.652 Process ID: 83092
. 2020-12-24 13:59:46.652 Command-line: "C:\WinScp\winscp.exe" /console /script="C:\Users\imashevs\AppData\Local\Temp\241\v8_6322_13.txt" /log="C:\Users\imashevs\AppData\Local\Temp\241\v8_6322_14.log"
. 2020-12-24 13:59:46.652 Time zone: Current: GMT+3, Standard: GMT+3, DST: GMT+4, DST Start: 30.12.1899, DST End: 30.12.1899
. 2020-12-24 13:59:46.652 Login time: 24 Декабрь 2020 г. 13:59:46
. 2020-12-24 13:59:46.652 --------------------------------------------------------------------------
. 2020-12-24 13:59:46.652 Session name: tdlsftp (Ad-Hoc session)
. 2020-12-24 13:59:46.652 Host name: tdlsftp (Port: -1)
. 2020-12-24 13:59:46.652 User name: (Password: No, Key file: No)
. 2020-12-24 13:59:46.652 Tunnel: No
. 2020-12-24 13:59:46.652 Transfer Protocol: SFTP
. 2020-12-24 13:59:46.652 Ping type: -, Ping interval: 30 sec; Timeout: 15 sec
. 2020-12-24 13:59:46.652 Proxy: none
. 2020-12-24 13:59:46.652 SSH protocol version: 2; Compression: No
. 2020-12-24 13:59:46.652 Bypass authentication: No
. 2020-12-24 13:59:46.652 Try agent: Yes; Agent forwarding: No; TIS/CryptoCard: No; KI: Yes; GSSAPI: No
. 2020-12-24 13:59:46.652 Ciphers: aes,blowfish,3des,WARN,arcfour,des; Ssh2DES: No
. 2020-12-24 13:59:46.652 SSH Bugs: A,A,A,A,A,A,A,A,A,A
. 2020-12-24 13:59:46.652 Return code variable: Autodetect; Lookup user groups: A
. 2020-12-24 13:59:46.652 Shell: default
. 2020-12-24 13:59:46.652 EOL: 0, UTF: 2
. 2020-12-24 13:59:46.652 Clear aliases: Yes, Unset nat.vars: Yes, Resolve symlinks: Yes
. 2020-12-24 13:59:46.652 LS: ls -la, Ign LS warn: Yes, Scp1 Comp: No
. 2020-12-24 13:59:46.652 Local directory: default, Remote directory: ###################022, Update: Yes, Cache: Yes
. 2020-12-24 13:59:46.652 Cache directory changes: Yes, Permanent: Yes
. 2020-12-24 13:59:46.652 DST mode: 1; Timezone offset: 0h 0m
. 2020-12-24 13:59:46.652 --------------------------------------------------------------------------
. 2020-12-24 13:59:46.652 Looking up host "tdlsftp"


option batch abort
option confirm on
open sftp://tdlsf###########################com:22022 -hostkey="*"
put C:\WinScp\Test.txt /.//Test.txt
exit
27. user1273498 12 16.05.22 08:30 Сейчас в теме
К сожалению, ни один из описываемых методов передачи файлов через SFTP не сработал. ПРи использовании последнего команда выполняется, но файл на сервере SFTP не появляется.
28. RiK007 2 07.06.22 00:21 Сейчас в теме
тоже интересует через SFTP
29. bamblbi 09.08.22 14:31 Сейчас в теме
Кто ни будь знает как используя пакет OpenSSH (без дополнительной утилиты WinSCP) выполнять консольные команды к SFTP?
На linux все работает отлично sftp <login>@<server>, а на винде ни чего не работает, хотя и там и там OpenSSH client.
30. monser 07.10.22 16:29 Сейчас в теме
(29) Уважаемый, поделитесь пожалуйста информацией, как Вы взаимодействуете с SFTP под Linux. Нигде не могу найти подходящей информации.
31. bamblbi 07.10.22 18:29 Сейчас в теме
(30) sftp <login>@<server>. Я в linux использовал такую конструкцию для проверки (подключается все или нет). Там требуется ввод пароля вручную. Для того что бы в 1С использовать такую конструкцию "ЗапуститьПриложение(ТекСтрокаКоманды, ТекущийКаталог, ДождатьсяЗавершения, КодВозврата)" нужна доп утилита, которой в строку можно передавать параметр пароля. Например: expect или lftp. Я, честно, не пробовал автоматизировать это.

Если интересно как работать с SFTP для windows без регистрации объектов можете мою тему просмотреть: https://forum.infostart.ru/forum15/topic286717/
Оставьте свое сообщение