Настройка отчетности по маркировке на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка отчетности по маркировке на 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1240
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    844
  • 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
    582
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    749
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    981

Настройка отчётности по маркировке на 1С-Битрикс

Обязательная маркировка создаёт не только операционную нагрузку (гасить коды, оформлять возвраты), но и потребность в отчётности: сколько кодов выведено из оборота за период, какой статус по каждому документу в ЧЗ, есть ли расхождения между данными Битрикс и Честным Знаком. Стандартный инструментарий Битрикс не включает отчётов по маркировке — их нужно разрабатывать отдельно на базе данных, которые накапливаются в процессе интеграции с ЧЗ/ЕГАИС.

Источники данных для отчётов

Все данные по маркировке хранятся в кастомных таблицах, созданных в ходе интеграции:

  • local_marking_codes — коды маркировки, их статусы, привязка к заказам
  • local_cz_documents — документы, отправленные в Честный Знак (вывод из оборота, возвраты)
  • local_egais_documents — документы ЕГАИС (для алкоголя)

Отчёты строятся SQL-запросами к этим таблицам с присоединением к стандартным таблицам Битрикс (b_sale_order, b_catalog_iblock_element).

Реализация административных отчётов

В Битрикс административные отчёты добавляются через модуль main.ui.grid или кастомные страницы в /local/php_interface/admin/. Второй вариант даёт полный контроль над фильтрацией и выводом.

// /local/php_interface/admin/marking_report.php
require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_before.php';

$APPLICATION->SetTitle('Отчёт по маркировке');

$filter = [];
$dateFrom = $_REQUEST['date_from'] ?? date('Y-m-01');
$dateTo   = $_REQUEST['date_to']   ?? date('Y-m-d');

if ($dateFrom && $dateTo) {
    $filter['>=WITHDRAWAL_DATE'] = $dateFrom . ' 00:00:00';
    $filter['<=WITHDRAWAL_DATE'] = $dateTo   . ' 23:59:59';
}

// Агрегация по статусам
$stats = \Bitrix\Main\Application::getInstance()
    ->getConnection()
    ->query("
        SELECT
            mc.STATUS,
            COUNT(*) as cnt,
            COUNT(DISTINCT mc.ORDER_ID) as orders_cnt,
            COUNT(DISTINCT mc.PRODUCT_ID) as products_cnt
        FROM local_marking_codes mc
        WHERE mc.WITHDRAWAL_DATE BETWEEN ? AND ?
        GROUP BY mc.STATUS
    ", [$dateFrom . ' 00:00:00', $dateTo . ' 23:59:59'])
    ->fetchAll();

require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_after.php';

Ключевые показатели отчётности

Операционный отчёт (ежедневный):

  • Количество кодов, выведенных из оборота за день
  • Количество возвратов в оборот
  • Ошибки вывода (коды с ошибкой по ответу ЧЗ)
  • Документы в статусе ожидания (не обработаны ЧЗ более 30 минут)

Аналитический отчёт (еженедельный/месячный):

  • Динамика выбытия по категориям товаров
  • Доля возвратов в разрезе SKU
  • Время обработки документов ЧЗ (от отправки до подтверждения)

Сверочный отчёт:

-- Расхождение между остатками Битрикс и зарезервированными/выведенными кодами
SELECT
    ce.ID as PRODUCT_ID,
    ce.NAME as PRODUCT_NAME,
    cp.QUANTITY as STOCK_QUANTITY,
    COUNT(CASE WHEN mc.STATUS = 'in_stock' THEN 1 END) as CODES_AVAILABLE,
    cp.QUANTITY - COUNT(CASE WHEN mc.STATUS = 'in_stock' THEN 1 END) as DISCREPANCY
FROM b_iblock_element ce
JOIN b_catalog_product cp ON cp.ID = ce.ID
LEFT JOIN local_marking_codes mc ON mc.PRODUCT_ID = ce.ID
WHERE ce.IBLOCK_ID = 5  -- каталог маркируемых товаров
GROUP BY ce.ID, ce.NAME, cp.QUANTITY
HAVING DISCREPANCY != 0
ORDER BY ABS(DISCREPANCY) DESC

Расхождения сигнализируют о потерянных кодах или ошибках в цепочке интеграции.

Экспорт в Excel

Для выгрузки данных аудиторам или регулятору — экспорт через PHPSpreadsheet:

public function exportToXlsx(array $data, string $filename): void
{
    $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();

    $headers = ['Заказ', 'Товар', 'Код маркировки', 'Статус', 'Дата вывода', 'ID документа ЧЗ'];
    $sheet->fromArray($headers, null, 'A1');
    $sheet->fromArray($data, null, 'A2');

    $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
    $writer->save($filename);
}

Уведомления и алёрты

Критичные ситуации, требующие немедленной реакции:

  • Код в статусе pending более 1 часа — ЧЗ не подтвердил вывод
  • Ошибка вывода кода (ERROR статус от ЧЗ) — код, возможно, уже выведен через другой канал
  • Расхождение остатков более 5% — инициировать инвентаризацию

Уведомления через CEventLog::Add() + email через CEvent::Send() для ответственного сотрудника.

Состав работ

  • Разработка административных страниц с фильтрами и таблицами
  • Агрегационные SQL-запросы: операционные и сверочные отчёты
  • Экспорт в Excel
  • Настройка алёртов на критические ситуации
  • Документирование для пользователей

Сроки: 2–3 недели при наличии рабочей интеграции с ЧЗ/ЕГАИС.