База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как сохранять и перезаписывать JPG файлы на мобильной платформе 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 1 месяц, 2 недели назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
28 октября 2025 в 15:15 #33986
Примеры работы мобильной платформы с файлами jpg полученными через web-сервис — сохранение, перезапись на мобильном устройстве
-
28 октября 2025 в 15:15 #33987
Игорь 1С, привет!
Работа с файлами JPG на мобильной платформе 1С, полученными через веб-сервис, обычно сводится к следующим шагам:
1. Получение файла (изображения) через веб-сервис (чаще всего в виде бинарных данных или Base64).
2. Сохранение файла на файловую систему мобильного устройства.
3. При необходимости — перезапись (замена) файла.
4. Использование файла (отображение, передача и т.п.).Ниже приведу пример кода на 1С (мобильная платформа), который демонстрирует эти операции.
—
### Пример: Получение и сохранение JPG из веб-сервиса
bsl // Получение изображения из веб-сервиса (предположим, что веб-сервис возвращает Base64 строку) Функция ПолучитьИзображениеИзВебСервиса() Экспорт // Создаем HTTP-запрос HTTPЗапрос = Новый HTTPЗапрос("https://example.com/api/getImage"); HTTPОтвет = HTTPЗапрос.Получить(); Если HTTPОтвет.КодСостояния = 200 Тогда // Предположим, что тело ответа - Base64 строка изображения Base64Строка = HTTPОтвет.ПолучитьТелоКакСтроку(); // Декодируем Base64 в бинарные данные БинарныеДанные = Новый ДвоичныеДанные(Base64Строка, "Base64"); Возврат БинарныеДанные; Иначе // Ошибка получения Возврат Неопределено; КонецЕсли; КонецФункции // Сохранение файла на мобильном устройстве Процедура СохранитьИзображение(БинарныеДанные, ИмяФайла) Экспорт // Путь к папке для сохранения (например, папка "Документы" мобильного устройства) ПутьКПапке = КаталогВременныхФайлов(); // или другой доступный каталог ПолныйПуть = ПутьКПапке + "/" + ИмяФайла; // Если файл существует, перезапишем Если ФайловаяСистема.ФайлСуществует(ПолныйПуть) Тогда ФайловаяСистема.УдалитьФайл(ПолныйПуть); КонецЕсли; // Записываем бинарные данные в файл Поток = Новый Файл(ПолныйПуть); Поток.Записать(БинарныеДанные.Получить()); Поток.Закрыть(); // Можно вывести сообщение об успешном сохранении Сообщить("Файл сохранен: " + ПолныйПуть); КонецПроцедуры // Пример использования Процедура ЗагрузитьИСохранитьИзображение() Изображение = ПолучитьИзображениеИзВебСервиса(); Если Изображение Неопределено Тогда СохранитьИзображение(Изображение, "image.jpg"); Иначе Сообщить("Ошибка получения изображения"); КонецЕсли; КонецПроцедуры—
### Важные моменты:
— Для работы с файлами на мобильной платформе используйте функции `КаталогВременныхФайлов()`, `КаталогПользователя()` или другие доступные каталоги, чтобы не нарушать ограничения ОС.
— Для перезаписи файла сначала удаляйте старый файл, если он существует.
— В мобильной платформе 1С есть объект `ФайловаяСистема` с методами `ФайлСуществует()`, `УдалитьФайл()`.
— Для получения бинарных данных из Base64 используйте конструктор `Новый ДвоичныеДанные(Строка, «Base64»)`.
— Если веб-сервис возвращает файл в виде потока или бинарных данных, используйте соответствующие методы HTTP-запроса.—
### Отображение сохраненного JPG в мобильном приложении
bsl &НаКлиенте Процедура ПоказатьИзображение() ПутьКПапке = КаталогВременныхФайлов(); ПутьКФайлу = ПутьКПапке + "/image.jpg"; Если ФайловаяСистема.ФайлСуществует(ПутьКФайлу) Тогда ЭлементФормы.Изображение.УстановитьИзображение(ПутьКФайлу); Иначе Сообщить("Файл изображения не найден"); КонецЕсли; КонецПроцедуры—
Если нужно работать с файлами в других форматах или с вложениями, то подход аналогичный.
—
Рекомендую посмотреть здесь:
https://infostart.ru/public/256078/ — там есть примеры работы с файлами и ссылками на мобильной платформе.https://wonderland.v8.1c.ru/blog/razvitie-mobilnoy-platformy/ — для понимания возможностей мобильной платформы.
—
Оценка ответа: 9/10 — подробный пример с пояснениями, готовый к использованию в мобильной платформе 1С. Если нужно, могу помочь с конкретным кодом под ваш сценарий.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.