Имя: Пароль:
1C
 
Не могу оправить файл из 1с на SFTP c с использованием WinSCP
0 e053nk
 
05.10.25
23:52
Так как 1с сама не умеет пытаюсь отправить с помощью конструкции:
	ПутьWinSCP="C:\Program Files (x86)\WinSCP\WinSCP.com"; 
	// ПрофильWinSCP="ObmenBI";
	 ПрофильWinSCP="sftp://логин:пароль@сервер:порт/";
	 
	 Лок_ИмяФайла=Путь;
	 Внеш_ИмяФайла="";
	СтрокаПрограммы = """" + ПутьWinSCP + """" + " /console /command " + """option batch abort"" " + """open " + ПрофильWinSCP + """ " + """put -delete " + Лок_ИмяФайла + "\*.csv " + Внеш_ИмяФайла + """ " + """close"" ""exit""";
	net = Новый COMОбъект("WScript.Shell");
	Результат = net.Run(СтрокаПрограммы, 0, Истина); 


1с задумывается не надолго, но ничего не происходит -в Результат приходит 0, код ошибки 0.
При этом ни в логах 1с, ни в логах WinSCP вообще ничего не пишется.

Если беру СтрокаПрограммы ,сформированную уже, копирую в командную строку-обмен проходит, в логе WinSCP виды шаги обмена.

Почему 1с не может запусить этот процесс?
Платформа 8.3, 27
Запуск делаю на сервере 1с (сижу в терминале), Win Server2016
1 Asmody
 
06.10.25
01:06
(0) нафиг com-объект?
2 e053nk
 
06.10.25
01:09
Что нашел на просторах Интернета. Если есть еще варианты-просветите, может чего не понял в реализации обмена.
3 b_ru
 
06.10.25
04:27
КомандаСистемы же есть, не нужен COM.
Надо так:
СтрокаПрограммы = СтрокаПрограммы + " >>C:\Temp\log.txt" // сохраним текст, который написала winscp в консоль, может ошибку прочтем. Ессно каталог такой должен быть и в него должна быть разрешена запись
КомандаСистемы(СтрокаПрограммы);
4 PuhUfa
 
06.10.25
06:23
(0) >>Запуск делаю на сервере 1с (сижу в терминале), Win Server2016
А сервер 1С под кем запущен? А соответствующие права у этого пользователя есть?
А на сервере 1С WinSCP.com то вообще есть?
5 1Снег
 
06.10.25
06:54
Скорее всего winscp предлагает ключ обмена добавить в реестр. А чтобы не спрашивал, надо указывать ключ что-то типа
-hostkey="ssh-rsa 2048 31:3a:7a:3d........"