В данном разделе описана технология передачи и хранения любых файлов в облаке и их обработка/просмотр из 1С
Зачем использовать S3-хранилища?
Без S3 хранилища:
Фото передаются напрямую в базу 1С. Это сильно увеличивает нагрузку на канал от сервера 1С в Интернет, а при нескольких одновременных загрузках канал вообще может быть перегружен и нарушить работу других пользователей, например, работающих через тонкий клиент.
При необходимости обработки фото/видео на сервере, приходится ставить ImageMagic, выгружать файл, поворачивать, загружать файл в базу. Это сильно нагружает сервер
При отображении картинок в тонком клиенте, их приходится читать из базы и опять забивать канал, а если они еще и не сжаты, то они будут жутко тормозить при отображении на клиенте
Все эти проблемы легко решаются при использовании S3-совместимого хранилища
При использовании хранилища:
Фото отправляется в облако, доступность которого чрезвычайно высока. Соответственно, не важно, доступен ли сервер в данный момент
При отправке в S3-хранлище используется мобильный канал от устройства до облака, а ширина каналов у облачных провайдеров значительно выше потребности большинства реальных задач.
На сервер приложения 1С отправляется только запись справочника или регистра с ГУИД объекта, отправленного в облако. Это несколько десятков байтов. Соответственно, снижается требование к каналу связи до сервера 1С и собственно, требования к самому серверу
При необходимости сжать фото, повернуть, наложить текст и т.п. мы просто выполняем небольшую функцию в Cloud Functions, никак не напрягая сервер или мобильное устройство, т.к. вся обработка выполняется в облаке
При отображении списков фото мы используем пиктограммы, а при просмотре увеличенного изображения - сжатое до приемлемого уровня фото. При этом оригинал также остается доступным. Вся подготовка и обработка данных выполняется в облаке, что
Настройки Облака
Ты можешь использовать любое S3-совместимое хранилище. Я использую Yandex Object Storage
Настройки выполнены, можно приступать к загрузке фото в Облако
Алгоритм
Общая логика следующая:
После того, как пользователь сделал фото, создается запись в справочнике Файлы в мобильном устройстве и эта запись регистрируется к отправке как в Облако (S3-хранилище), так и на сервер 1С
Фоновая отправка передает файл в виде двоичных данных в Облако. В Облаке создается объект с именем, равным УИД записи справочника, чтобы в дальнейшем можно было его найти среди миллионов объектов в Облаке
Если файл успешно отправлен в Облако, тогда в записи справочника Файлы можно смело удалять двоичные данные. Так я экономлю место на устройстве пользователя. При необходимости файл теперь ему доступен по ссылке
Параллельно на сервер 1С отправляется запись справочника Файлы без двоичных данных. Достаточно знать УИД файла, чтобы найти его в Облаке
Код
После сделанного фото или видео двоичные данные записываются в справочник Файлы в реквизит Данные с типом ХранилищеЗначений и передаются в Яндекс.Облако
Передача двоичных данных в Яндекс.Облако
Удаление после передачи
После успешной передачи данных двоичные данные из справочника Файлы удаляются с мобильного устройства
Сжатие и поворот фото
Что еще можно сделать с файлами в Облаке, я описала здесь: сжатие и поворот фото. Триггеры и Cloud Functions
Добавить комментарий