Как реализовать получение фото с камеры мобильного устройства в веб-клиенте 1С?

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

При работе с базой 1С через веб-браузер на мобильном устройстве часто возникает задача получения фотографии от пользователя. Стандартный метод СредстваМультимедиа.СделатьФотоснимок работает исключительно в мобильном клиенте или мобильном приложении. Рассмотрим, какие существуют альтернативные способы решения этой задачи при использовании обычного веб-интерфейса.

Вариант 1: Переход на мобильный клиент 1С

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

  1. Установите мобильный клиент 1С на устройство.
  2. В коде конфигурации используйте стандартный метод СредстваМультимедиа.СделатьФотоснимок.
  3. Этот метод автоматически вызовет системное приложение камеры, получит снимок и позволит сохранить его в реквизит или базу данных.

Вариант 2: Использование поля HTML-документа

Если переход на мобильный клиент невозможен, воспользуйтесь возможностями HTML5. Вы можете разместить на форме ПолеHTMLДокумента, которое будет выступать посредником между пользователем и базой 1С.

Разберем логику реализации:

  1. Внутри ПолеHTMLДокумента создайте элемент input с определенными атрибутами.
  2. Для автоматического запуска камеры используйте следующий код: <input type="file" accept="image/*" capture="environment">.
  3. Атрибут capture="environment" дает команду браузеру сразу открывать заднюю камеру устройства при нажатии на поле.
  4. После того как пользователь сделал снимок, используйте JavaScript для считывания данных. Применяйте объект FileReader, чтобы преобразовать изображение в формат Base64.
  5. Передайте полученную строку Base64 в 1С через механизм ОповеститьОВыборе или вызов серверной процедуры.

Вариант 3: Отправка данных через веб-сервис (POST-запрос)

Если требуется высокая производительность и работа с большими объемами данных, рассмотрите вариант отправки фотографии через HTTP-сервис, опубликованный на веб-сервере с вашей базой 1С.

Данный подход подразумевает создание собственного веб-сервиса, который принимает POST-запрос от мобильного браузера. Рассмотрим алгоритм действий:


// Пример обработки данных на стороне 1С
Функция POST_ЗагрузитьФото(Запрос)
    ДанныеКартинки = Запрос.ПолучитьТелоКакДвоичныеДанные();
    // Логика сохранения данных в базу 1С
    // Например, привязка к справочнику или документу
    Возврат Новый HTTPСервисОтвет(200);
КонецФункции

Важные рекомендации при реализации

При выборе метода передачи данных важно учитывать ограничения веб-интерфейса:

Анализируя ситуацию, мы видим, что хотя платформа 1С не предоставляет прямого API для работы с камерой в обычном браузере, использование связки HTML5, JavaScript и собственных веб-сервисов позволяет добиться аналогичного функционала. Мы рекомендуем начать с тестирования простого input элемента в поле HTML-документа, так как это требует минимума изменений в архитектуре конфигурации.

← На главную