Кейс дня "Автоматическое разделение PDF файла на части и сбор в архив в Б24. Стек REST+API+PHP+BASH"

Интеграция платформы Битрикс24 (коробочная версия) и скриптов по обработке файлов:
  • Рассмотрим пример, менеджер создает сделку.
  • В рамках проекта по регламенту компании менеджер готовит для клиента пакет документов. В электронном виде документы - это семистраничный PDF файл.
  • Менеджер создает, сохраняет файл и связывает его с множественным полем сделки.
  • При сохранении карточки сделки, после закачки исходного файла, автоматически запускается процесс, который условно говоря, проверяет, читает исходный файл, делит его на 7-мь отдельных файлов, присваивает им имена, собирает, архивирует и перемещает для хранения обратно в поле сделки.
  • Имена «новых» файлов присваиваются роботом по утвержденной «маске» содержат имя клиента, название и номер листа документа.
  • Посмотрим результат пробного тестирования. Скачаем из карточки обработанные и разложенные файлы. Видим 7-мь документов: Доверенность 1, Доверенность 2, Заявление…, Заявление…, Заявление…, Согласие и Ходатайство.
  • Зачем нужно разбивать документ на составные части? Это нужно чтобы на разных этапах дальнейшей работы с документами оптимизировать, исключить человеческую ошибку и ускорить обработку дальнейших процессов, так как на разных этапах процесса работы будут использоваться отдельные документы из общего пакета.

Как работают бизнес-процессы:
  • Они отслеживают загрузку исходного 7-ми страничного файла
  • Запускают обработчик (технический бизнес-процесс «Разделение файла») на сервере. При запуске БП проверяет соблюдение ряда условий и в зависимости от результатов определяется последовательность дальнейших действий:

  • №1 три условия «И» :
    ‣ Это первая загрузка исходного файла? Да или нет?
    ‣ Пакет подписан? Да или нет?
    ‣ Папка разделенный документ – пустая? Да или нет?

  • №2 Два условия по техническим полям «ИЛИ»:
    ‣ Запускался ли БП - БП разделения статус = пусто.
     разделения статус = 0

  • Этими условиями:
    ‣ Проверяем был ли осуществлен запуск глобального бизнес-процесса?
    ‣ Исключаем запуск бизнес-процесса повторно.

  • Следующее действие – старт активити Битрикс24 WebHook и запуск с его помощью php файла, содержащего скрипт расположенного на внешнем сервере. Хендлер активити содержит полный адрес, параметры запуска и ключи. Цель работы скрипта передача ID сделки, чтобы система понимала откуда нужно взять исходный файл и куда вернуть разделенные файлы поле обработки.
  • Серверный скрипт перемещает файлы для обработки в папку local/file где хранятся скаченные файлы, предназначенные для обработки.
  • В папке local/logs хранятся логи обработки.
  • Для осуществления обработки файлов на сервере обязательно должны быть установлены интерпретатор PDF (для разделения исходного файла) и поддержка ZIP архива.
  • Обработка с помощью модуля HPH, разделение, сохранение и сжатие файлов это процедуры, которые требуют определенного времени.
  • Настройка модулей сервера, которые работают с PDF файлами требует индивидуальной настройки. По этой причине была разделена обработка файлов на сервере и обработка общей оболочки на PHP.

  • Отдельно поговорим о том, как система использует дополнительные проверки при добавлении исходного файла в поле сделки:
    ‣ При закачке в поле файла не PDF, а другого типа обработчик остановит работу и даст уведомление о том, что закаченный файл другого типа и не может быть обработан.
    ‣ В случае, если закачан файл PDF, но количество страниц меньше, чем предусмотрено регламентом обработчик остановит работу и даст уведомление о несоответствии.
    ‣ В случае, если разделенные файлы будут содержать ошибки, то робот и об этом проинформирует менеджера.

На данном примере мы рассмотрели уникальные возможности результатов интеграции штатных бизнес-процессов Битрикс24, возможностей REST-API, возможностей сервисных скриптов, которые позволяют:
  • Отправлять информацию на внешний веб сервер, обработать ее и вернуть результаты обработки в сделку Битрикс24.

Вернуться к кейсам