Автоматизация отчетов в 1С-Битрикс: настройка агентов и cron

Проблема ручной выгрузки отчётов Менеджер тратит 1–2 часа каждое утро: войти в админку, выбрать даты, скачать Excel, отправить почтой. Ошибки — не те столбцы, забыл прикрепить файл. При срочном запросе отчёта за прошлый месяц — перерывает всю документацию. Такая ситуация типична для десятков комп
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Автоматизация отчетов в 1С-Битрикс: настройка агентов и cron
Простой
~1 день

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1440
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1013
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    751
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    872
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    791
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1153

Проблема ручной выгрузки отчётов

Менеджер тратит 1–2 часа каждое утро: войти в админку, выбрать даты, скачать Excel, отправить почтой. Ошибки — не те столбцы, забыл прикрепить файл. При срочном запросе отчёта за прошлый месяц — перерывает всю документацию. Такая ситуация типична для десятков компаний на Битрикс. Потери времени — 40 часов в месяц. Автоматизация генерации отчётов решает проблему за день разработки. Но без опыта возникают типовые грабли: cron не настроен, права на запись в /upload/reports не выставлены, агенты не логируют ошибки. Мы настраиваем полный цикл: данные → файл → доставка получателю. Наши инженеры с опытом работы над 30+ проектами гарантируют стабильную работу агентов в production.

Преимущества автоматизации в 10 раз выгоднее ручной работы

Ручная выгрузка требует участия человека. Автоматический агент выполняет работу в 3 часа ночи, без нагрузки на сервер. Экономия времени — более 90%. Сравните:

Параметр Ручная выгрузка Автоматическая генерация
Время на 5 отчётов 30 минут 0 минут
Ошибки возможны исключены
Регулярность по запросу по расписанию
Затраты в год $5.4k–7.8k $450–650 (настройка + поддержка)

Автоматизация в 10 раз сокращает издержки. Кроме того, исключаются ошибки человеческого фактора.

Как настроить cron и агенты на production?

Настройка cron и создание агента

На production-сервере обязательно использовать системный cron вместо HTTP-триггера. Добавьте задачу в crontab:

# /etc/cron.d/bitrix */5 * * * * www-data /usr/bin/php /var/www/site/bitrix/modules/main/include/cron_events.php > /dev/null 2>&1 

Без cron агенты будут запускаться только при посещении сайта, что ненадёжно.

Пример кода агента (развернуть)

Агенты в Битрикс — это функции PHP, выполняемые по расписанию через CAgent. Пример создания агента:

\CAgent::AddAgent( 'GenerateDailyReports();', 'local', 'N', 86400, '', 'Y', date('d.m.Y H:i:s', mktime(8, 0, 0)), 30 ); 

Документация Битрикс

Шаблон агента и отправка email

function GenerateDailyReports(): string { $reports = [ [ 'type' => 'orders', 'filename' => 'orders_' . date('Y-m-d') . '.xlsx', 'params' => ['date_from' => date('Y-m-d', strtotime('-1 day')), 'status' => null], 'recipient' => '[email protected]', ], [ 'type' => 'low_stock', 'filename' => 'stock_' . date('Y-m-d') . '.xlsx', 'params' => ['threshold' => 5], 'recipient' => '[email protected]', ], ]; foreach ($reports as $reportConfig) { try { $generator = ReportGeneratorFactory::create($reportConfig['type']); $filePath = $generator->generate($reportConfig['params']); $savedName = '/upload/reports/' . $reportConfig['filename']; rename($filePath, $_SERVER['DOCUMENT_ROOT'] . $savedName); sendReportEmail($reportConfig['recipient'], $savedName, $reportConfig['filename']); \Bitrix\Main\Diag\Debug::writeToFile( date('Y-m-d H:i:s') . ' Report generated: ' . $reportConfig['filename'], '', '/local/logs/reports.log' ); } catch (\Throwable $e) { \Bitrix\Main\Diag\Debug::writeToFile( date('Y-m-d H:i:s') . ' ERROR: ' . $e->getMessage(), '', '/local/logs/reports_errors.log' ); } } return 'GenerateDailyReports();'; } 

Отправка по email

Отчёт отправляется через почтовое событие Битрикс или напрямую через PHPMailer с вложением.

function sendReportEmail(string $to, string $filePath, string $fileName): void { $absolutePath = $_SERVER['DOCUMENT_ROOT'] . $filePath; $mail = new \PHPMailer\PHPMailer\PHPMailer(true); $mail->CharSet = 'UTF-8'; $mail->setFrom('[email protected]', 'Система отчётов'); $mail->addAddress($to); $mail->Subject = 'Автоотчёт: ' . $fileName . ' от ' . date('d.m.Y'); $mail->Body = 'Отчёт сформирован автоматически. Файл во вложении.'; $mail->addAttachment($absolutePath, $fileName); $mail->send(); } 

Хранение и очистка архива

Сгенерированные файлы сохраняются в /upload/reports/ с историей за 30 дней. Очистка старых файлов — отдельный агент:

function CleanOldReports(): string { $dir = $_SERVER['DOCUMENT_ROOT'] . '/upload/reports/'; foreach (glob($dir . '*.xlsx') as $file) { if (filemtime($file) < time() - 30 * 86400) { unlink($file); } } return 'CleanOldReports();'; } 

Страница архива в ЛК менеджера — список файлов с датой и ссылкой на скачивание, с проверкой прав доступа.

Какие отчёты автоматизировать?

Подходит любой отчёт, который можно построить через Битрикс ORM или инфоблоки. Часто автоматизируем:

  • Продажи за день/неделю/месяц (с группировкой по менеджерам)
  • Остатки на складе с порогом
  • Заказы в статусе "ожидание оплаты"
  • Динамику цен конкурентов (если есть парсинг)
  • Акты сверки с контрагентами

Для каждого типа отчёта создаётся свой класс, реализующий интерфейс ReportGeneratorInterface. Это позволяет легко добавлять новые отчёты без изменения ядра. На практике одна и та же фабрика может обслуживать 20 разных отчётов: конфигурация задаётся массивом, а логика выборки — отдельными методами. Для тяжёлых выборок применяем чанкование по 500 записей и потоковую запись в XLSX через PhpSpreadsheet Writer, чтобы не переполнять память при 100 000 строк.

Защита от несанкционированного доступа

Храните файлы в /upload/reports/ с проверкой прав через $USER. Настройте .htaccess для запрета прямого доступа из веба. Ссылка на скачивание должна генерироваться через скрипт с проверкой прав. Логирование всех скачиваний — в отдельный файл.

Типичные ошибки и рекомендации

  1. Агенты запускаются только при хите — решается cron.
  2. Некорректные права на папку /upload/reports — нужен write для www-data.
  3. Ошибки в коде без логирования — настройте Debug::writeToFile.
  4. Превышение времени выполнения — для больших отчётов используйте set_time_limit(0).

Что входит в работу

  • Анализ проекта: выявляем какие отчёты нужны и их параметры.
  • Настройка cron и создание агентов под каждый отчёт.
  • Разработка шаблонов отчётов (Excel/PDF/CSV) с требуемыми данными.
  • Настройка отправки по email с вложением.
  • Логирование ошибок и регистрация успешных генераций.
  • Автоматическая очистка старых файлов (задается период хранения).
  • Документирование схемы и обучение менеджера.

Сроки настройки

Конфигурация Срок
1 агент + 1 тип отчёта + email от 1 дня
3–5 отчётов с разными расписаниями 2–4 дня
Архив отчётов + UI в ЛК + уведомления 4–6 дней

Сроки ориентировочные, окончательные определяем после анализа вашего проекта. Свяжитесь с нами, чтобы получить консультацию инженера и расчёт стоимости под ваш проект. Закажите настройку автоматической генерации отчётов — избавьте менеджеров от рутины и ошибок.