Работа с 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С v8.3 1С:Конвертация данных Платные (руб)

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

13200 руб.

27.12.2021    38198    108    161    

201

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

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

3000 руб.

03.12.2018    59291    192    103    

172

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь Платформа 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    97226    586    189    

321

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

Вашему вниманию предлагается специализированное программное обеспечение для терминалов сбора данных со встроенным сканером штрихкода. Предназначено для цифровизации всех товароучетных операций на любых складах, в том числе с адресным хранением различной сложности. Позволяет ускорить и упростить работу кладовщиков, а также снизить вероятность ошибок при работе, обусловленных человеческим фактором.

3450 руб.

28.04.2023    9470    15    0    

9

Мобильная разработка Платформа 1С v8.3 Конфигурации 1cv8 Финансовые услуги, инвестиции Управленческий учет Платные (руб)

Мобильное приложение и конфигурация 1С для автоматической торговли на бирже через API Тинькофф банка. Достаточно задать настройки, нажать «Пуск», и робот сам торгует ежедневно.

7000 руб.

25.05.2022    4644    1    0    

6

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

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

1 стартмани

23.08.2024    1217    6    informa1555    1    

13

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

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

1 стартмани

25.06.2024    2607    29    informa1555    0    

33
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. mihey 11 06.11.15 09:49 Сейчас в теме
А не умеет потому что это прошлый век, файлы гонять по ftp, сейчас модно веб-сервисы
It-developer; +1 Ответить
2. NekoZver 75 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 75 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 75 17.10.16 11:12 Сейчас в теме
(6) set5553, это который кусок?
(8) rhtr, к великой печали моей не нашел :(
11. set5553 19.02.17 22:11 Сейчас в теме
(9) а код пишется в контексте? #Если МобильноеПриложениеКлиент ? Или другое?
13. NekoZver 75 04.04.17 12:39 Сейчас в теме
(11) я настраивал проверку синтаксиса, смысле отключил проверку для обычного клиента и проверял только мобильный синтаксис ибо у меня все приложение работало на андроиде
33. KoshevoyEN 10.11.22 12:24 Сейчас в теме
(11) У меня проверка синтаксиса перестала ругаться с условием "#Если МобильноеПриложениеКлиент Тогда ..."
7. rhtr 92 19.09.16 09:33 Сейчас в теме
Закрыть "AndFtp" после получения/передачи файлов.

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

upd: Но за публикацию держите + ;)
NekoZver; +1 Ответить
14. spezc 792 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 7 06.10.17 15:07 Сейчас в теме
День добрый. Где можно взять список всех команд?
17. NekoZver 75 09.10.17 09:53 Сейчас в теме
(16) Добрый, я все что нашел вот Здесь
Там в нижней части сайта табличка с командами
CyberCerber; +1 Ответить
18. DevMob 7 09.10.17 10:14 Сейчас в теме
19. DevMob 7 10.10.17 15:24 Сейчас в теме
Еще вопрос как создать директорию на ftp, что-то не могу найти в мануале как это сделать.
20. пользователь 18.10.18 17:56
Сообщение было скрыто модератором.
...
21. user592559_vitus_b 15.03.19 02:10 Сейчас в теме
Большое спасибо )))
NekoZver; +1 Ответить
24. Сурикат 401 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 74 19.05.21 20:07 Сейчас в теме
(26) Не нашел, пользуюсь этой штукой
NekoZver; +1 Ответить
28. NekoZver 75 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. Может, у кого-то возникали аналогичніе ошибки и нашли решение? Помогите, если можете.
Оставьте свое сообщение