Работа с ftp из мобильного приложения 1С

05.11.15

Разработка - Мобильная разработка

Работа с ftp из мобильного приложения 1С с использованием сторонней программы

Добрый день!

Я собираюсь поделиться опытом в разработке мобильного приложения средствами 1С. На данный момент, к моему глубочайшему сожалению, мобильная 1С не умеет одну очень важную вещь. В отличие от обычного клиента мобильный не знает, что такое FTPсоединение.

Глубокий поиск по просторам интернета привел меня к выводу, что решение проблемы возможно в  4 вариантах:

1. Для самых навороченных и крутых кодеров - используя навыки кодерства и знания android API, средствами 1С наваять свой FTP загрузчик (или выгрузчик, как кому больше по нраву придется). Готовых предложений в таком виде не нашел

2. Для знатоков программирования под андроид - написать свое приложение, которое будет отправлять данные по желанию.

3. Для обычных смертных программистов - напрямую вытекает из пункта 2, взять готовую программу и средствами 1С заставить ее выполнять необходимый функционал.

4. Ждать, пока 1С родит версию, которая умеет FTPСоединение.

Для реализации своей мысли я выбрал вариант 3, о котором, собственно, и буду рассказывать в данной статье.

Для начала была скачана программа AndFtp, принципиальной разницы нет, какую утилиту использовать, но для иной, вероятно, придется править код. Данная программа взята потому, что первой попалась на глаза в гугле.

Собственно, код, который загружает с FTP файл Config.xml и отправляет обратно ConfigRE.xml:

//Загрузка
//Для начала создаем понятный андроиду объект
ОбъектАндроид = Новый ЗапускПриложенияМобильногоУстройства();
//Создаем intent, событие чтобы андроид понял что сейчас будет
ОбъектАндроид.Действие = "android.intent.action.PICK";
//Передаем данные с которыми предстоит работать
ОбъектАндроид.Данные = "ftp://адрес_вашего_сервера:Порт_Вашего_Сервера";
//И сразу же объясняем что это и чем открыть
ОбъектАндроид.Тип = "vnd.android.cursor.dir/lysesoft.andftp.uri";
//Теперь немного параметров для самой программы
ОбъектАндроид.ДополнительныеДанные.Добавить("ftp_username" ,"test");
ОбъектАндроид.ДополнительныеДанные.Добавить("ftp_password" ,"test");
ОбъектАндроид.ДополнительныеДанные.Добавить("ftp_pasv" ,"true");
//Указание команды которую будет выполнять программа
ОбъектАндроид.ДополнительныеДанные.Добавить("command_type" ,"download");
//Чисто декоративная надпись
ОбъектАндроид.ДополнительныеДанные.Добавить("progress_title" ,"load Config");
//Указание файла который следует скачать
//в моем случае он лежит в корне FTP, для других вариантов следует указывать путь вида "/Папка1/Папка2/../Имя_файла"
ОбъектАндроид.ДополнительныеДанные.Добавить("remote_file1" ,"Config.xml");
//И папочка куда скачиваем
ОбъектАндроид.ДополнительныеДанные.Добавить("local_folder" ,"/sdcard/Download");
//Выполняем программу
ОбъектАндроид.Запустить(Ложь);

ОбъектАндроид = Неопределено;

//ВЫгрузка
ОбъектАндроид = Новый ЗапускПриложенияМобильногоУстройства();
ОбъектАндроид.Действие = "android.intent.action.PICK";
ОбъектАндроид.Данные = "ftp://адрес_вашего_сервера:Порт_Вашего_Сервера";
ОбъектАндроид.Тип = "vnd.android.cursor.dir/lysesoft.andftp.uri";

ОбъектАндроид.ДополнительныеДанные.Добавить("ftp_username" ,"test");
ОбъектАндроид.ДополнительныеДанные.Добавить("ftp_password" ,"test");
ОбъектАндроид.ДополнительныеДанные.Добавить("ftp_pasv" ,"true");
//От загрузки выгрузка на FTP отличается только командой и обращением с файлами
ОбъектАндроид.ДополнительныеДанные.Добавить("command_type" ,"upload");
ОбъектАндроид.ДополнительныеДанные.Добавить("progress_title" ,"Upload Config");
//Как видно имя параметров немного отличается от загрузки
//remote_folder указан пустой строкой поскольку файл должен попасть в корень FTP
ОбъектАндроид.ДополнительныеДанные.Добавить("local_file1" ,"/sdcard/Download/ConfigRE.xml");
ОбъектАндроид.ДополнительныеДанные.Добавить("remote_folder" ,"");

