Как организовать двусторонний обмен между 1С и внешними устройствами без сложного администрирования

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

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

Вариант 1. Смена роли 1С: работа через исходящие HTTP-запросы

Рассмотрим наиболее надежный подход, который не требует публикации базы 1С наружу и настройки входящих портов администратором сети. Вместо того чтобы делать из 1С сервер, сделаем ее HTTP-клиентом. В этом случае 1С сама инициирует сеансы связи по защищенному протоколу HTTPS с внешним облачным сервисом или сайтом.

Разберем схему работы по шагам:

  1. Внешний промежуточный сервис (веб-сайт, микросервис или облачная база данных) принимает запросы от мобильных клиентов и хранит текущие очереди задач.
  2. Регламентное задание в 1С по расписанию формирует список новых документов к отгрузке и отправляет их на внешний сервис методом POST/PUT, используя объект HTTPСоединение.
  3. Тем же регламентным заданием 1С запрашивает методом GET накопившиеся отметки о выполнении, фиксирует их в базе и отправляет подтверждение об обработке.

Посмотрим на пример отправки данных в формате JSON из 1С на внешний сервер:


ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();

СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("ИдентификаторЗадачи", Строка(СсылкаНаДокумент.УникальныйИдентификатор()));
СтруктураДанных.Вставить("Номер", СсылкаНаДокумент.Номер);
СтруктураДанных.Вставить("Статус", "КОтгрузке");

ЗаписатьJSON(ЗаписьJSON, СтруктураДанных);
СтрокаJSON = ЗаписьJSON.Закрыть();

ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
Соединение = Новый HTTPСоединение("api.myservice.com", 443, , , , 30, ЗащищенноеСоединение);

Заголовок = Новый Соответствие;
Заголовок.Вставить("Content-Type", "application/json; charset=utf-8");

Запрос = Новый HTTPЗапрос("/api/v1/tasks", Заголовок);
Запрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8);

Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния = 200 Или Ответ.КодСостояния = 201 Тогда
    // Данные успешно приняты сервером
КонецЕсли;

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

Вариант 2. Файловый обмен через общий ресурс или FTP

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

Правильный алгоритм организации файлового обмена строится по принципу «одно событие — один файл»:

  1. Выгрузка задания: 1С формирует файл с уникальным идентификатором документа в имени, например, task_d3b07384d113.json.
  2. Исполнение: Мобильное приложение забирает файл, а после выполнения создает новый файл-отчет с тем же идентификатором и постфиксом статуса, например, task_d3b07384d113.done.
  3. Загрузка в 1С: Обработка сканирует каталог, считывает завершенные файлы, проводит изменения в учетной системе и переносит обработанные файлы в архивную папку.

Вариант 3. Обмен через почтовые сообщения

Если нет возможности поднять внешний веб-сервис или FTP-сервер, для небольшого количества исполнителей можно использовать электронную почту. Механизм работы строится следующим образом:

  1. 1С через стандартный объект ИнтернетПочта отправляет письмо с заданием (в теле письма или во вложенном JSON/XML-файле) на персональный адрес исполнителя.
  2. Исполнитель или почтовый клиент на смартфоне отправляет ответное служебное письмо на выделенный ящик отчетов.
  3. Регламентное задание в 1С проверяет почтовый ящик, разбирает вложения с результатами и помечает документы как выполненные.

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

Важные правила надежности любого самодельного обмена

Разберем критические моменты, которые необходимо заложить в логику обмена независимо от выбранного транспорта:

  1. Использование планов обмена: Чтобы не выгружать всю базу целиком, создадим в 1С объект конфигурации ПланОбмена. Механизм авторегистрации зафиксирует только измененные документы, что минимизирует объем передаваемого трафика.
  2. Идемпотентность обработки: Мобильная сеть часто работает с перебоями. Одно и то же сообщение о завершении задачи может прийти повторно. 1С должна проверять уникальный идентификатор транзакции и игнорировать дублирующие запросы.
  3. Двухфазное подтверждение (квитирование): Задание считается снятым с очереди выгрузки только после явного подтверждения успешной обработки принимающей стороной.
← На главную