function SendDailyReportAgent() { global $DB; $email = 'sekrylov@gmail.com, grg767@yandex.ru'; $eventName = "DAILY_REPORT_STATS"; // Определяем даты для названия файла $dateStart = date('d-m-Y', strtotime("-30 days")); $dateEnd = date('d-m-Y'); $fileName = "puhovik_statistics_{$dateStart}_{$dateEnd}.xls"; $subject = "Ежедневный отчет по активности ($dateEnd)"; $DB->Query("SET @DateT = ADDDATE(CURDATE(), INTERVAL -30 DAY)"); $sql = " SELECT IFNULL(CAST(Date AS CHAR), 'ИТОГО') AS 'DATE_VAL', SUM(TotalSessions) AS SESSIONS, SUM(TotalUsersRegistration) AS REG_TOTAL, SUM(UsersWithBirthdate) AS WITH_BDAY, IF(SUM(TotalUsersRegistration) > 0, ROUND(SUM(UsersWithBirthdate) / SUM(TotalUsersRegistration) * 100, 2), 0) AS KOEF_BDAY, SUM(UsersWithEmail) AS WITH_EMAIL, IF(SUM(TotalUsersRegistration) > 0, ROUND(SUM(UsersWithEmail) / SUM(TotalUsersRegistration) * 100, 2), 0) AS KOEF_EMAIL, SUM(TotalOrder) AS ORDERS, SUM(CountReserves) AS RESERVES, SUM(CountPickup) - SUM(CountReserves) AS PICKUP, SUM(CountPartners) AS PARTNERS, SUM(AddToCart) AS ADD_CART, SUM(CartToOrder) AS ORDER_FROM_CART, IF(SUM(AddToCart) > 0, ROUND(SUM(CartToOrder) / SUM(AddToCart) * 100, 2), 0) AS KOEF_ORDER FROM ( SELECT DATE(`DATE_REGISTER`) AS Date, COUNT(`ID`) AS TotalUsersRegistration, COUNT(`PERSONAL_BIRTHDAY`) AS UsersWithBirthdate, COUNT(`EMAIL`) AS UsersWithEmail, 0 AS TotalOrder, 0 AS CountReserves, 0 AS CountPickup, 0 AS CountPartners, 0 AS TotalSessions, 0 AS AddToCart, 0 AS CartToOrder FROM `b_user` WHERE `DATE_REGISTER` >= @DateT GROUP BY Date UNION ALL SELECT DATE(a.DATE_INSERT) AS Date, 0, 0, 0, COUNT(DISTINCT a.ID), COUNT(DISTINCT prop.ORDER_ID), COUNT(DISTINCT dlv.ORDER_ID), COUNT(DISTINCT part.ORDER_ID), 0, 0, 0 FROM `b_sale_order` AS a LEFT JOIN `b_sale_order_props_value` AS prop ON a.ID = prop.ORDER_ID AND prop.ORDER_PROPS_ID = '22' AND prop.`VALUE` LIKE 'Y%' LEFT JOIN `b_sale_order_delivery` AS dlv ON a.ID = dlv.ORDER_ID AND dlv.DELIVERY_ID = 76 LEFT JOIN `b_sale_order_delivery` AS part ON a.ID = part.ORDER_ID AND part.DELIVERY_ID <> 76 WHERE a.DATE_INSERT >= @DateT GROUP BY Date UNION ALL SELECT DATE(`TIMESTAMP_X`) AS Date, 0, 0, 0, 0, 0, 0, 0, COUNT(`SESSION_ID`), 0, 0 FROM `b_user_session` WHERE `TIMESTAMP_X` >= @DateT GROUP BY Date UNION ALL SELECT DATE(`DATE_INSERT`) AS Date, 0, 0, 0, 0, 0, 0, 0, 0, COUNT(DISTINCT `FUSER_ID`), COUNT(DISTINCT `ORDER_ID`) FROM `b_sale_basket` WHERE `DATE_INSERT` >= @DateT GROUP BY Date ) combined GROUP BY Date WITH ROLLUP; "; $res = $DB->Query($sql); // Шапка таблицы (общая для HTML письма и XLS) $tableHeader = '
[RuntimeException] Could not start session because headers have already been sent. "/data/www/bitrix/catalog_export/report_stat_send_email.php":1. (0) /data/www/bitrix/modules/main/lib/session/session.php:143 #0: Bitrix\Main\Session\Session->start() /data/www/bitrix/modules/main/lib/session/kernelsessionproxy.php:47 #1: Bitrix\Main\Session\KernelSessionProxy->start() /data/www/bitrix/modules/main/include.php:182 #2: require_once(string) /data/www/bitrix/modules/main/include/prolog_before.php:19 #3: require_once(string) /data/www/bitrix/modules/main/include/prolog.php:10 #4: require_once(string) /data/www/bitrix/header.php:1 #5: require(string) /data/www/catalog/index.php:2 #6: include_once(string) /data/www/bitrix/modules/main/include/urlrewrite.php:128 #7: include_once(string) /data/www/bitrix/urlrewrite.php:2 ----------