Odin | База знаний 1С

Как сохранять и пер...
 

Как сохранять и перезаписывать JPG файлы на мобильной платформе 1С?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

Примеры работы мобильной платформы с файлами jpg полученными через web-сервис - сохранение, перезапись на мобильном устройстве



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Игорь 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С. Если нужно, могу помочь с конкретным кодом под ваш сценарий.



   
ОтветитьЦитата