При автоматизации складских процессов, выездных отгрузок или работы курьеров часто возникает задача: передать список заданий из 1С на смартфоны сотрудников и оперативно получить обратно отметки о выполнении. При этом развертывание полноценного веб-сервера внутри корпоративной сети может быть затруднено из-за отсутствия статического IP-адреса, закрытых портов или жестких политик безопасности. Разберем архитектурные варианты реализации такого обмена, их плюсы, минусы и ключевые технические нюансы.
Рассмотрим наиболее надежный подход, который не требует публикации базы 1С наружу и настройки входящих портов администратором сети. Вместо того чтобы делать из 1С сервер, сделаем ее HTTP-клиентом. В этом случае 1С сама инициирует сеансы связи по защищенному протоколу HTTPS с внешним облачным сервисом или сайтом.
Разберем схему работы по шагам:
HTTPСоединение.Посмотрим на пример отправки данных в формате 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С и исключает блокировки лицензий платформы при одновременном обращении десятков сотрудников.
Проанализируем ситуацию, когда обмен строится на передаче файлов. Главная техническая ошибка здесь — попытка дописывать статусы в один общий файл. Конкурентный доступ нескольких мобильных клиентов к одному ресурсу неминуемо приведет к блокировкам файлов и потере данных.
Правильный алгоритм организации файлового обмена строится по принципу «одно событие — один файл»:
task_d3b07384d113.json.task_d3b07384d113.done.Если нет возможности поднять внешний веб-сервис или FTP-сервер, для небольшого количества исполнителей можно использовать электронную почту. Механизм работы строится следующим образом:
ИнтернетПочта отправляет письмо с заданием (в теле письма или во вложенном JSON/XML-файле) на персональный адрес исполнителя.Такой вариант подходит для первичной обкатки бизнес-процесса, однако имеет задержки по времени доставки и требует контроля за спам-фильтрами.
Разберем критические моменты, которые необходимо заложить в логику обмена независимо от выбранного транспорта:
ПланОбмена. Механизм авторегистрации зафиксирует только измененные документы, что минимизирует объем передаваемого трафика.