Как организовать быструю загрузку фотографий товаров со смартфона в 1С:Управление торговлей 10.3

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

При ведении активного товарного каталога в конфигурации «1С:Управление торговлей 10.3» часто возникает задача оперативного наполнения карточек номенклатуры фотографиями. Ручной процесс — сфотографировать товар на телефон, подключить устройство к компьютеру по кабелю, скопировать файлы, открыть каждую карточку номенклатуры и вручную прикрепить изображение — занимает огромное количество рабочего времени сотрудников. Разберем основные варианты автоматизации этой задачи и спроектируем удобный процесс загрузки снимков прямо с мобильного устройства в базу 1С.

Вариант 1. Разработка Telegram-бота для фотофиксации (рекомендуемый подход)

Использование мессенджера Telegram является одним из наиболее быстрых и простых в поддержке решений. Пользователю не требуется устанавливать сторонние мобильные приложения или настраивать VPN-подключения на телефоне, а логика взаимодействия полностью контролируется на стороне 1С.

Рассмотрим типовой сценарий взаимодействия сотрудника с ботом:

  1. Сотрудник нажимает кнопку вызова камеры в Telegram или сканирует штрихкод товара.
  2. Бот находит номенклатуру в 1С по штрихкоду, коду или артикулу и присылает наименование товара для подтверждения.
  3. Сотрудник делает фото и отправляет его ответным сообщением.
  4. 1С принимает бинарные данные, выполняет сжатие изображения и прикрепляет файл к справочнику ХранилищеДополнительнойИнформации.

Для реализации этого метода нам потребуется опубликовать HTTP-сервис на веб-сервере (Apache или IIS), который будет обрабатывать вебхуки (Webhooks) от Telegram Bot API. Разберем пример программного сохранения входящего файла в карточку товара УТ 10.3:


Функция ПрикрепитьФайлКНоменклатуре(СсылкаНоменклатура, ДвоичныеДанныеФайла, ИмяФайла = "Фото.jpg") Экспорт
    
    // Создаем запись в хранилище дополнительной информации
    НовыйЭлемент = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
    НовыйЭлемент.Объект = СсылкаНоменклатура;
    НовыйЭлемент.Наименование = ИмяФайла;
    НовыйЭлемент.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;
    НовыйЭлемент.Хранилище = Новый ХранилищеЗначения(ДвоичныеДанныеФайла, Новый СжатиеДанных(9));
    
    Попытка
        НовыйЭлемент.Записать();
        
        // Если у номенклатуры еще не установлено основное изображение, назначаем созданное
        ОбъектНоменклатура = СсылкаНоменклатура.ПолучитьОбъект();
        Если Не ЗначениеЗаполнено(ОбъектНоменклатура.ОсновноеИзображение) Тогда
            ОбъектНоменклатура.ОсновноеИзображение = НовыйЭлемент.Ссылка;
            ОбъектНоменклатура.Записать();
        КонецЕсли;
        
        Возврат Истина;
    Исключение
        ЗаписьЖурналаРегистрации("ЗагрузкаФотоTelegram", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
        Возврат Ложь;
    КонецПопытки;
    
КонецФункции

Вариант 2. Простой веб-интерфейс (PWA / Мобильная веб-страница)

Если по корпоративной политике использование сторонних мессенджеров запрещено, мы можем разработать легковесную HTML5-страницу, адаптированную под мобильные экраны. Страница разворачивается на внутреннем корпоративном веб-сервере и обменивается данными с 1С через HTTP-сервисы в формате JSON и Base64.

Проанализируем технические преимущества данного подхода:

  1. Прямой вызов системной камеры браузером смартфона с помощью стандартного тега input type="file" capture="environment".
  2. Возможность подключения JS-библиотек для распознавания штрихкодов камерой устройства перед съемкой самого товара.
  3. Мгновенная доставка файлов в базу без промежуточных серверов и очередей.
  4. Отсутствие необходимости собирать и переустанавливать мобильные пакеты APK/IPA при внесении изменений в интерфейс.

Посмотрим на пример обработки входящего HTTP-запроса с изображением в модуле HTTP-сервиса 1С:


Функция ЗагрузитьФотоPost(Запрос)
    
    Ответ = Новый HTTPСервисОтвет(200);
    Ответ.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
    
    СтрокаJSON = Запрос.ПолучитьТелоКакСтроку();
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
    ДанныеЗапроса = ПрочитатьJSON(ЧтениеJSON);
    ЧтениеJSON.Закрыть();
    
    Штрихкод = ДанныеЗапроса.Штрихкод;
    СтрокаBase64 = ДанныеЗапроса.ИзображениеBase64;
    
    ДвоичныеДанные = Base64Значение(СтрокаBase64);
    
    // Поиск номенклатуры по регистру сведений Штрихкоды
    СсылкаНоменклатура = НайтиНоменклатуруПоШтрихкоду(Штрихкод);
    
    Если ЗначениеЗаполнено(СсылкаНоменклатура) Тогда
        Если ПрикрепитьФайлКНоменклатуре(СсылкаНоменклатура, ДвоичныеДанные) Тогда
            Результат = Новый Структура("Успех, Описание", Истина, "Фотография успешно привязана к товару");
        Иначе
            Результат = Новый Структура("Успех, Описание", Ложь, "Ошибка записи в хранилище 1С");
        КонецЕсли;
    Иначе
        Результат = Новый Структура("Успех, Описание", Ложь, "Товар со штрихкодом " + Штрихкод + " не найден");
    КонецЕсли;
    
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, Результат);
    Ответ.УстановитьТелоИзСтроки(ЗаписьJSON.Закрыть());
    
    Возврат Ответ;
    
