При побудові звітів є ряд завдань, які при вирішенні «в лоб» часто призводять до написання важких запитів або запитів в циклі або ручному висновку даних в таблицю.
Ось приклади таких завдань:
- Отримання наростаючого обсягу продажів по місяцях, наприклад, для виведення у вигляді діаграми
- Розрахунок різниці продажів поточного і попереднього періоду - для всіх рядків звіту
- Порівняння обсягу продажів кожного менеджера з еталонним значенням, яке обчислюється в ході формування цього звіту
- Отримання наростаючого підсумку по горизонталі і вертикалі в крос-таблицях
І всі ці завдання вирішуються елементарно за допомогою функцій СКД - буквально за пару хвилин. Без запитів в циклі і кривого коду.
У цій статті розглянемо використання деяких функцій СКД на конкретних прикладах.
Подібні завдання часто зустрічаються на практиці. Найбільш типовий приклад - в звіт повинні виводитися продажу за періодами, необхідно знати не тільки суму продажів поточного місяця, але і наростаючим підсумком з початку формування звіту.
Насправді це завдання можна вирішити і за допомогою запиту (без функцій СКД), але є 2 проблеми:
- Сам по собі подібний запит буде складним - піде час на його розробку і налагодження.
- Такий запит буде серйозно навантажувати систему - і чим більше даних, тим повільніше він буде працювати.
За допомогою функцій СКД це завдання вирішується одним рядком коду, і звіт буде працювати максимально швидко, дивимося:
Такий функціонал може бути корисний, коли необхідно відстежувати тренд певного ресурсу - відбувається зменшення або збільшення щодо попереднього стану, плюс повинна розраховуватися дельта.
Наведемо кілька прикладів, коли це може бути корисно:
- Аналіз дебіторської заборгованості по днях - обчислюємо тренд і абсолютне збільшення або зменшення заборгованості щодо минулого періоду
- Аналіз курсів валют і оцінка прибутку або збитків від курсової різниці - потрібно отримати дельту між поточним і попереднім курсом і помножити на залишок грошових коштів у валюті.
Такі завдання також занадто багато роботи вирішити за допомогою запиту, а в СКД це робиться одним рядком:
Приклад, коли цей функціонал може бути корисний:
- В системі ведеться облік продажів менеджерами
- Керівник відділу веде особисті продажу поряд з менеджерами
- Потрібно вивести звіт по продажах в розрізі менеджерів
- У звіт також необхідно виводити дельту щодо обсягу продажів керівника відділу.
Тобто мова про те, що потрібно порівняти кожен рядок продажів менеджера з продажами керівника відділу.
А ці дані можуть, наприклад, використовуватися для нарахування премії.
І знову ж таки за допомогою СКД це завдання вирішується в один рядок:
У звіті виду крос-таблиця наростаючий підсумок може вважатися як вертикально (по рядках), так і горизонтально (по стовпцях).
Ми покажемо, як за допомогою одного параметра СКД керувати напрямком розрахунку підсумків:
Припустимо, необхідно розробити звіт, який виводить інформацію про документах. При цьому в окремій клітинці повинна міститися таблична частина документа.
Щоб вирішити це завдання за допомогою звичайного запиту, потрібно писати ручної висновок результату в табличний документ.
У СКД це завдання знову вирішується однією функцією:
Ця тема детально розкрита в курсі:
Підтримка - 2 місяці. Обсяг курсу - 34 навчальних години.