Ночные поставки без ночных смен: как ИИ разгрузил логистику 1С
Как ИИ берёт на себя ночную логистику: архитектура решения
Классический сценарий: поставщик присылает скан товарной накладной (ТОРГ-12) или электронный документ в формате XML. Вместо того чтобы держать ночного оператора, система раз в час запускает фоновое задание, которое:
- забирает входящие документы из FTP/SFTP-папки или по API от поставщика;
- передаёт сканы в облачный сервис распознавания (например, на базе нейросети);
- получает структурированные данные (номенклатура, количество, цена);
- создаёт документы «Поступление товаров» в 1С и проводит их.
Всё это без участия человека. Но дьявол — в деталях интеграции.
Интеграция с внешними AI-сервисами через HTTP
Самый распространённый способ — вызов REST API нейросетевого сервиса. Рассмотрим пример: отправка изображения на распознавание и получение JSON с результатом.
// Псевдокод — реальный API сервиса может отличаться
Функция РаспознатьНакладную(ПутьКФайлу) Экспорт
// 1. Читаем файл как двоичные данные
Файл = Новый Файл(ПутьКФайлу);
ДвДанные = Новый ДвоичныеДанные(ПутьКФайлу);
// 2. Формируем HTTP-запрос
Запрос = Новый HTTPЗапрос("/api/v1/recognize");
Запрос.Заголовки.Вставить("Content-Type", "image/jpeg");
Запрос.УстановитьТелоИзДвоичныхДанных(ДвДанные);
// 3. Отправляем POST
Соединение = Новый HTTPСоединение("ai-logistics.example.com", 443,,,,,
Новый ЗащищенноеСоединениеOpenSSL());
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния <> 200 Тогда
ВызватьИсключение "Ошибка распознавания: код " + Ответ.КодСостояния;
КонецЕсли;
// 4. Разбираем JSON-ответ
СтрокаОтвета = Ответ.ПолучитьТелоКакСтроку("UTF-8");
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаОтвета);
Результат = ПрочитатьJSON(ЧтениеJSON, Истина); // в Соответствие
ЧтениеJSON.Закрыть();
Возврат Результат;
КонецФункции
Важно: в реальных проектах не забывайте про таймауты и повторные попытки. Если сервис распознавания «упал» на 10 минут, все ночные задания встанут. Добавьте механизм экспоненциальной задержки и ограничение числа повторов.
Типичные ловушки автоматизации: почему ночью всё ломается
После месяца работы вы замечаете, что часть поступлений не проведена, а в журнале регистрации — ошибки «Не найден контрагент» или «Некорректная ставка НДС». Вот две главные причины.
Проблема 1: Сбои сети и повторные вызовы
Если во время отправки запроса к AI-сервису произошёл разрыв соединения, HTTP-запрос может быть выполнен дважды. Сервис распознает одну и ту же накладную дважды, вернёт два разных идентификатора, и в 1С создадутся два одинаковых документа. Решение — идемпотентность: передавать уникальный ключ (например, хеш файла) в заголовке запроса, а сервис должен игнорировать повторные запросы с тем же ключом.
// Пример добавления заголовка идемпотентности
Хеш = ХешФайла(ПутьКФайлу); // функция вычисления SHA-256
Запрос.Заголовки.Вставить("X-Idempotency-Key", Хеш);
Проблема 2: Некорректные данные от ИИ и их валидация
Нейросеть может ошибиться: перепутать артикул, неверно распознать количество или цену. Если вы автоматически проводите документ без проверки, в учёте появляются «кривые» остатки. Ночью нет бухгалтера, который заметит ошибку. Через неделю расхождения накопятся, и исправлять их придётся вручную.
Ключевой тезис: ИИ не гарантирует 100% точности. Всегда предусматривайте этап валидации и, при сомнениях, оставляйте документ непроведённым с пометкой «Требует проверки». Лучше недопровести, чем провести с ошибкой.
Как организовать валидацию:
- сверять распознанную номенклатуру с базой 1С по артикулу или штрихкоду;
- проверять, что цена не отклоняется от средней более чем на 20%;
- если хотя бы одна позиция не прошла проверку — весь документ помечать как «С ошибкой» и отправлять уведомление ответственному.
Практическое руководство: как настроить надёжную ночную обработку
Чтобы ночные поставки работали стабильно, следуйте чек-листу ниже.
Чек-лист для внедрения
- Идемпотентность вызовов — каждый запрос к AI-сервису должен содержать уникальный ключ (хеш файла или GUID).
- Повторные попытки с задержкой — при ошибках сети делайте до 3 попыток с интервалом 5, 15, 30 секунд.
- Валидация результата — перед проведением документа проверяйте соответствие номенклатуры, цен и количества.
- Логирование всех шагов — записывайте в журнал регистрации этапы: «Файл получен», «Отправлен на распознавание», «Получен ответ», «Создан документ».
- Уведомления об ошибках — при сбоях отправляйте сообщение в Telegram или на почту дежурному администратору.
- Ручной контроль — раз в день (утром) запускайте отчёт «Непроведённые поступления за ночь» для быстрой проверки.
Что делать прямо сейчас
Если вы уже используете ИИ-распознавание или только планируете, проверьте свой код на наличие этих трёх типичных ошибок:
- Нет проверки кода состояния HTTP-ответа (всегда обрабатывайте 4xx и 5xx).
- Нет ограничения на количество одновременных фоновых заданий (можете положить сервер).
- Нет механизма «отката» — если создание документа в 1С упало, а AI-сервис уже вернул результат, повторный запуск создаст дубль.
// Пример безопасного создания документа с проверкой дублей
Функция СоздатьПоступление(ДанныеРаспознавания, КлючИдемпотентности) Экспорт
// Проверяем, не создан ли уже документ с таким ключом
Найденные = Документы.ПоступлениеТоваровУслуг.НайтиПоРеквизиту("КлючИдемпотентности", КлючИдемпотентности);
Если Найденные.Количество() > 0 Тогда
Возврат Найденные[0].Ссылка; // уже есть, ничего не делаем
КонецЕсли;
Док = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
ЗаполнитьИзРаспознавания(Док, ДанныеРаспознавания);
Док.КлючИдемпотентности = КлючИдемпотентности; // реквизит нужно добавить в конфигурацию
Попытка
Док.Записать(РежимЗаписиДокумента.Проведение);
Исключение
ЗаписьЖурналаРегистрации("Ошибка", УровеньЖурналаРегистрации.Ошибка,,,
"Не удалось провести поступление: " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
// Документ остаётся непроведённым — это безопасно
КонецПопытки;
Возврат Док.Ссылка;
КонецФункции
Заключение: будущее без ночных смен
ИИ действительно способен взять на себя рутинные операции по обработке входящих документов и формированию заказов. Но автоматизация «на скорую руку» без учёта сетевых сбоев, идемпотентности и валидации приведёт к хаосу в учёте. Потратьте один день на проектирование надёжной архитектуры — и ночные поставки будут проходить без единого звонка от бухгалтера.
Главный совет: не доверяйте ИИ слепо. Всегда оставляйте возможность ручного контроля и не забывайте про логирование. Тогда ночные смены действительно останутся в прошлом.
Попробовать НОПик →
Проверить свой уровень бесплатно →