КонецФункции

Вариант 3. Мобильное приложение на платформе «1С:Предприятие»

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

Разберем по шагам создание функционала съемки в мобильном клиенте 1С:

  1. В мобильной конфигурации создаем форму с кнопкой захвата снимка.
  2. Используем метод СредстваМультимедиа.СделатьСнимок() для прямого обращения к фотокамере смартфона.
  3. Передаем полученные двоичные данные в основную информационную базу через вызов веб-сервиса (SOAP) или HTTP-сервиса.

Посмотрим на пример клиентского кода мобильного приложения 1С:


&НаКлиенте
Процедура СделатьСнимокТовара(Команда)
    
    Если СредстваМультимедиа.ПоддерживаетсяФотоснимок() Тогда
        ПараметрыСнимка = Новый ПараметрыСнимка;
        ПараметрыСнимка.Качество = 75;
        ПараметрыСнимка.Разрешение = РазрешениеИзображенияКамеры.Высокое;
        
        Оповещение = Новый ОписаниеОповещения("ПослеСозданияСнимка", ЭтотОбъект);
        СредстваМультимедиа.СделатьСнимок(Оповещение, ПараметрыСнимка);
    Иначе
        ПоказатьПредупреждение(, "Камера не поддерживается на данном устройстве.");
    КонецЕсли;
    
КонецПроцедуры

&НаКлиенте
Процедура ПослеСозданияСнимка(Результат, ДополнительныеПараметры) Экспорт
    
    Если Результат <> Неопределено Тогда
        // Результат содержит ДвоичныеДанные полученного снимка
        ОтправитьФотоВЦентральнуюБазу(ТекущийШтрихкод, Результат);
    КонецЕсли;
    
КонецПроцедуры

Важное предостережение: Разработка логики в мобильной 1С занимает немного времени, однако сборка и распространение готовых APK/IPA-файлов требуют настройки среды разработки мобильных приложений (Android SDK), а при обновлении структуры конфигурации потребуется повторная сборка и установка обновлений на все телефоны сотрудников.

Важные технические нюансы оптимизации для УТ 10.3

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

  1. Контроль размера файлов и сжатие: Современные смартфоны делают снимки размером от 5 до 15 МБ. Если загружать такие файлы без предварительного уменьшения разрешения, информационная база быстро вырастет на сотни гигабайт, что приведет к деградации производительности таблиц MS SQL или переполнению файловой базы 1Cv8.1CD. Перед сохранением необходимо сжимать разрешение до 1200–1600 px по большей стороне.
  2. Место хранения файлов: В типовой УТ 10.3 файлы хранятся непосредственно в таблице ХранилищеДополнительнойИнформации. Для масштабных баз рекомендуется выносить хранение прикрепленных файлов на внешний том файловой системы или в объектное хранилище (S3/MinIO), оставляя в базе 1С только ссылки на них.
  3. Режим совместимости платформы: База УТ 10.3 работает в режиме совместимости. Для использования полноценных HTTP-сервисов база должна функционировать на актуальной платформе «1С:Предприятие 8.3» с корректной публикацией на веб-сервере.
← На главную