ОбъектАндроид.Запустить(Ложь);

Из скользких моментов могу добавить, что код будет выполняться только на стороне клиента, при попытке запуска на сервере не распознается ЗапускПриложенияМобильногоУстройства. При передаче значений в переменные очень критичен регистр в именах.

Для тех, кто хочет большего:

1. Статья, которая дала неоценимую помощь в понимании Сюда

2. Статья, объясняющая, что такое intent в принципе и зачем он нужен Сюда

3. Альтернативный путь решения, тоже с внешней компонентой, ибо без нее не запускается вообще Сюда, почему-то через HTTPЗапрос

4. И, конечно, описание работы AndFtp, видимо на яве, но я не уверен Сюда

Благодарю за внимание.

мобильное приложение FTP android внешние утилиты

См. также

Мобильная разработка Сканер штрих-кода Терминал сбора данных Управляемые формы Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн - все это содержит в себе решение 1С "Штрихкод-информер" (штрих-код чекер). Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

3000 руб.

03.12.2018    62168    212    103    

180

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 руб.

27.12.2021    41771    118    167    

213

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный ТСД (терминал сбора данных) сканер для 1С для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    102431    626    191    

336

Мобильная разработка Программист Платформа 1С v8.3 Мобильная платформа 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Абонемент ($m)

Товары (либо другие учетные объекты) могут быть промаркированы штрихкодами либо быть без штрихкодов, но с число-буквенным обозначением (артикулом, VIN-номером и т.д.). И та, и другая ситуация не проблема для SimpleUI. Но что делать, если нет ни того, ни другого? Вообще никакой маркировки. Как можно максимально ускорить работу с таким объектами? В статье показываю новые фичи релиза и готовые для встраивания поисковые комбайны на все случаи жизни. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

14.04.2025    1312    4    informa1555    0    

15

Мобильная разработка Программист Платформа 1С v8.3 Абонемент ($m)

В Simple появился еще один онлайн-режим, не через REST-API, а через веб-сокеты. Показываю, что это дает, ради чего было сделано. А также два чисто онлайновых примера с такими обработчиками еще и с использованием новой ActiveCV 2.0. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

07.02.2025    3585    informa1555    3    

28

Мобильная разработка WEB-интеграция Программист Мобильная платформа Абонемент ($m)

Экспериментальный релиз и простенький скрипт к нему закрывает потребности в любых видах синхронизации между устройствами Simple и между Simple и бек-системами (например 1С). По сути – это очень простой python-скрипт, который можно запустить на доступной машине, сервере или VPS и он будет связывать клиентские устройства между собой и с 1С или другими бек-системами. В самой платформе появилось для этого множество доработок для поддержки стабильного постоянного соединения, докачки больших файлов и работе в фоне. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

23.08.2024    1874    6    informa1555    1    

13

Мобильная разработка Мобильная платформа Абонемент ($m)

В этом релизе собрано много нового из области интерфейса, связи, хранения и важные новые способы управления. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

25.06.2024    3440    29    informa1555    0    

34
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. mihey 11 06.11.15 09:49 Сейчас в теме
А не умеет потому что это прошлый век, файлы гонять по ftp, сейчас модно веб-сервисы
It-developer; +1 Ответить
2. NekoZver 76 06.11.15 10:12 Сейчас в теме
(1) mihey, Старый конь борозды не портит, а мода это понятие быстро проходящее. Не стоит забрасывать удобные интерфейсы если появились новые, к тому же ты не представляешь сколько лабуды на FTP работает, не все такие резвые как ты. Иногда есть просто суровая необходимость.
user1302055; wolder; +2 Ответить
32. KoshevoyEN 10.11.22 11:00 Сейчас в теме
(1)Окей, ситуация. Есть склад, есть офис. На складе мобильная платформа, в офисе центральная бд. Нужно передать результаты подбора со склада в ЦБД. Сети на складе нет, а если и есть она не объединена с офисом. Чтобы передать посредством сервиса, придется пускать наружу веб-сервер, либо танцевать с бубном около ВПНов и т.д. Если использовать для этого ftp, то это всего лишь настроить ftp. Так что http и web сервисы не всегда выигрывают.
NekoZver; +1 Ответить
3. flyer 233 06.11.15 11:28 Сейчас в теме
не везде клиенты могут открыть доступ к веб сервису так что пока фтп остается актуальным
RuSeek; философ; wolder; 1c_developer; dj_serega; NekoZver; +6 Ответить
4. Byrabyk 28.06.16 14:04 Сейчас в теме
А сразу несколько файлов можно выгрузить?
5. NekoZver 76 02.07.16 08:28 Сейчас в теме
(4) Byrabyk, не побывал, но в описании AndFtp есть вот такой кусочек
And define file(s) to download into a local folder:
intent.putExtra("remote_file1", "/remotefolder/subfolder/file1.zip");
intent.putExtra("remote_file2", "/remotefolder/subfolder/file2.zip");


