К статье
Практический материал

Автоматизация · 13 мин

Как подключить камеру к 1С

Как подключить веб-камеру или IP-камеру к 1С для фотофиксации, сканирования штрихкодов и работы с документами. Настройка драйверов, внешних компонент и типовые ошибки.

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

Способ подключения зависит от того, что именно нужно получить. Если цель — сделать снимок и сохранить его в базу (например, фото товара в справочник «Номенклатура»), достаточно веб-камеры и компоненты захвата изображения. Если нужно считывать штрихкоды камерой смартфона или ноутбука, потребуется библиотека распознавания. Если речь о видеонаблюдении на складе, камера вообще не подключается к 1С напрямую — система видеонаблюдения работает отдельно, а в 1С передаются только события или ссылки на архив.

Перед началом работ важно определить: какая у вас конфигурация (управляемые формы или обычное приложение), какой клиент используется (тонкий, толстый, веб-клиент) и где физически находится камера — на компьютере пользователя или в сети. От этих трёх условий зависит выбор технологии.

Определяем задачу и выбираем способ подключения

Первый шаг — чётко сформулировать сценарий использования. От этого зависит вся дальнейшая архитектура решения. Типовых сценариев четыре.

Фотофиксация объектов. Пользователь нажимает кнопку в карточке товара, сотрудника или документа, открывается окно предпросмотра, снимок сохраняется в базу или в файловое хранилище. Это самый частый сценарий в торговле и кадровом учёте.

Сканирование штрихкодов камерой. Применяется, когда нет аппаратного сканера: камера ноутбука или смартфона «читает» код, 1С получает уже распознанную строку. Требует библиотеки распознавания (например, ZXing).

Съёмка и подписание документов. Курьер или приёмщик фотографирует подписанную накладную, файл прикрепляется к документу. Часто реализуется через мобильный клиент 1С.

Интеграция с видеонаблюдением. IP-камеры пишут архив, а 1С при совершении операции (пробитие чека, отгрузка) сохраняет метку времени или запрашивает стоп-кадр по API видеосервера.

Маршрут решения

Как выбрать действие

Нужно фото товара или сотрудника в карточке справочникаВеб-камера + внешняя компонента захвата изображения на рабочем месте пользователя
Нужно читать штрихкоды без аппаратного сканераКомпонента с библиотекой распознавания (ZXing) или мобильное приложение 1С со сканированием
Нужны стоп-кадры с IP-камеры на складеПолучение снимка по HTTP-запросу к камере или API системы видеонаблюдения
Пользователи работают в веб-клиенте или на тонком клиентеHTML5 getUserMedia с доработкой формы либо перенос захвата на сторону клиентского ПО

Подготовка оборудования и проверка совместимости

Для фотофиксации подойдёт практически любая USB-веб-камера, которая корректно определяется Windows как устройство видеозахвата. Проверьте её штатными средствами: откройте приложение «Камера» в Windows и убедитесь, что изображение есть и оно стабильное. Если камера не работает в самой системе, в 1С она тем более не заработает.

Для IP-камер уточните у производителя наличие HTTP-интерфейса получения снимка — обычно это URL вида http://адрес-камеры/snapshot.jpg или CGI-запрос с логином и паролем. Этот способ самый простой для интеграции: 1С выполняет HTTP-запрос и получает готовый JPEG-файл без всяких драйверов.

Учтите разрядность платформы. Если используется 64-разрядный клиент 1С, внешняя компонента также должна быть собрана под 64 бита, иначе она просто не загрузится. Это одна из самых частых причин ошибки «Не удалось подключить внешнюю компоненту».

Подключение веб-камеры через внешнюю компоненту

Основной механизм работы с камерой в 1С — внешние компоненты по технологии Native API или COM. Существуют готовые компоненты захвата видео (как коммерческие, так и открытые), которые умеют показывать предпросмотр, делать снимок и передавать его в 1С в виде двоичных данных или файла.

Общий порядок внедрения такой: компонента упаковывается в ZIP-архив по правилам поставки внешних компонент (файл manifest.xml и библиотеки для нужных платформ), загружается в базу как макет или в справочник внешних компонент БСП, затем подключается программно методом ПодключитьВнешнююКомпоненту.

После подключения создаётся объект компоненты, у которого вызываются методы инициализации устройства, получения кадра и остановки. Снимок обычно возвращается как путь к временному файлу или как Base64-строка; дальше он помещается во временное хранилище и записывается в реквизит объекта или в присоединённые файлы.

