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

23.05.18

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

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

Скачать файлы

Наименование Файл Версия Размер
Опять про sFTP и вообще: Обертка для WinSCP с расширенным логированием
.epf 5,27Kb
86
.epf 5,27Kb 86 Скачать

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

См. также

Перенос данных из Парус 8 в ЗГУ 3

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

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

84000 руб.

19.08.2020    22456    19    1    

22

Перенос данных из Парус 10 в ЗГУ ред.3

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

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

60000 руб.

05.10.2022    9216    9    8    

10

Перенос данных из Парус 7.хх в ЗГУ ред.3

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

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

24000 руб.

24.04.2017    48711    96    163    

86

Перенос начальных остатков из Парус 7.71 в БГУ

Внешние источники данных Взаиморасчеты Учет ОС и НМА Логистика, склад и ТМЦ Бюджетный учет Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 2.0 1С:Бухгалтерия государственного учреждения Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Перенос словарей и начальных остатков из ПП Парус-Бухгалтерия Бюджет 7.71 в 1Сv8 БГУ2. Заполнение словарей и документов по вводу начальных остатков. Не требуется установка ПП Парус7. Возможна дозагрузка. Позволит автоматически и наиболее полно ввести данные в программу для начала работы. 

15600 руб.

08.12.2011    81572    128    123    

147

Перенос данных из Парус 10 (Торнадо) в ЗГУ ред.3 через Excel

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

Обработка позволяет перенести кадровую информацию и данные по заработной плате из Парус 10(Торнадо) учреждений через файлы Excel в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ). В принципе, обработка может быть использована для загрузки из файлов Excel, полученных из любых информационных систем.

24000 руб.

16.11.2018    30005    20    31    

21

Загрузка спецификаций в УНФ из системы Базис-мебельщик

Производство готовой продукции (работ, услуг) Внешние источники данных Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 Лесное и деревообрабатывающее хозяйство Россия Управленческий учет Платные (руб)

Обработка предназначена для загрузки файлов, выгруженных из системы Базис-мебельщик, в справочник "Спецификации" для последующих процессов учета и диспетчирования полуфабрикатов и изделий.

7200 руб.

24.06.2021    19132    52    50    

29
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. onec.developer 181 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 181 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 93 16.07.18 09:54 Сейчас в теме
Что-то у меня файл не отправляется. Где логи посмотреть? И как их включить...
8. triviumfan 93 16.07.18 10:07 Сейчас в теме
(7) Туплю...
Команда = """" + ПутьWinSCP + """ /console /script=""" + ИмяФайлаСценария + """" + " /log=""" + ИмяФайлаЛога + """";

Но почему то моей папки не видит...
9. triviumfan 93 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 93 16.07.18 10:12 Сейчас в теме
(9) Попробовал из другого пути (С:\мойфайл.хмл) и заработало.
В чём прикол? Опять беда с кириллицей в пути? Или путь у меня был слишком длинный?
11. palsergeich 11.10.19 12:05 Сейчас в теме
(9) А пробела там в пути не было?
12. triviumfan 93 11.10.19 15:38 Сейчас в теме
(11) был. Задача решена, не помню уже причину ошибок.
13. ChepurkoMax 01.10.20 08:38 Сейчас в теме
А прокси где прописывать если с winscp работаешь?
14. leongl 524 01.10.20 12:43 Сейчас в теме
15. MasI 9 23.11.20 12:45 Сейчас в теме
Подскажите в точности повторил код, зарегистрировал WinScp, но при попытке соединения выдается ошибка Произошла исключительная ситуация WinSCP Connection Failed. Понять бы в какую сторону копать?
16. leongl 524 23.11.20 15:46 Сейчас в теме
17. MasI 9 24.11.20 00:44 Сейчас в теме
Да? в File Zila или если открываю через Win CSP то все открывается успешно
18. leongl 524 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 524 24.11.20 15:29 Сейчас в теме
(19) Ошибка и на клиенте и на сервере? Может доступа на сервере/клиенте нет?
Пробовали отправку как описано в статье, а не через COMОбъект?
21. MasI 9 04.12.20 10:28 Сейчас в теме
Доброе утро!

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

Возможно можете подсказать, в чем может быть дело?
23. leongl 524 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. Rishat7 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/
Оставьте свое сообщение