INFOSTART EVENT 2018 EDUCATION

Второй тур голосования за доклады.
Окончание 5 сентября.

Федотов Виталий | Ведущий специалист | ГК Невада

«Повышение эффективности работы отдела разработки»

Основные слагаемые успеха: - Архитектура - Грамотный код - Ориентация на повторное использование кода - Управление ошибками Методы: - Обучение линейного и руководящего состава - Внимание на архитектуру - Итерационный подход к разработке API - Профилирование Результат: Повышение производительности труда отдела разработки в 2-3 раза. Особенность доклада заключается в изложении личного опыта построения работы отдела, где описанные методы были с успехом применены и повысили производительность труда отдела разработки.

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

Обмен - Обмен с другими системами

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

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

29

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

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

См. также

Комментарии
Сортировка: Древо
1. onec.developer 110 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
4. onec.developer 110 24.05.18 14:21 Сейчас в теме
если в мобильное приложение зашить только плагин, подхватит подключение без установки самого приложения? кто то пробовал?
5. viptextil1 13 30.05.18 09:04 Сейчас в теме
Из трех вышеуказанных протоколов, на мой взгляд, sftp самый предпочтительный для передачи не очень больших объемов информации (до нескольких Гб), поскольку используется один порт и гораздо проще реализовать проброс порта. И к тому же по сравнению с ftp передаваемые данные (и пароли) шифруются.

Под Linux пользуюсь консольным клиентом lftp.wiki
6. Region102 32 30.05.18 13:00 Сейчас в теме
Вот вам в копилку по той же теме, только не статья а видео https://www.youtube.com/watch?v=UEAMWQles04
7. yelloo 16.07.18 09:54 Сейчас в теме
Что-то у меня файл не отправляется. Где логи посмотреть? И как их включить...
8. yelloo 16.07.18 10:07 Сейчас в теме
(7) Туплю...
Команда = """" + ПутьWinSCP + """ /console /script=""" + ИмяФайлаСценария + """" + " /log=""" + ИмяФайлаЛога + """";

Но почему то моей папки не видит...
9. yelloo 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. yelloo 16.07.18 10:12 Сейчас в теме
(9) Попробовал из другого пути (С:\мойфайл.хмл) и заработало.
В чём прикол? Опять беда с кириллицей в пути? Или путь у меня был слишком длинный?
Оставьте свое сообщение