bsl
&НаКлиенте
Процедура ПодключитьКамеру(Команда)
	НачатьПодключениеВнешнейКомпоненты(
		Новый ОписаниеОповещения("ПослеПодключения", ЭтотОбъект),
		"ОбщийМакет.КомпонентаКамеры",
		"CameraCapture",
		ТипВнешнейКомпоненты.Native);
КонецПроцедуры

Если конфигурация построена на Библиотеке стандартных подсистем, используйте готовые механизмы хранения файлов: подсистема «Присоединенные файлы» позволит привязать снимок к любому объекту без доработки структуры данных.

Получение снимков с IP-камеры без драйверов

IP-камера — самый простой случай с точки зрения кода, потому что не требует ни компонент, ни драйверов. Камера доступна по сети, и 1С обращается к ней как к обычному веб-сервису. Такой подход работает даже на сервере и в фоновых заданиях, что позволяет автоматически делать стоп-кадры при регистрации документов.

Типовая схема: при проведении документа «Реализация товаров и услуг» или «Приходный ордер» сервер 1С выполняет HTTP-запрос к камере, направленной на зону отгрузки, получает JPEG и сохраняет его как присоединённый файл документа. Задержка между событием и запросом должна быть минимальной, иначе кадр не будет соответствовать операции.

bsl
Соединение = Новый HTTPСоединение("192.168.1.50", 80, "admin", "пароль");
Запрос = Новый HTTPЗапрос("/cgi-bin/snapshot.jpg");
Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
	ДанныеСнимка = Ответ.ПолучитьТелоКакДвоичныеДанные();
КонецЕсли;

Обратите внимание на безопасность: логин и пароль камеры не должны храниться в коде открытым текстом. Используйте безопасное хранилище паролей или константы с ограниченным доступом. Также создайте для 1С отдельную учётную запись на камере с минимально необходимыми правами (только просмотр и снимки).

Сканирование штрихкодов через камеру

Камера не является стандартным устройством ввода штрихкодов, поэтому драйвер «1С:Сканер штрихкода» её не видит. Распознавание выполняет программная библиотека: поток кадров анализируется, найденный код преобразуется в строку, и только строка передаётся в 1С.

На практике есть два рабочих варианта. Первый — внешняя компонента с интегрированной библиотекой распознавания (на базе ZXing или аналогов): она показывает видеопоток и возвращает в 1С событие с распознанным кодом. Второй — мобильная платформа 1С на смартфоне: в мобильном клиенте есть штатные средства работы с камерой и сканирования штрихкодов, и для полевых сотрудников это часто удобнее, чем веб-камера на стационарном рабочем месте.

Учтите ограничения: распознавание камерой медленнее аппаратного сканера и сильно зависит от освещения, качества печати кода и фокусировки. Для потоковой приёмки сотен товаров в день аппаратный сканер производительнее и дешевле в пересчёте на рабочее время оператора.

Сравнение вариантов

Веб-камера + компонента захвата

Подходит для фотофиксации на стационарном рабочем месте. Ограничение: работает только на том компьютере, где установлена камера и компонента.

IP-камера по HTTP

Подходит для автоматических стоп-кадров по событиям документов. Ограничение: нужна сетевая доступность камеры и поддержка snapshot-запросов.

Мобильный клиент 1С

Подходит для сканирования и фото в полях: склад, доставка, инвентаризация. Ограничение: требует разработки или настройки мобильного приложения.

Аппаратный сканер вместо камеры

Подходит для интенсивного сканирования штрихкодов. Ограничение: не умеет делать фотографии.

Особенности тонкого и веб-клиента

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

В веб-клиенте ситуация сложнее: браузер изолирует доступ к устройствам, и внешние компоненты там не работают. Реальный путь — использовать HTML5 API getUserMedia: на форму добавляется поле HTML-документа, в котором JavaScript получает доступ к камере (браузер запросит разрешение у пользователя), делает снимок и передаёт его в 1С. Это требует доработки конфигурации и работает только по HTTPS или на localhost — браузеры блокируют доступ к камере на незащищённых страницах.

Типичные ошибки
01
Подключение компоненты на сервере вместо клиента — код отрабатывает без ошибок, но камера пользователя недоступна, снимок не создаётся.
02
Использование 32-битной компоненты с 64-битным клиентом — ошибка загрузки компоненты без внятного описания причины.
03
Хранение снимков в базе без ограничений — база быстро разрастается; фото лучше хранить в томах на диске или сжимать перед сохранением.
04
Жёсткое указание индекса камеры в коде — при подключении второй камеры или смене USB-порта порядок устройств меняется, и снимок делается не с той камеры.
05
Отсутствие таймаута при HTTP-запросе к IP-камере — при недоступной камере документ «зависает» на проведении.

