Програми користувача
Для створення простого звіту досить налаштувати структури звіту, ввести його зовнішній вигляд і визначити поля виведення даних. Якщо в формі звіту застосовуються реквізити користувача або потрібна більш складна настройка, наприклад, завдання власних запитів, фільтрів, сортування, необхідні алгоритми налаштовуються за допомогою програм користувача.
Три види програм мають фіксовані імена: Ініціалізація (Програма ініціалізації звіту), Обробка сортування користувача, (Програма фільтрації і сортування звіту) і Завершення (Програма завершення звіту). Ці програми не вимагають підключення до фрагментів звіту.
Призначені для користувача процедури, задані в програмі під ім'ям Ініціалізація, викликаються перед початком формування звіту. Програма може використовуватися для установки початкових значень полів або опису функцій для виведення додаткових запитів перед формуванням звіту.
Процедури програми Завершення виконуються на стадії завершення звіту. Вони можуть бути використані, наприклад, для виведення будь-яких діагностичних повідомлень за результатами формування звіту.
У програмі з найменуванням Обробка сортування користувача задаються умови додаткової фільтрації даних, вона викликається при формуванні кожного запису тимчасової бази, якщо застосовується сортування користувача.
Всі інші процедури, зокрема, алгоритми розрахунку реквізитів користувача, накопичення підсумків і т.п. задаються в призначеній для користувача програмі з довільним найменуванням. Кількість призначених для користувача програм, заданих в одному шаблоні, не обмежена.
4 Для того щоб алгоритм користувальницької програми виконувався при генерації звіту, вона обов'язково повинна бути підключена до фрагментів типу Детальна рядок, Підсумок або Підніжжя.
При написанні програм використовується спеціальна мова типу Basic (описана в п.2.3).
У програмі Обробка сортування користувача для фільтрації даних використовується спеціальний системний реквізит REC_FILTER - Ідентифікатор відфільтрованої записи. За замовчуванням значення реквізиту дорівнює 0, що означає включення запису в звіт. Для того щоб відфільтрувати запис, йому необхідно присвоїти значення 1. Насправді той же результат отримують, якщо в призначеній для користувача програмі використовувати реквізит _ RepSupress / Ознака невидачі фрагмента на друк. Однак, виділення умов відбору записів по можливості в окрему програму Обробка сортування користувача дозволяє підвищити наочність шаблону і полегшує його настроювання. Для програмного придушення виведення підсумків на друк необхідно в програмі користувача, прив'язаною до підсумкового фрагменту,
встановити _ RepSupress = 1.
Приклад.
Для того, щоб в звіті по картотеці не виводити картки з нульовою кількістю, слід заповнити програму Обробка сортування користувача:
IF SPKrtQt = 0 THEN REC_FILTER = 1 ELSE REC_FILTER = 0
Якщо в даному шаблоні не планується введення власної нестандартної сортування, введіть програму користувача:
IF SPKrtQt = 0 THEN _RepSupress = 1 ELSE _RepSupress = 0
УВАГА! Не забувайте виконати прив'язку програми користувача до детального рядку!
Підключення призначених для користувача програм до фрагментів звіту
Призначені для користувача програми можуть підключатися до фрагментів типу Детальна рядок, Підсумок або Підніжжя.
Доступ до полів фрагментів останніх двох типів має деякі особливості і здійснюється через так звані аліасні поля.
Аліасні поля призначені для виведення у підсумкових фрагментах таких полів, значення яких розраховуються програмою користувача. Причому програма користувача прив'язана до підсумкового фрагменту або підніжжя і викликається під час їх виведення. Аліасні поля є, по суті, псевдонімами, які підставляються у формули замість полів підсумкового фрагмента або підніжжя. Ім'я створюваного аліасного поля формується з імені вихідного поля шляхом додаванням префікса " RA _". Ці поля слід використовувати в програмах для роботи з підсумками або підніжжям.