Имя: Пароль:
1C
1С v8
выгрузка на sftp на платформе 8.2
,
0 triviumfan
 
13.07.18
17:21
Доброго дня.

платформа 8.2 не может передавать через sftp. Но в нашей конторе используется и платформа 8.3. Можно ли как-то использовать возможности 8.3? Через СОМ? Есть также вариант использовать внешнюю компоненту для этих целей или стороннее ПО, но это тоже костыль)
1 braslavets
 
13.07.18
17:34
winscp.net
2 triviumfan
 
13.07.18
17:56
(1) ты тоже умеешь гуглить?
3 triviumfan
 
13.07.18
17:58
Первое, что приходит в голову, так это реализовать в другой базе передачу через этот дурацкий протокол (а может, в типовых, работающих на 8.3 уже и есть такая процедура общего модуля), и просто из моей на 8.2 подключаться для передачи...
4 tesseract
 
13.07.18
19:20
>>платформа 8.2 не может передавать через sftp. Но в нашей конторе используется и платформа 8.3.

Так она то-же не может. Только ftps. Сделайте просто скрипт который скачивает данные с sftp в доступный каталог.
5 Черный маклер
 
13.07.18
19:35
(4) + 1
база на 8.2 выгружает в локальный каталог
регламентное задание на 8.3 из локального каталога на sftp
6 d4rkmesa
 
13.07.18
20:17
(0) 8.3, как уже написали, все еще не поддерживает SFTP. В принципе, WinSCP - один из самых стабильных в плане интеграции, даром что костыли. У меня работает как часы: ежедневные авторассылки отчетов, обмены, интеграции и прочее. Одни из самых удачных костылей оказались. В принципе, можно просто установить его и самостоятельно/попросить админов написать скрипт, который бы пересылал из локальной папки файлы, которые туда складываются. Но мне удобнее все же через компоненту работать, вызывая соотв. методы в 1С.
7 sitex
 
naïve
13.07.18
21:48
Что вам мешает запускать скрипты, из 1с. sftp - это религия конторы ?! Можно реализовать и другими способами
8 triviumfan
 
15.07.18
10:40
(5) как вариант... из 8.2 выгружать файл и хранить кое-где, а с 8.3 обработку регламентно подключить и отправлять по sftp
9 triviumfan
 
16.07.18
16:46
Все-таки решил сделать на 8.2, тем более опыта не было с winscp.
Подскажите, пож-та, почему фоново не работает?
Никакую компоненту я не регал, тупо взял портативный winscp.exe, зашил в общий макет и регламентно отправляю.
Прикол в том, что если вызвать процедуру, вызывающуюся регламентно, то файл отправляется, а фоново - нет (пробовал и под 1cv8, и под администратором, хотя оба эти юзера принадлежат группе "администраторы").

Вот такая шляпа:

// 1. Получим WinSCP
    ПутьWinSCP = ПолучитьИмяВременногоФайла();
    лМакет = ПолучитьОбщийМакет("WinSCPexe");
    лХранилище = Новый ХранилищеЗначения(лМакет);
    лХранилище.Получить();
    лМакет.Записать(ПутьWinSCP);
    
    // 2. Скрипт
    ТекстСценария = "option batch abort
    |option confirm on
    |open " + НастройкиПодключения.Протокол + "://" + НастройкиПодключения.Логин + ":" + НастройкиПодключения.Пароль + "@" + НастройкиПодключения.Сервер + ":" + НастройкиПодключения.Порт + "
    |put " + ПутьКФайлу + " " + ПутьНазначения + "
    |exit";
    
    ИмяФайлаСценария = ПолучитьИмяВременногоФайла(".txt");
    ФайлСценария = Новый ТекстовыйДокумент;
    ФайлСценария.УстановитьТекст(ТекстСценария);
    ФайлСценария.Записать(ИмяФайлаСценария);
    ИмяФайлаЛога = ?(Лог = Неопределено, ПолучитьИмяВременногоФайла(".txt"), Лог);
    
    // 3. Выполнение
    Команда = """" + ПутьWinSCP + """ /console /script=""" + ИмяФайлаСценария + """" + " /log=""" + ИмяФайлаЛога + """";
    ЗапуститьПриложение(Команда,,Истина);
    
    УдалитьФайлы(ПутьWinSCP);
    УдалитьФайлы(ИмяФайлаСценария);

Так вот в логе я вижу:
2018-07-16 16:31:11.628 Asking user:
. 2018-07-16 16:31:11.628 **Continue connecting to an unknown server and add its host key to a cache?**
. 2018-07-16 16:31:11.628
. 2018-07-16 16:31:11.628 The server's host key was not found in the cache. You have no guarantee that the server is the computer you think it is.
. 2018-07-16 16:31:11.628
. 2018-07-16 16:31:11.628 The server's RSA key details are:
. 2018-07-16 16:31:11.628
. 2018-07-16 16:31:11.628     Algorithm:    ssh-rsa 2048
. 2018-07-16 16:31:11.628     SHA-256:    c5fZfihaHvbpruPxiyYmqel7NuzuZfpCwTawGnl7uvY=
. 2018-07-16 16:31:11.628     MD5:    af:29:36:b0:21:3d:c2:e8:1d:5f:02:34:39:82:70:68
. 2018-07-16 16:31:11.628
. 2018-07-16 16:31:11.628 If you trust this host, press Yes. To connect without adding host key to the cache, press No. To abandon the connection press Cancel.
. 2018-07-16 16:31:11.628 In scripting, you should use a -hostkey switch to configure the expected host key. ()
. 2018-07-16 16:31:24.128 Attempt to close connection due to fatal exception:
* 2018-07-16 16:31:24.128 Host key fingerprint is ssh-rsa 2048 c5fZfihaHvbpruPxiyYmqel7NuzuZfpCwTawGnl7uvY=.
* 2018-07-16 16:31:24.128 (Exception) **Host key wasn't verified!**
. 2018-07-16 16:31:24.128 Closing connection.
. 2018-07-16 16:31:24.128 Sending special code: 12

Почему вопрос вызывается? Ведь у меня "option confirm on"
10 triviumfan
 
16.07.18
17:25
Отбой, добавил "-hostkey=*" https://winscp.net/eng/docs/faq_hostkey
11 d4rkmesa
 
16.07.18
19:10
(9)>> Почему вопрос вызывается? Ведь у меня "option confirm on"

Ну вы же понимаете, что означает эта опция, это всякие запросы на подтверждения в диалоговом режиме? Естественно, в регламентном задании если и срабатывает, то в лучшем случае стопорит процесс. Да, надо указывать hostkey fingerprint, или использовать опцию giveupsecurityandacceptanysshhostkey.
12 triviumfan
 
17.07.18
08:57
(11) "Естественно, в регламентном задании если и срабатывает, то в лучшем случае стопорит процесс", - почему это должно быть очевидно? Я вот сильно удивлён
13 d4rkmesa
 
17.07.18
09:13
"confirm    off|on
Toggles confirmations (overwrite, etc.).
Commands affected: get, put
Default: off for commands specified using /script or /command; on for commands specified on input."

У вас как раз Script, т.к. в этом режиме интерактив не нужен, то и опция не всегда off.
14 d4rkmesa
 
17.07.18
09:14
* всегда off
15 triviumfan
 
17.07.18
11:03
Не помогло:
. 2018-07-17 11:02:51.988 Host key fingerprint is:
. 2018-07-17 11:02:51.988 ssh-rsa 2048 af:29:36:b0:21:3d:c2:e8:1d:5f:02:34:39:82:70:68 c5fZfihaHvbpruPxiyYmqel7NuzuZfpCwTawGnl7uvY=
. 2018-07-17 11:02:51.988 Asking user:
. 2018-07-17 11:02:51.988 **Continue connecting to an unknown server and add its host key to a cache?**
. 2018-07-17 11:02:51.988
. 2018-07-17 11:02:51.988 The server's host key was not found in the cache. You have no guarantee that the server is the computer you think it is.

-hostkey=* в данном случае помог
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.