я думаю будет выглядеть вот так например
ОбъектАндроид.ДополнительныеДанные.Добавить("local_file1" ,"/sdcard/Download/File1.xml");
ОбъектАндроид.ДополнительныеДанные.Добавить("local_file2" ,"/sdcard/Download/File2.xml");
ОбъектАндроид.ДополнительныеДанные.Добавить("local_file3" ,"/sdcard/Download/File3.xml");
6. set5553 31.07.16 19:09 Сейчас в теме
Что-то не работает этот кусок кода. Все перепробовал
9. NekoZver 76 17.10.16 11:12 Сейчас в теме
(6) set5553, это который кусок?
(8) rhtr, к великой печали моей не нашел :(
11. set5553 19.02.17 22:11 Сейчас в теме
(9) а код пишется в контексте? #Если МобильноеПриложениеКлиент ? Или другое?
13. NekoZver 76 04.04.17 12:39 Сейчас в теме
(11) я настраивал проверку синтаксиса, смысле отключил проверку для обычного клиента и проверял только мобильный синтаксис ибо у меня все приложение работало на андроиде
33. KoshevoyEN 10.11.22 12:24 Сейчас в теме
(11) У меня проверка синтаксиса перестала ругаться с условием "#Если МобильноеПриложениеКлиент Тогда ..."
7. rhtr 94 19.09.16 09:33 Сейчас в теме
Закрыть "AndFtp" после получения/передачи файлов.

ОбъектАндроид.ДополнительныеДанные.Добавить("close_ui", "true");
CyberCerber; NekoZver; +2 Ответить
8. rhtr 94 19.09.16 14:45 Сейчас в теме
А вот как удалить файл с FTP ?
10. ALLES 66 13.01.17 19:36 Сейчас в теме
вот и доказывай заказчику, что это прошлый век, когда он хочет чтобы через ФТП и никаких веб сервисов
12. dj_serega 395 20.02.17 10:30 Сейчас в теме
Я в свое время юзал AcodeTools. Там есть не только фытыпы.

upd: Но за публикацию держите + ;)
NekoZver; +1 Ответить
14. spezc 796 04.04.17 14:24 Сейчас в теме
Надеюсь это мне не понадобится. Но звезду поставил, за желание делиться опытом)
wolder; NekoZver; +2 Ответить
15. rougudz 05.04.17 18:15 Сейчас в теме
Спасибо за труды все работает на ура. единственная проблема возникла с проверкой отправлен ли файл или нет. судя по мануалу он возвращает свойство TRANSFERSTATUS, но вот как его прочитать из 1С я так и не понял. а сие бы для меня очень важно. так так выгруженные документы помечаются как уже выгруженные. а в случае ошибки передачи, они также пометятся и юзер об этом не узнает.
22. 8149 15.08.19 09:54 Сейчас в теме
(15)

ОбъектАндроид.Запустить(Истина);

