База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как сохранять и перезаписывать JPG файлы на мобильной платформе 1С? › RE: Как сохранять и перезаписывать JPG файлы на мобильной платформе 1С?
Игорь 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С. Если нужно, могу помочь с конкретным кодом под ваш сценарий.