Хранение снимков и производительность

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

Рекомендуемая практика: сохранять снимки в формате JPEG с умеренным качеством, ограничивать разрешение до разумного минимума (для идентификации товара обычно достаточно 1280×720), а сами файлы выносить в тома хранения присоединённых файлов на диске, если используется БСП. В базе остаются только ссылки.

Для IP-камер добавьте обработку ошибок: если камера недоступна, документ должен проводиться без снимка, а событие фиксироваться в журнале. Блокировать учётный процесс из-за проблем с камерой недопустимо — фотофиксация вспомогательная функция, а не критичный контур.

Контрольные точки

Как проверить результат

Подключение компоненты
Норма

Метод подключения возвращает Истина, объект компоненты создан без исключений

Тревожный признак

Ошибка «Не удалось подключить внешнюю компоненту» или возврат Неопределено

Получение снимка
Норма

Файл сохраняется, открывается, на изображении виден нужный объект при приемлемом качестве

Тревожный признак

Пустой или чёрный кадр, файл нулевого размера

IP-камера по HTTP
Норма

Запрос возвращает код 200 и JPEG-данные за время менее пары секунд

Тревожный признак

Код 401 (неверные учётные данные), таймаут или HTML-страница вместо изображения

Работа под нагрузкой
Норма

Проведение документов не замедляется заметнее, чем на секунду–две

Тревожный признак

Формы подвисают, пользователи жалуются на задержки при записи

Типовые ошибки и их устранение

Самая частая жалоба — «чёрный кадр» вместо изображения. Причины: камера занята другим приложением (Teams, Skype, браузер), не успела инициализироваться до момента снимка (нужна пауза или ожидание события готовности), либо выбрано не то устройство. Закройте все программы, использующие камеру, и проверьте выбор устройства в компоненте.

Вторая группа проблем — права доступа. В Windows 10 и 11 доступ приложений к камере регулируется в настройках конфиденциальности: если там запрещён доступ для классических приложений, 1С камеру не увидит, хотя в «Диспетчере устройств» она будет исправной.

Третья группа — сетевые проблемы с IP-камерами: блокировка брандмауэром, смена IP-адреса камеры при перезагрузке роутера (закрепите адрес статически или через DHCP-резервирование), устаревшие прошивки с отключённым CGI-интерфейсом.

Итог

Что важно запомнить

Камера подключается к 1С через внешнюю компоненту (веб-камера), HTTP-запросы (IP-камера) или мобильный клиент (смартфон). Компонента подключается на клиенте, снимки хранятся вне базы, а недоступность камеры не должна блокировать учётные операции. Начинайте с проверки камеры штатными средствами ОС и чёткого определения сценария использования.

Частые вопросы

Можно ли подключить камеру к 1С без программирования?

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

Работает ли камера в веб-клиенте 1С?

Внешние компоненты в веб-клиенте не работают, но доступ к камере возможен через HTML5 API getUserMedia: на форму добавляется поле HTML-документа со скриптом захвата. Это требует доработки конфигурации и работает только по защищённому соединению HTTPS — браузеры блокируют камеру на обычном HTTP.

Можно ли заменить сканер штрихкодов камерой?

Технически да, через компоненту с библиотекой распознавания или мобильное приложение. Но для интенсивной работы (приёмка, касса) камера проигрывает аппаратному сканеру по скорости и стабильности: она чувствительна к освещению и требует фокусировки. Камера оправдана как резервный или эпизодический вариант.

Почему компонента не подключается с ошибкой без описания?

Чаще всего причина в несовпадении разрядности: 64-битный клиент 1С не загружает 32-битную библиотеку. Также проверьте, что в ZIP-архиве компоненты есть корректный manifest.xml и сборки именно для вашей платформы, а антивирус не заблокировал распаковку библиотеки в профиль пользователя.

Как сделать фото автоматически при проведении документа?

Для рабочего места с веб-камерой — вызов компоненты в обработчике записи документа на клиенте. Для IP-камеры — HTTP-запрос снимка в подписке на событие записи на сервере. В обоих случаях добавьте таймаут и обработку ошибок, чтобы проблемы с камерой не блокировали проведение документа.

Куда лучше сохранять фотографии из 1С?

Оптимально — в тома хранения присоединённых файлов на диске (механизм БСП), а не внутри базы данных. Перед сохранением сжимайте изображение в JPEG и ограничивайте разрешение. Это сдерживает рост базы, ускоряет резервное копирование и упрощает обмен с филиалами.