Files
AWatch-rus/grafana-1c/sql/postgres_views_template.sql
T

63 lines
1.9 KiB
SQL
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- Шаблон для PostgreSQL-базы 1С.
-- ВНИМАНИЕ: замените onec_raw.* на реальные таблицы/представления вашей конфигурации 1С.
CREATE OR REPLACE VIEW onec_kpi_unposted_documents AS
SELECT
'main'::text AS company,
COUNT(*)::double precision AS value
FROM onec_raw.documents d
WHERE d.posted = false;
CREATE OR REPLACE VIEW onec_kpi_sales_today AS
SELECT
'main'::text AS company,
COALESCE(d.currency, 'RUB')::text AS currency,
COALESCE(SUM(d.amount), 0)::double precision AS value
FROM onec_raw.sales_documents d
WHERE d.posted = true
AND d.doc_date::date = CURRENT_DATE
GROUP BY COALESCE(d.currency, 'RUB');
CREATE OR REPLACE VIEW onec_kpi_overdue_receivables AS
SELECT
'main'::text AS company,
CASE
WHEN age_days BETWEEN 1 AND 7 THEN '1-7'
WHEN age_days BETWEEN 8 AND 30 THEN '8-30'
WHEN age_days BETWEEN 31 AND 90 THEN '31-90'
ELSE '90+'
END::text AS aging_bucket,
COALESCE(currency, 'RUB')::text AS currency,
COALESCE(SUM(amount_due), 0)::double precision AS value
FROM (
SELECT
r.currency,
r.amount_due,
GREATEST((CURRENT_DATE - r.due_date::date), 0) AS age_days
FROM onec_raw.receivables r
WHERE r.amount_due > 0
) x
WHERE age_days > 0
GROUP BY
CASE
WHEN age_days BETWEEN 1 AND 7 THEN '1-7'
WHEN age_days BETWEEN 8 AND 30 THEN '8-30'
WHEN age_days BETWEEN 31 AND 90 THEN '31-90'
ELSE '90+'
END,
COALESCE(currency, 'RUB');
CREATE OR REPLACE VIEW onec_kpi_posting_errors_24h AS
SELECT
'main'::text AS company,
COUNT(*)::double precision AS value
FROM onec_raw.posting_errors e
WHERE e.error_at >= NOW() - INTERVAL '24 hours';
CREATE OR REPLACE VIEW onec_kpi_data_freshness AS
SELECT
'main'::text AS company,
'documents'::text AS source,
COALESCE(EXTRACT(EPOCH FROM (NOW() - MAX(d.updated_at))), 999999)::double precision AS value
FROM onec_raw.documents d;