Видеоаналитика склада: интеграция IP-камер с WMS через 1С | infolimp.ru

Видеоаналитика склада: интеграция IP-камер с WMS через 1С

14 августа 2026 · infolimp.ru

Видеоаналитика склада перестала быть футуристическим концептом — IP-камеры с распознаванием номеров, штрихкодов и объёмов давно доступны. Но интеграция с WMS через 1С превращается в ад, когда разработчик выбирает прямой вызов SDK камеры из 1С. Эта статья не про то, какие красивые графики можно построить, а про три ловушки, которые гарантированно убьют ваш проект, если не знать их заранее. И про единственную архитектуру, которая работает в промышленной эксплуатации.

Реальность видеоаналитики в 1С: не игрушка, а производственная задача

Любая интеграция с видеооборудованием в 1С сталкивается с двумя фундаментальными фактами:

Почему COM/DLL-подход — путь к хаосу

Первая мысль: «подключусь к камере через COMОбъект("MyCamera.SDK") и получу изображение». Чем это грозит:

Интеграция IP-камер через прямой SDK — первый кандидат на полное переписывание через год. Никогда не используйте COMОбъект для видео, если не готовы поддерживать это как отдельный продукт.

Архитектура: REST-шлюз как единственный жизнеспособный вариант

Правильный подход — разделить ответственность: отдельный сервер видеоаналитики (например, на базе OpenCV + Node.js или коммерческое решение) берёт на себя всю работу с камерами, а 1С лишь опрашивает его через HTTP по расписанию. Сервер возвращает структурированные данные о событиях: когда, что и где распознано.

Сравнение подходов

Таблица ниже отражает практический опыт внедрений на складах с интенсивностью 500+ паллет/час. Данные не гипотетические, а основанные на реальных проектах, выполненных через ИТС.

ПодходПроизводительностьСложностьПоддерживаемостьРекомендация
COM/DLL SDKНизкая (блокировки)СредняяНизкаяТолько для прототипа
Прямой ONVIF через HTTP из 1ССредняя (один запрос — одно изображение)Высокая (ручной парсинг SOAP)СредняяНе рекомендуется для production
REST-шлюз + сервер аналитикиВысокая (пакетная передача событий)Низкая (1С только JSON)ВысокаяЕдинственный вариант
// Пример опроса сервера видеоаналитики через REST
// Запускается в фоновом задании с интервалом 5 секунд

Процедура ОпроситьСерверВидеоаналитики() Экспорт
    
    Запрос = Новый HTTPЗапрос("/api/events?lastTimestamp=" + Формат(ПоследняяДатаСобытия, "ДФ=yyyy-MM-dd'T'HH:mm:ss"));
    Запрос.УстановитьТелоИзСтроки("", "UTF-8");
    
    Соединение = Новый HTTPСоединение("192.168.1.100", 8080, , , , 10); // таймаут 10 секунд
    Попытка
        Ответ = Соединение.Получить(Запрос);
    Исключение
        ЗаписьЖурналаРегистрации("Видеоаналитика", УровеньЖурналаРегистрации.Ошибка, , , 
            "Ошибка соединения с сервером: " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
        Возврат;
    КонецПопытки;
    
    Если Ответ.КодСостояния <> 200 Тогда
        ЗаписьЖурналаРегистрации("Видеоаналитика", УровеньЖурналаРегистрации.Предупреждение, , , 
            "HTTP-статус: " + Ответ.КодСостояния);
        Возврат;
    КонецЕсли;
    
    Данные = Ответ.ПолучитьТелоКакСтроку("UTF-8");
    // Десериализация JSON
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(Данные);
    МассивСобытий = ПрочитатьJSON(ЧтениеJSON, Ложь);
    ЧтениеJSON.Закрыть();
    
    // Обработка каждого события — запись в регистр сведений
    Для Каждого Событие Из МассивСобытий Цикл
        ЗафиксироватьСобытиеПрибытия(Событие);
    КонецЦикла;
    
КонецПроцедуры

Ловушка №1: Потоковая обработка и фоновые задания не для слабонервных

Таймауты, повторные запросы и блокировки сессий

Самая частая ошибка — запустить опрос в фоновом задании без контроля длительности. Если сервер видеоаналитики завис, задание повиснет, и через несколько минут начнут накапливаться потоки, блокирующие данные. Даже при таймауте 10 секунд, если задание запускается каждые 5 секунд, а ответ приходит через 8 секунд, новое задание стартует на перекрытие — получите гонку.

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

Решение: фоновое задание с фиксированным интервалом, равным среднему времени ответа × 1,5, и обязательное условие — не запускать новый экземпляр, пока предыдущий не завершился. Используйте ФоновыеЗадания с ИспользоватьРазделениеДоступа = Ложь и храните состояние последнего успешного опроса в регистре сведений.

Ловушка №2: Данные из камер — это не 1С-объекты, их нужно нормализовать

Проблема типов: как правильно сохранить распознанный номер паллеты в справочник

Сервер видеоаналитики может вернуть JSON, содержащий, например, номер паллеты и время. Но в 1С нужно не просто записать строку, а проверить, существует ли такой элемент справочника, не дублировать события, привязать к документу поступления. Пропуск этой нормализации приведёт к дублям и неправильной инвентаризации.

Процедура ЗафиксироватьСобытиеПрибытия(Событие)
    // Событие — структура из JSON: { "palletId": "ПЛ-001", "timestamp": "2026-03-10T14:30:00", "door": "1" }
    
    // Поищем паллету в справочнике по коду
    Паллета = Справочники.Паллеты.НайтиПоКоду(Событие.palletId);
    Если Паллета.Пустая() Тогда
        // Создаём новую — только если событие подтверждено
        Паллета = Справочники.Паллеты.СоздатьЭлемент();
        Паллета.Код = Событие.palletId;
        Паллета.Наименование = "Паллета " + Событие.palletId;
        Паллета.Записать();
    КонецЕсли;
    
    // Регистрируем факт прибытия в регистр сведений
    Отбор = Новый Структура("Паллета", Паллета);
    СуществующаяЗапись = РегистрыСведений.ПрибытияПаллет.ПолучитьПоследнюю(, Отбор);
    Если СуществующаяЗапись.Период < Событие.timestamp Тогда
        Запись = Регистры

Расширение «НОПик» для 1С — встраиваемый коннектор к внешнему AI с интеллектуальным поиском по базе. Задавайте вопросы обычными словами - AI сам найдёт нужное. 45 дней бесплатно.

Попробовать НОПик →
Знаете ответ на такие вопросы не хуже автора статьи? Пройдите бесплатную анонимную проверку уровня на infolimp.ru - 3 практических задачи, 15 минут, публичный токен-профиль, который можно показать работодателю или заказчику. Без регистрации по почте.

Проверить свой уровень бесплатно →