Обчислювані поля в СКД

Буває, і дуже часто, що при розробці звітів недостатньо полів, призначених для набору даних. І слід відобразити поля, які розраховуються на основі існуючих. За допомогою обчислюваних полів можна додати скільки потрібно полів, якщо потрібно скласти складне поле з різних наборів даних, наприклад типу «запит та об'єкт».

Вказувати вираз обчислюваного поля треба мовою системи компонування даних, щоб система могла розрахувати його значення. Мова має обмеження — не можна використовувати поля, що обчислюються. Можна використовувати всі синтаксичні конструкції мови виразів, поля наборів даних, а також функції загальних модулів конфігурації.

поля

Приклад У звіт «Заборгованість Контрагентів» додаємо поле «Пеня». Розраховуємо так: при простроченні менше п'яти днів пеня не стягується, в іншому випадку пеня дорівнює одному відсотку від суми боргу, який прострочений за кожний день прострочення.

Відкриваємо «Cхему компонування даних» (СКД) і на вкладці «Полі, що обчислюються» додаємо поле. Дамо йому ім'я «Шлях до даних» – «Пеня», в колонку вираз введемо такий код:

Вибір Коли КількістьДнівПрострочення >= 5 Тоді СумаПрострочення * 0.01 * КількістьДнівПрострочення Інакше 0 Кінець

Задаємо тип значення – «Число» та формат – «ЧЦ=14; ЧДЦ = 2»

Додаємо поле «Пеня » до списку ресурсів з функцією «Сума() ». Обчислюємо підсумки щодо контрагентів та підсумки в цілому. У результаті виконання звіту в полі «Пеня» за контрагентом відображатиметься сума пені за кожний документ, за яким виконується умова нарахування пені.

Але на практиці при розрахунку пені термін та сума прострочення беруться загалом за контрагентом. Для того, щоб звіт виводив потрібні дані щодо контрагенту, необхідно ускладнити виразагрегування для ресурсу «Пеня»:

Сума(СумаПрострочення) * 0.01 * Максимум(КількістьДнівПрострочення)

Якщо ми вводимо такий вираз до колонки «Вираз» для ресурсу «Пеня», то отримуємо правильний розрахунок за контрагентами.

Це базові основи роботи з обчислюваними полями в СКД.