Работа с 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.х Управленческий учет Платные (руб)

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

2880 руб.

03.12.2018    54616    137    102    

161

SALE! 25%

Что нам стоит бота построить? Нарисуем - будет жить! Графический конструктор телеграм-ботов/Telegram

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

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

13200 9900 руб.

27.12.2021    33278    80    157    

174

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для iOS и Android

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

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

2000 руб.

22.04.2019    91945    511    186    

293

Магазин 15 - приемка товара по штрихкодам или инвентаризация в торговом зале

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

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

12950 руб.

30.05.2023    3388    2    0    

4

Работа с графикой в браузере (SimpleWEB). Векторный редактор

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

В SimpleWEB добавились средства для работы с графикой и отслеживание событий мыши, в онлайн редактор https://seditor.ru:1555/ добавился «Векторный редактор» на этом API. Теперь можно нарисовать схемы складов на ПК, сделать карты (*.sug-файлы) для мобильной платформы SimpleUI, выводить данные из 1С в графическом виде. Таким образом, API для работы с векторными файлами теперь есть и в веб- и в мобильной платформе, а также средства для создания и редактирования векторных файлов есть тоже в обеих платформах.

1 стартмани

20.03.2024    1473    0    informa1555    1    

39

Зачем нам 1С:Элемент

Мобильная разработка Языки и среды Бесплатно (free)

Flutter может быть использован с 1С:Предприятием для разработки кроссплатформенных мобильных приложений, обеспечивая единый интерфейс и функциональность на устройствах под управлением iOS и Android. Это позволяет создавать приложения с высокой производительностью благодаря использованию собственного движка рендеринга Flutter. Интеграция Flutter с 1С:Предприятием позволяет создавать мобильные приложения любого уровня сложности, интегрировать их в корпоративные информационные системы, а также реализовывать бизнес-логику

19.03.2024    6858    ROk_dev    56    

37

JavaScript в Simple

Мобильная разработка Бесплатно (free)

В SimpleUI и SimpleWEB, наряду с обработчиками на python и онлайн (1С и т.д.) добавляется интерпретатор JavaScript. В андроид платформе он скорее играет на поле python, т.к. является оффлайновым решением для самостоятельной обработки и расширяет аудиторию разработчиков для разработки самостоятельных решений. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

12.02.2024    1628    informa1555    0    

25
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
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 231 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 90 19.09.16 09:33 Сейчас в теме
Закрыть "AndFtp" после получения/передачи файлов.

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

upd: Но за публикацию держите + ;)
NekoZver; +1 Ответить
14. spezc 782 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. kail_riss 9 06.10.17 15:07 Сейчас в теме
День добрый. Где можно взять список всех команд?
17. NekoZver 75 09.10.17 09:53 Сейчас в теме
(16) Добрый, я все что нашел вот Здесь
Там в нижней части сайта табличка с командами
CyberCerber; +1 Ответить
18. kail_riss 9 09.10.17 10:14 Сейчас в теме
19. kail_riss 9 10.10.17 15:24 Сейчас в теме
Еще вопрос как создать директорию на ftp, что-то не могу найти в мануале как это сделать.
20. пользователь 18.10.18 17:56
Сообщение было скрыто модератором.
...
21. user592559_vitus_b 15.03.19 02:10 Сейчас в теме
Большое спасибо )))
NekoZver; +1 Ответить
24. Сурикат 393 21.04.20 14:17 Сейчас в теме
На мобильном устройстве можно воспользоваться методом КопироватьФайл, он умеет работать с FTP
25. Nikifforoff96 25.06.20 18:18 Сейчас в теме
(24) Нельзя, на мобильном этот метод не работает с ftp
26. wolder 129 03.03.21 04:54 Сейчас в теме
Отлично! Спасибо автору!
Что-то новое появилось в платформе 1С по этому вопросу?
NekoZver; +1 Ответить
27. FilippovRI 71 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. Может, у кого-то возникали аналогичніе ошибки и нашли решение? Помогите, если можете.
Оставьте свое сообщение