На современных производственных и торговых предприятиях часто возникает задача оперативной фиксации дефектов изделий, контроля качества или инвентаризации с помощью мобильных устройств. Заставлять пользователей вручную переносить фотографии со смартфона на компьютер, а затем вручную прикреплять их через диалог выбора файлов в «1С:Предприятии» — процесс долгий, неудобный и подверженный ошибкам. Наша задача — максимально автоматизировать этот процесс.
В этой статье мы подробно рассмотрим и проанализируем различные варианты интеграции смартфонов с базой 1С: от простейших файловых сценариев до продвинутых интеграционных решений с использованием мессенджеров, веб-технологий и специализированных сервисов.
Это самый простой в реализации способ, не требующий программирования мобильных приложений или публикации базы наружу. Идея заключается в использовании готовых транспортных каналов мессенджеров или облачных хранилищ, клиенты которых установлены как на смартфоне, так и на рабочем компьютере пользователя.
Рассмотрим сценарий работы через Viber. Мессенджер настраивается таким образом, чтобы все получаемые или отправляемые медиафайлы автоматически сохранялись в локальный каталог компьютера. По умолчанию в операционной системе Windows Viber сохраняет файлы по пути C:\Users\%UserName%\Documents\ViberDownloads.
Разберем по шагам, как настроить автоматическую подгрузку этих файлов в 1С:
Посмотрим на пример кода на стороне тонкого клиента 1С, который выполняет сканирование локального каталога и загрузку найденных файлов на сервер:
&НаКлиенте
Процедура СканироватьИЗагрузитьФотографии()
ИмяПользователяОС = СистемнаяИнформация.ИмяПользователяОС;
ПутьКПапке = "C:\Users\" + ИмяПользователяОС + "\Documents\ViberDownloads\";
// Получаем список всех файлов картинок в каталоге
НайденныеФайлы = НайтиФайлы(ПутьКПапке, "*.jpg");
Для Каждого Файл Из НайденныеФайлы Цикл
// Проверяем, что это действительно файл, а не каталог
Если Файл.ЭтоФайл() Тогда
// Помещаем файл во временное хранилище для передачи на сервер
ОписаниеФайла = Новый ОписаниеПередаваемогоФайла(Файл.ПолноеИмя);
МассивФайлов = Новый Массив;
МассивФайлов.Добавить(ОписаниеФайла);
ВыполнитьЗагрузкуНаСервер(МассивФайлов, Файл.Имя);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ВыполнитьЗагрузкуНаСервер(МассивФайлов, ИмяФайла)
// Здесь мы получаем двоичные данные файла и привязываем их к объекту базы
Для Каждого ПереданныйФайл Из МассивФайлов Цикл
ДвоичныеДанные = ПолучитьИзВременногоХранилища(ПереданныйФайл.Хранилище);
// Создаем элемент справочника "Файлы" или присоединенный файл к документу
НовыйФайл = Справочники.ПоступлениеТоваровПрисоединенныеФайлы.СоздатьЭлемент();
НовыйФайл.Наименование = ИмяФайла;
НовыйФайл.ФайлХранилище = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));
НовыйФайл.Записать();
КонецЦикла;
КонецПроцедуры
Преимущества метода: Высокая скорость реализации, отсутствие необходимости настраивать веб-серверы и безопасность периметра сети.
Недостатки метода: Требуется запущенный клиент мессенджера или облака на компьютере пользователя, жесткая привязка к локальным путям операционной системы, отсутствие контекста (системе сложно понять, к какому именно изделию или документу относится данная фотография, если пользователь не ввел дополнительное описание).
Вместо использования стороннего софта мы можем использовать стандартные возможности платформы «1С:Предприятие 8.3». Для этого информационная база публикуется на веб-сервере (IIS или Apache). Пользователь заходит в базу непосредственно со своего смартфона через обычный мобильный браузер.
Рассмотрим, как происходит процесс работы с файлами на мобильном устройстве через веб-клиент:
Для реализации этого сценария на форме 1С достаточно использовать стандартный механизм платформы НачатьПомещениеФайлаНаСервер. Платформа самостоятельно адаптирует интерфейс под мобильный браузер.
Преимущества метода: Не требуется разрабатывать сторонние приложения. Фотография сразу же привязывается к конкретному документу или элементу справочника, так как пользователь загружает её, находясь непосредственно внутри нужного объекта базы данных.
Недостатки метода: Интерфейс обычных форм 1С в браузере мобильного телефона может быть слишком мелким и неудобным, если формы конфигурации предварительно не адаптированы под мобильные экраны. Также требуется постоянное и стабильное интернет-соединение.
Чтобы обойти проблему неудобного интерфейса веб-клиента на маленьком экране, мы можем разработать собственный HTTP-сервис на стороне 1С и создать простейшую, адаптивную HTML/JS веб-страницу, оптимизированную специально под экраны смартфонов.
Проанализируем архитектуру этого решения. На веб-сервере публикуется созданный в 1С HTTPСервис. На мобильном устройстве открывается легкая веб-страничка. На этой странице располагается одна большая кнопка «Сделать фото дефекта» и поле ввода для штрихкода или номера документа.
При нажатии кнопки отправки JavaScript-код на странице формирует асинхронный POST-запрос и отправляет файл напрямую в 1С. Крайне важно передавать медиаданные правильно. Вместо ресурсоемкого кодирования картинок в строку формата Base64, которое увеличивает объем передаваемого трафика на 33% и нагружает процессор телефона, мы передаем файл напрямую как бинарный поток в теле POST-запроса.
Рассмотрим пример кода HTTP-сервиса в 1С, принимающего бинарные данные фотографии:
Функция ИмяШаблонаЗагрузитьФото(Запрос)
// Получаем двоичные данные напрямую из тела входящего POST-запроса
ДвоичныеДанныеФайла = Запрос.ПолучитьТелоКакДвоичныеДанные();
// Читаем параметры из заголовков запроса для идентификации контекста
НомерДокумента = Запрос.ПараметрыЗапроса.Получить("docNumber");
ИмяФайла = Запрос.ПараметрыЗапроса.Получить("fileName");
Если ДвоичныеДанныеФайла.Размер() > 0 Тогда
// Находим нужный документ в базе данных
ДокументСсылка = Документы.Рекламация.НайтиПоНомеру(НомерДокумента);
Если Не ДокументСсылка.Пустая() Тогда
// Записываем файл в базу данных с привязкой к найденному документу
ПрикрепитьФотографиюКДокументу(ДвоичныеДанныеФайла, ДокументСсылка, ИмяФайла);
Ответ = Новый HTTPСервисОтвет(200);
Ответ.УстановитьТелоИзСтроки("Файл успешно загружен в 1С");
Иначе
Ответ = Новый HTTPСервисОтвет(404);
Ответ.УстановитьТелоИзСтроки("Документ с указанным номером не найден");
КонецЕсли;
Иначе
Ответ = Новый HTTPСервисОтвет(400);
Ответ.УстановитьТелоИзСтроки("Пустой файл запроса");
EndIf;
Возврат Ответ;
КонецФункции
Преимущества метода: Идеальный пользовательский интерфейс на смартфоне, высокая скорость работы, минимальный трафик, возможность тонкой настройки бизнес-логики обработки фотографий.
Недостатки метода: Требуются базовые навыки веб-разработки (HTML, CSS, JavaScript) для создания интерфейса отправки на смартфоне.
Один из самых популярных и изящных способов решения задачи — интеграция 1С с Telegram через специализированного бота. Мессенджер Telegram уже установлен у большинства пользователей, обладает отличным встроенным функционалом работы с камерой и удобным API для разработчиков.
Разберем логику взаимодействия:
Посмотрим на пример кода регламентного задания в 1С, которое опрашивает сервер Telegram на наличие новых сообщений с фотографиями:
Процедура ОпросСервераTelegram() Экспорт
Токен = "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ"; // Ваша строка токена бота
РесурсМетода = "bot" + Токен + "/getUpdates";
HTTPСоединение = Новый HTTPСоединение("api.telegram.org", 443,,,,, Новый ЗащищенноеСоединениеOpenSSL());
HTTPЗапрос = Новый HTTPЗапрос(РесурсМетода);
HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);
Если HTTPОтвет.КодСостояния = 200 Тогда
СтрокаJSON = HTTPОтвет.ПолучитьТелоКакСтроку();
// Парсим полученный JSON, находим массив обновлений "result"
// Вытаскиваем Идентификатор пользователя (Chat ID) и уникальный File ID фотографии
ОбработатьПолученныеСообщения(СтрокаJSON);
КонецЕсли;
КонецПроцедуры
Процедура СкачатьФайлИзTelegram(FileID, Токен)
// Для скачивания сначала получаем путь к файлу методом getFile
РесурсМетода = "bot" + Токен + "/getFile?file_id=" + FileID;
HTTPСоединение = Новый HTTPСоединение("api.telegram.org", 443,,,,, Новый ЗащищенноеСоединениеOpenSSL());
HTTPЗапрос = Новый HTTPЗапрос(РесурсМетода);
HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);
// Из ответа извлекаем относительный путь "file_path"
// Затем скачиваем сам файл по адресу: https://api.telegram.org/file/bot<token>/<file_path>
КонецПроцедуры
При использовании мессенджеров обязательно встает вопрос безопасности и разграничения прав доступа. Для того чтобы посторонние люди не могли отправлять фотографии в вашу систему, необходимо вести справочник разрешенных идентификаторов пользователей (Telegram Chat ID) в базе 1С. При получении каждого сообщения программа должна сверять Chat ID отправителя со списком доверенных сотрудников. Если отправитель не авторизован, бот просто игнорирует запрос или присылает уведомление об ошибке доступа.
Преимущества метода: Невероятно удобный интерфейс для конечного пользователя, не нужно устанавливать дополнительный софт, стабильная отправка медиафайлов даже при слабом мобильном интернете.
Недостатки метода: Зависимость от стороннего сервиса и стабильности его работы на территории использования решения.
Если корпоративная политика безопасности категорически запрещает передавать рабочие данные и фотографии дефектов на сторонние серверы публичных мессенджеров (таких как Telegram или Viber), идеальной альтернативой становится использование встроенной **Системы взаимодействия «1С»**.
Начиная с версии платформы 8.3.18, Система взаимодействия позволяет организовывать полноценный обмен сообщениями и файлами между пользователями непосредственно внутри платформы 1С. Для мобильных устройств существует официальное приложение «1С:Кабинет» или мобильный клиент системы взаимодействия.
Внутри вашей базы 1С программно создается чат-бот системы взаимодействия. Пользователь со смартфона открывает чат-бот в приложении, делает снимок дефекта и отправляет его боту. Поток данных идет исключительно по защищенным корпоративным каналам напрямую на ваш сервер 1С, гарантируя абсолютную конфиденциальность.
Для того чтобы сделать правильный выбор архитектуры решения под конкретные требования вашего бизнеса, проанализируем ключевые параметры каждого рассмотренного подхода:
Просто отправить фотографию в 1С — это лишь половина дела. Нам необходимо понять, к какой именно номенклатурной позиции, партии товара или документу относится полученное изображение дефекта. Без этого разбор "сваленных в кучу" фотографий на сервере превратится в рутину.
Для решения этой проблемы мы рекомендуем использовать технологию **QR-кодирования** и **штрихкодирования**:
Используя эти архитектурные паттерны, мы можем выстроить максимально надежный, удобный и производительный процесс фотофиксации, который сэкономит рабочее время сотрудников и минимизирует ручной труд при работе в среде «1С:Предприятие».