в оладке остановись после,
посмотри ДополнительныеДанные через "F2"(Рассчитать).
там все найдешь.
23. rougudz 15.08.19 13:14 Сейчас в теме
16. DevMob 11 06.10.17 15:07 Сейчас в теме
День добрый. Где можно взять список всех команд?
17. NekoZver 76 09.10.17 09:53 Сейчас в теме
(16) Добрый, я все что нашел вот Здесь
Там в нижней части сайта табличка с командами
CyberCerber; +1 Ответить
18. DevMob 11 09.10.17 10:14 Сейчас в теме
19. DevMob 11 10.10.17 15:24 Сейчас в теме
Еще вопрос как создать директорию на ftp, что-то не могу найти в мануале как это сделать.
20. пользователь 18.10.18 17:56
Сообщение было скрыто модератором.
...
21. user592559_vitus_b 15.03.19 02:10 Сейчас в теме
Большое спасибо )))
NekoZver; +1 Ответить
24. Сурикат 403 21.04.20 14:17 Сейчас в теме
На мобильном устройстве можно воспользоваться методом КопироватьФайл, он умеет работать с FTP
25. Nikifforoff96 25.06.20 18:18 Сейчас в теме
(24) Нельзя, на мобильном этот метод не работает с ftp
26. wolder 133 03.03.21 04:54 Сейчас в теме
Отлично! Спасибо автору!
Что-то новое появилось в платформе 1С по этому вопросу?
NekoZver; +1 Ответить
27. FilippovRI 76 19.05.21 20:07 Сейчас в теме
(26) Не нашел, пользуюсь этой штукой
NekoZver; +1 Ответить
28. NekoZver 76 20.05.21 14:32 Сейчас в теме
(27) Спасибо, а то я давненько в теме не копался. Не знал что ответить
29. userMKA 19.08.21 15:40 Сейчас в теме
Добрый день.
Подскажите, как программно убрать уведомления о том, что произошла скачивание/выгрузка файл с/на ftp/
Уведомление о перезаписи убираем ОбъектАндроид.ДополнительныеДанные.Добавить("ftp_overwrite", "overwrite");
Есть ли что-то аналогичное, чтобы не надо было нажимать каждый раз "Ок" при заказчке?
30. drevilo 5 15.10.22 14:14 Сейчас в теме
Полезно, работает, спасибо!
31. odinsmot 27.10.22 03:39 Сейчас в теме
тестфайл = КаталогВременныхФайлов()+"qqqwww.txt";  //получилось /data/user/0/a.a.mp/cache/qqqwww.txt
ЗначениеВФайл(тестфайл , данные);
МассивСФайлами = НайтиФайлы(КаталогВременныхФайлов() , "*");  //в массиве МассивСФайлами есть /data/user/0/a.a.mp/cache/qqqwww.txt
//настройка ОбъектАндроид
ОбъектАндроид.ДополнительныеДанные.Добавить("local_file1" ,тестфайл);
ОбъектАндроид.ДополнительныеДанные.Добавить("remote_folder" ,"");
ОбъектАндроид.Запустить(Ложь);  //Выгрузка не удалась: File not found /data/user/0/a.a.mp/cache/qqqwww.txt
Почему andftp не находит файл?
Платформа 8.3.21.26
Android 9
35. odinsmot 02.12.22 03:15 Сейчас в теме
(31) Сначала я поставил AndFTP 6. А эта версия для Android 11. Поставил AndFTP 5 и всё заработало.
34. KoshevoyEN 10.11.22 13:19 Сейчас в теме
Спасибо за информацию. Очень выручили. Не думал, что мобильная платформа не умеет с FTP...

От себя добавлю еще один важный параметр:
ОбъектАндроид.ДополнительныеДанные.Добавить("ftp_overwrite", "overwrite");

Дабы приложение не спрашивало что делать, если файл уже существует.
odinsmot; +1 Ответить
36. user1475907 21.08.23 14:50 Сейчас в теме
FTP УЖЕ НЕ АКТУАЛЬНО
Кладете файлы в папку мобильного приложения на сервере и получаете на Планшете

#Если МобильноеПриложениеКлиент или МобильноеПриложениеСервер Тогда
Каталог = "/storage/emulated/0/1C/INPUT/"; //Папка в мобильном приложении
#Иначе
Каталог = "C:\0-Картинки\"; //Для проверки на ПК
#КонецЕсли

СсылкаНаZipФайл = "http://ВНЕШНИЙ_IP/ИмяМобильногоПриложения/zip/ВашФайл.zip" ;
КопироватьФайл (СсылкаНаZipФайл, Каталог + "ВашФайл.zip";
37. user1475907 21.08.23 15:57 Сейчас в теме
(36) Путь на серваке C:\inetpub\wwwroot\ИмяМобильногоПриложения\zip
На zip даем разрешения
38. user1995171 28.09.23 23:22 Сейчас в теме
Здравствуйте. Возникла проблема при работе приложения AndFTP, которое вызывается мобильным приложением 1С. С мобильного устройства передача файлов (Upload) на FTP-сервер производится быстро и без каких-либо сбоев, а вот с FTP-сервера на мобильное устройство (Download) - вообще никак. При этом приложение AndFTP список файлов на FTP-сервере читает верно. При передаче Download появляются ошибки Download failed: java.net.SocketException: Connection reset или Broken pipe. Может, у кого-то возникали аналогичніе ошибки и нашли решение? Помогите, если можете.
Оставьте свое сообщение