3ERP

3ERP - простая и бесплатная программа для бухгалтерского и оперативного учёта в учреждениях сферы торговли и услуг, общественного питания, складского хранения, автосервиса, медицины, логистики, производства, управления работами и заявками, поддерживающая до 100 пользователей, на русском языке и полностью бесплатная для 1 пользователя. На сайт (скачать)

08. Отчёты

Отчёты позволяют пользователям выполнять параметризованные SQL-запросы и просматривать результаты в виде таблицы.

8.1. Синтаксис отчёта

ОТЧЁТ ИмяОтчёта
    ПАРАМЕТР ИмяПараметра ТИП_ДАННЫХ [ОБЯЗАТЕЛЬНЫЙ]
    ПАРАМЕТР ИмяДругогоПараметра ТИП_ДАННЫХ
    
    ЗАПРОС "
        SELECT ...
        FROM ...
        WHERE 1=1
        {{ЕСЛИ Параметр}} AND поле = '{{Параметр}}' {{КОНЕЦ}}
        ORDER BY ...
    "
    
    КОЛОНКА ИмяКолонки ТИП_ДАННЫХ
    КОЛОНКА ИмяКолонки ТИП_ДАННЫХ
    
КОНЕЦ

8.2. Типы параметров

ТипВ UIВ SQL
СТРОКАТекстовое поле'{{Значение}}'
ЧИСЛОПоле для цифр{{Значение}}
ДАТАВыбор даты'{{Значение}}'
ВЫБОР КоллекцияВыпадающий список'{{Значение}}'

8.3. Пример отчёта с параметрами

ОТЧЁТ ПродажиЗаПериод
    ПАРАМЕТР ДатаС ДАТА ОБЯЗАТЕЛЬНЫЙ
    ПАРАМЕТР ДатаПо ДАТА ОБЯЗАТЕЛЬНЫЙ
    ПАРАМЕТР Клиент ВЫБОР Клиенты
    
    ЗАПРОС "
        SELECT 
            З.Номер,
            З.Дата,
            К.Наименование as Клиент,
            З.ИтогоСумма as Сумма,
            З.Статус
        FROM ЗаказНаряд З
        JOIN Клиенты К ON З.Клиент = К.id
        WHERE З.Дата BETWEEN '{{ДатаС}}' AND '{{ДатаПо}}'
        {{ЕСЛИ Клиент}} AND З.Клиент = '{{Клиент}}' {{КОНЕЦ}}
        ORDER BY З.Дата DESC
    "
    
    КОЛОНКА Номер СТРОКА
    КОЛОНКА Дата ДАТА
    КОЛОНКА Клиент СТРОКА
    КОЛОНКА Сумма ЧИСЛО
    КОЛОНКА Статус СТРОКА
КОНЕЦ

8.4. Агрегатный отчёт

ОТЧЁТ ПродажиПоКлиентам
    ПАРАМЕТР ДатаС ДАТА
    ПАРАМЕТР ДатаПо ДАТА
    
    ЗАПРОС "
        SELECT 
            К.Наименование as Клиент,
            COUNT(З.id) as КоличествоЗаказов,
            SUM(З.ИтогоСумма) as ОбщаяСумма,
            AVG(З.ИтогоСумма) as СреднийЧек
        FROM ЗаказНаряд З
        JOIN Клиенты К ON З.Клиент = К.id
        WHERE 1=1
        {{ЕСЛИ ДатаС}} AND З.Дата >= '{{ДатаС}}' {{КОНЕЦ}}
        {{ЕСЛИ ДатаПо}} AND З.Дата <= '{{ДатаПо}}' {{КОНЕЦ}}
        GROUP BY К.id
        ORDER BY ОбщаяСумма DESC
    "
    
    КОЛОНКА Клиент СТРОКА
    КОЛОНКА КоличествоЗаказов ЧИСЛО
    КОЛОНКА ОбщаяСумма ЧИСЛО
    КОЛОНКА СреднийЧек ЧИСЛО
КОНЕЦ

8.5. Отчёт по регистру (остатки)

ОТЧЁТ СкладскиеОстатки
    ПАРАМЕТР Склад ВЫБОР Склады
    
    ЗАПРОС "
        SELECT 
            Номенклатура,
            SUM(_type * Количество) as Остаток,
            SUM(_type * Сумма) as СуммаОстатка
        FROM Журнал_ОстаткиЗапчастей
        WHERE 1=1
        {{ЕСЛИ Склад}} AND Склад = '{{Склад}}' {{КОНЕЦ}}
        GROUP BY Номенклатура
        HAVING Остаток != 0
    "
    
    КОЛОНКА Номенклатура ВЫБОР Номенклатура
    КОЛОНКА Остаток ЧИСЛО
    КОЛОНКА СуммаОстатка ЧИСЛО
КОНЕЦ

8.6. Важные особенности

  • RLS не применяется автоматически — добавляйте условия вручную
  • Для необязательных параметров используйте {{ЕСЛИ ...}}
  • Строковые параметры нужно заключать в кавычки: '{{Параметр}}'
  • В отчётах можно использовать JOIN, GROUP BY, подзапросы
3535 | 0 | 3535 | 357 | 171 | 38