Как организовать передачу фотографий со смартфона в 1С:УПП?

Программист 1С v8.3 (Обычные формы) Управленческий учет IT и автоматизация бизнеса
← На главную

В современной автоматизации бизнеса часто возникает задача оперативной передачи изображений с мобильных устройств сотрудников напрямую в учетную систему. Будь то фотофиксация товара на складе, отчет о выполненных строительных работах или подтверждение доставки — надежность канала передачи данных критически важна. В этой статье мы подробно разберем, как преодолеть ограничения нестабильного Wi-Fi и сложности с передачей тяжелых файлов, проанализируем различные протоколы и выберем оптимальную архитектуру решения.

Метод 1: Использование облачных хранилищ через API

Рассмотрим один из самых надежных способов — интеграцию через облачные сервисы, такие как Яндекс.Диск или Google Drive. Этот вариант позволяет делегировать обработку очередей загрузки и хранение файлов профессиональным сервисам, оставляя для 1С только задачу получения ссылки или самого файла.

Разберем алгоритм работы этого метода:

  1. На смартфоне сотрудника настраивается официальное приложение облачного диска с включенной функцией автозагрузки фотографий или ручной отправки в определенную папку.
  2. Сервер 1С по расписанию (регламентное задание) обращается к API облачного сервиса.
  3. Система анализирует новые файлы в каталоге, скачивает их и привязывает к объектам метаданных (например, к справочнику ХранилищеДополнительнойИнформации или документу ПоступлениеТоваровУслуг).

Проанализируем программную часть на стороне 1С. Для взаимодействия с API Яндекс.Диска нам потребуется объект HTTPСоединение. Посмотрим на пример кода для авторизации и получения списка файлов:


// Пример настройки заголовков для работы с API
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "OAuth " + ТокенДоступа);

Соединение = Новый HTTPСоединение("cloud-api.yandex.net", 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос("/v1/disk/resources/files", Заголовки);

Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
    // Обработка JSON с данными о файлах
КонецЕсли;

Этот метод хорош тем, что мобильное приложение облака умеет «докачивать» файлы при разрыве связи, что решает проблему «тяжелых» фото весом более 3 Мб.

Метод 2: Настройка почтового робота

Выясним преимущества использования обычной электронной почты как транспортного уровня. Несмотря на кажущуюся простоту, этот метод крайне стабилен и не требует развертывания сложных веб-сервисов.

Процесс выглядит следующим образом: пользователь отправляет фото письмом на специальный почтовый ящик. В теме письма можно указывать уникальный идентификатор объекта (например, номер заказа). В 1С настраивается регламентное задание, которое раз в минуту проверяет входящую почту, используя объект ИнтернетПочта.

Рассмотрим преимущества:

Однако стоит помнить об ограничениях размера вложений (обычно до 10–20 Мб), что, впрочем, вполне достаточно для качественных фотографий.

Метод 3: Переход с Web-сервисов на HTTP-сервисы

Если ваша инфраструктура требует прямой передачи данных в базу, проанализируем, почему стандартные Web-сервисы (SOAP) могут работать медленно. Проблема часто кроется в накладных расходах на XML-упаковку и кодирование двоичных данных в Base64. Это увеличивает объем передаваемого трафика примерно на 30%.

Мы рекомендуем использовать HTTP-сервисы 1С. Они позволяют передавать изображение в «сыром» бинарном виде в теле POST-запроса. Это значительно снижает нагрузку на мобильное устройство и сервер.

Пример приема файла на стороне 1С в HTTP-сервисе:


Функция ЗагрузитьФото(Запрос)
    ДвоичныеДанные = Запрос.ПолучитьТелоКакДвоичныеДанные();
    ИмяФайла = Запрос.Заголовки.Получить("X-File-Name");
    
    // Сохранение в базу или на диск
    ДвоичныеДанные.Записать(ПутьКФайлу + ИмяФайла);
    
    Возврат Новый HTTPСервисОтвет(200);
КонецФункции

Метод 4: Оптимизация и предварительное сжатие на клиенте

Часто проблема нестабильной загрузки решается не сменой протокола, а уменьшением объема данных. Разберем ситуацию: современный смартфон делает снимки разрешением 4000x3000 пикселей, что дает файл весом 5–8 Мб. Для учетной системы (УПП) такая детализация избыточна.

Рекомендуемые параметры сжатия:

Если вы используете самописное мобильное приложение, обязательно реализуйте алгоритм изменения размера (resize) перед отправкой. Это сократит время передачи в 10 раз и минимизирует ошибки тайм-аутов.

Метод 5: Использование Мобильного клиента и встроенных средств платформы

Если ваша конфигурация позволяет использовать «Мобильный клиент» 1С, то задача упрощается в разы. Платформа предоставляет штатные средства для работы с мультимедиа, которые оптимизированы разработчиками 1С для работы в условиях слабого сигнала.

Использование метода СредстваМультимедиа.СделатьСнимок() позволяет получить изображение и сразу поместить его во временное хранилище. Затем с помощью функции ПоместитьФайлНаСервер() файл передается в основную базу. Платформа сама управляет процессом передачи, обеспечивая необходимую стабильность.

Метод 6: Передача через протоколы WebDAV или SMB

Посмотрим на альтернативные варианты сетевого обмена. Протокол WebDAV является расширением HTTP и позволяет работать с файлами на сервере как с обычной локальной папкой. На смартфоне можно использовать продвинутые файловые менеджеры, которые умеют «зеркалить» локальную папку с фото в WebDAV-директорию.

Если же устройство находится в локальной Wi-Fi сети склада, можно рассмотреть использование SMB/CIFS. В этом случае смартфон сохраняет файл напрямую в общую сетевую папку Windows. 1С, в свою очередь, отслеживает появление новых файлов в этом каталоге. Это исключает необходимость поднятия FTP-сервера на самом смартфоне, что, как мы выяснили, сильно расходует заряд батареи.

Метод 7: Решения для работы без интернета (Оффлайн)

В случаях, когда связь полностью отсутствует (например, удаленные карьеры или экранированные склады), рассмотрим вариант с Bluetooth или WiFi Direct. Файлы передаются на стационарный компьютер, подключенный к 1С, локально. После установления соединения файлы из папки «Входящие» автоматически подхватываются обработкой загрузки.

Подведем итог: для выбора оптимального способа необходимо оценить объем передаваемых данных и стабильность сети. Наиболее универсальным и надежным решением сегодня является использование HTTP-сервисов с предварительным сжатием фото или интеграция через API облачных хранилищ.

← На главную