Имя: Пароль:
1C
 
SFTP не работает в фоновых процессах
0 Гений 1С
 
гуру
17.10.22
18:38
База файловая, проверил, фоновые выполняются на том же компьютере, где стоит SFTP, но в фоне почему-то не отрабатывает.
Если вручную запускать, то работает.
Как понять причину ошибки? Может лог у нее есть или ключ какой добавить, чтобы лог вела?
Или может Start может возвращать ошибку более развернуто?


ПутьWinSCP = "C:\Program Files (x86)\WinSCP\WinSCP.com";
    ПрофильWinSCP = "favclient";
    
    СтрокаПрограммы = """" + ПутьWinSCP + """" + " /console /command " + """option batch abort"" " + """open " + ПрофильWinSCP + """ " + """put " + Лок_ИмяФайла + " " + Внеш_ИмяФайла + """ " + """close"" ""exit""";

    net = Новый COMОбъект("WScript.Shell");
    Результат = net.Run(СтрокаПрограммы, 0, Истина);  //Результат 1 - ошибка, 0 - ок
    

    Если Результат = 1 Тогда
        ЗаписьЖурналаРегистрации("Отладка.SFTP.Ошибка",,,,СтрокаПрограммы);
    Иначе
        ЗаписьЖурналаРегистрации("Отладка.SFTP.ОК",,,,СтрокаПрограммы);
    КонецЕсли;
1 ДедМорроз
 
17.10.22
20:37
Я делал через Com-Proxy для WinSCP - там и работать пооще и отлаживать.
А так,можно попробовать через bat-файл,чтобы понять,что пошло не так - там можно поток и поток ошибок перенаправлять.
2 Гений 1С
 
гуру
18.10.22
10:11
(1) вот я думаю, может там сам файл не запускается, тогда лог бесполезен, как бы отловить запустился файл лии нет из Shell? Переписывать не вариант на COM-Proxy, конечно.
3 PLUT
 
18.10.22
10:29
(0) магическое заклинание в параметрах запуска базы /РежимОтладки

в отладке жмакаешь галочку для фоновых заданий Автоматическое подключение... - фоновые задания (чтобы отладчик в них попадал)

ставишь точку останова на своём гениальном коде и запускаешь фоновое задание
4 Гений 1С
 
гуру
18.10.22
12:28
(3) про заклинание знаю, но ведь тогда оно будет в режиме клиента выполняться а не фонового задания и выполнится. и что мне это даст?
Кстати, вопрос временно снимается, они увеличили ресурс сервера, где крутится 1с и в фоновых стало выполняться, может памяти не хватало. в общем, пока норм.
5 vde69
 
18.10.22
12:58
проблема в том, что для sftp нужен сертификат, без него не работает. У тебя банально соединение не видит сертификат (его или нет, или к нему нет доступа)
6 Гений 1С
 
гуру
03.11.22
20:28
(5) найн, проблема не в этом. В логе увидел корень зла:

< 2022-10-28 20:10:01.426 Script: В скриптах не следует полагаться на сохранённые подключения, взамен используйте эту команду:
< 2022-10-28 20:10:01.426 Script: open sftp://root:***@IP.IP.IP.IP/ -hostkey="************"

Т.е. я использовал сохраненные подключения, а они в фоне не доступны

Перешел на авторизацию через
"""open sftp://IP.IP.IP.IP/ -username=ftp_user -password=**** "" "

https://winscp.net/eng/docs/scriptcommand_open
7 Гений 1С
 
гуру
07.11.22
21:49
Добавил еще ключ в команду open:
-certificate=*

Чтобы не проверяло сертификат сервера, а то запрашивает у пользователя разрешение, а пользователя то нет
https://winscp.net/eng/docs/scriptcommand_open#certificate
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн