Автор: Mikst 16.07.12, 14:59
Добрый день.
На платформе 7.7.025, конфигурация не важна. Нужно написать обработку которая бы выкладывала XML файл на SFTP сервер.
У меня получился такой код:
Процедура Сформировать()
Если ЗагрузитьВнешнююКомпоненту("DialMail.dll") = 0 Тогда
Сообщить("Не удалось загрузить внешнюю компоненту DialMail.dll");
Возврат;
Конецесли;
ИмяФайла = "asda";
SystComm = СоздатьОбъект("AddIn.SystComm");
Сообщить(SystComm.Версия);
FTP = СоздатьОбъект("AddIn.FTP");
FTP.ИмяЛогФайла = "";
FTP.ВестиЛогФайл = 0;
FTP.ИспользоватьSSL = 0;
FTPСервер = "Сервер";
FTPПользователь = "Логин";
FTPПароль = "Пароль";
FTPПорт = "22";
FTPПассивныйРежим = 0;
Если FTP.Подключиться(FTPСервер, FTPПорт, FTPПользователь, FTPПароль, FTPПассивныйРежим) = 0 тогда
Сообщить("соединение c " + FTPСервер + " не установлено...", "!");
Иначе
Сообщить("соединение c " + FTPСервер + " прошло успешно!");
Если FTP.ОтправитьФайл(КаталогИБ()+ "111.xml", ИмяФайла, 0) = 1 Тогда
тЧас = 0;
тМинута = 0;
тСекунда = 0;
ТекущееВремя(тЧас, тМинута, тСекунда);
Сообщить("Успешно!");
Иначе
Сообщить("Ошибка!");
КонецЕсли;
FTP.Отключиться();
КонецЕсли;
КонецПроцедуры
Результат обработки :
DialMail component 2.7.2b (с) SWA corp. (2002-2005)
соединение c Сервер не установлено...
Скажите пожалуйста, каким способом можно подключиться к SFTP серверу?
Автор: logist 16.07.12, 15:16
Цитата(DartRomanius @ 16.07.12, 16:11)
Ага, FTP порт 22?
А что не так? Речь идет об SFTP, т.е. передача файлов с использованием SSH
Автор: DartRomanius 16.07.12, 15:17
Сорри не досмотрел на SFTP.
Второе, DialMail умеет SFTP?
Автор: Mikst 16.07.12, 15:21
Цитата(DartRomanius @ 16.07.12, 16:17)
Сорри не досмотрел на SFTP.
Второе, DialMail умеет SFTP?
По идее не умеет, покарайне мере в описании ничего не сказано. Но ничего более подходящего я не смог найти.
Автор: logist 16.07.12, 15:29
Цитата(Mikst @ 16.07.12, 16:21) http://pro1c.org.ua/index.php?act=findpost&pid=53243 используя вызов командной строки из 1С. (как-то так, я в 77 не шарю, не знаю возможно ли)
Автор: Mikst 16.07.12, 15:35
Цитата(logist @ 16.07.12, 16:29) http://pro1c.org.ua/index.php?act=findpost&pid=53244 используя вызов командной строки из 1С. (как-то так, я в 77 не шарю, не знаю возможно ли)
А как эту беду потом связать с 1С 7.7?
Автор: logist 16.07.12, 15:36
Цитата(Mikst @ 16.07.12, 16:35)
А как эту беду потом связать с 1С 7.7?
Средствами 77 сохранить файл на диске, потом командной строкой передать куда надо. Это не аддон к 77, а приложение для виндовс.
Автор: Mikst 16.07.12, 15:47
Цитата(logist @ 16.07.12, 16:36)
командной строкой передать куда надо. Это не аддон к 77, а приложение для виндовс.
Так не подходит, нужно что бы файл сам выгружался автоматически в определенное время, без какого либо вмешательства пользователя.
Автор: Flexy 16.07.12, 15:48
Имхо удобнее заюзать софт типа NetDrive или WebDrive. Они мапят удаленные ресурсы, как локальный диск на ПК. Из 1С работа с таким диском через Объект "ФС".
Автор: logist 16.07.12, 15:52
Цитата(Mikst @ 16.07.12, 16:47)
Так не подходит, нужно что бы файл сам выгружался автоматически в определенное время, без какого либо вмешательства пользователя.
А где я написал что пользователь должен вмешиваться? Работать с командной строкой надо из 1С.
Автор: Mikst 07.08.12, 15:43
Создал я bat файл. При его запуске все успешно отрабатывает с помощью программы WinSCP, нужный файл попадает на sftp сервер. А вот из 1с файл запустить не получается. Точнее он запускается но эффекта никакого нету. Что делать?
при запуске bat файла из 1с пишет: "winscp.exe" не являеться внутренней или внешней командой, исполняемой программой или пакетным файлом
Автор: -=VJ=- 07.08.12, 16:36
Цитата(Mikst @ 07.08.12, 16:43)
Создал я bat файл.
А зачем? КомандаСистемы(<?>) есть
Раз не запускается - проверьте, нормальный ли путь к файлу. Возможно 1С просто не может его обработать.
Автор: Mikst 07.08.12, 16:54
Цитата(-=VJ=- @ 07.08.12, 17:36)
А зачем? КомандаСистемы(<?>) есть
Раз не запускается - проверьте, нормальный ли путь к файлу. Возможно 1С просто не может его обработать.
код пишу такой:
КомандаСистемы(КаталогИБ() + "WinSCP\sftp.bat");
В файле sftp.bat такой код:
winscp.exe /console /script=script.ini
В файле script.ini такой код:
# Вывод лога на экран
option echo on
# Автоматическое подтверждение действия по умолчанию
option confirm off
# Соединяемся с сервером
open sftp://логин:пароль@сервер
# Загружаем файл обмена на сервер
put I:\База\WinSCP\11.xml /11.xml
# Отсоединяемся от сервера
close
# Закрываем WinSCP
exit
Путь находит, сам файл запускается но не отрабатывает. Может как то можно это все вызвать сразу из 1с но я не знаю как.
Автор: logist 07.08.12, 17:46
КомандаСистемы(КаталогИБ() + "WinSCP\winscp.exe /console /script=script.ini");
bat файл не нужен.
Цитата(Mikst @ 07.08.12, 17:54)
файл запускается но не отрабатывает
Возможно нет исходного файла, или файл назначения уже есть, у вас же включено автоподтверждение поэтому вы не видите результата работы.
Автор: Mikst 08.08.12, 9:21
Цитата(logist @ 07.08.12, 18:46) http://pro1c.org.ua/index.php?act=findpost&pid=54253
Возможно нет исходного файла, или файл назначения уже есть, у вас же включено автоподтверждение поэтому вы не видите результата работы.
А не счет этого ведь если просто бат файл запускаю, то ведь все отрабатывает
Я нашел в чем причина. Если файлы положить не в "I:\база\WinSCP", а в "І:\база\пользователи\ИмяПользователя", то бат файл отрабатывает и из 1с. Почему так?
Автор: logist 08.08.12, 9:22
Цитата(Mikst @ 08.08.12, 10:06)
если без bat файла а так как Вы написали, то выдает сообщение: "Системе не удается найти указанный путь".
Хотя все ведь лежит на своих местах.
Вместо "КомандаСистемы" используйте "ЗапуститьПриложение"
Автор: Mikst 08.08.12, 9:28
Я нашел в чем причина. Если файлы положить не в "I:\база\WinSCP", а в "І:\база\пользователи\ИмяПользователя", то бат файл отрабатывает и из 1с. Почему так?
Автор: Vofka 08.08.12, 9:29
Цитата(Mikst @ 08.08.12, 10:28)
Почему так?
Наверное в правах доступа дело.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua