Scripts
Вкладка Код – содержит программу на языке высокого уровня, которая является частью отчета.
Программа может быть написана на одном из языков .NET:
C#(предпочтительно);VisualBasic.NET(нежелательно).
Область применения вкладки Код довольно обширна - она позволяет:
- выполнить обработку данных, которую невозможно сделать штатными средствами ядра дизайнера;
- управлять печатью страниц отчета и бэндов на странице;
- управлять взаимодействием элементов управления на диалоговых формах;
- управлять формированием динамических объектов
Таблица; - и многое другое.
Чтобы увидеть код отчета, переключитесь на закладку Код в дизайнере:

Язык для вкладки Код настраивается в меню Отчет|Свойства....
Делать это желательно сразу после создания нового отчета, так как при смене языка существующий код очищается.

Общая информация
Вкладка Код в дизайнере содержит только то, что написано вами.
Во вкладке можно
- добавить в главный класс кода свои переменные, методы, свойства;
- создать обработчики событий объектов отчета;
- добавлять новые классы, если это необходимо (класс может быть добавлен как перед главным классом
ReportScript, так и после него.
Во вкладке нельзя
- удалять, переименовывать или изменять область видимости главного класса
ReportScript; - переименовывать пространство имен, в котором находится главный класс.
Порядок действий дизайнера при запуске отчета
- дизайнер добавляет в код список переменных, имена которых совпадают с именами объектов отчета; это делается перед компиляцией кода и позволяет обращаться к объектам отчета по их имени;
- в код добавляются выражения, имеющиеся в отчете, в виде функций;
- выполняется компиляция кода, если главный класс не пустой;
- инициализируются переменные, которые были неявно добавлены в код;
- обработчики событий, определенные в коде, привязываются к объектам отчета;
- запускается отчет.
Обработчики событий
Создание обработчика события

- выбрать интересующее событие и сделать на нем двойной щелчок мышью - дизайнер добавит в код отчета пустой обработчик события:
private void Text2_BeforePrint(object sender, EventArgs e)
{
}
Удаление обработчика события
- выбрать событие в окне
Свойства; - выделить текст имени события и нажамть клавишу
Delete:

События
Чтобы максимально гибко управлять отчетом, каждый объект отчета имеет несколько событий, которым можно назначить обработчик – метод из скрипта.
Например, в обработчике, привязанном к бэнду "Данные", можно выполнять фильтрацию записей, т.е. скрывать или показывать бэнд в зависимости от каких-либо условий.
Рассмотрим процесс формирования отчета и события, которые при этом генерируются. В качестве примера возьмем простой отчет, содержащий одну страницу, один бэнд "Данные" и два объекта "Текст" на бэнде:

В начале отчета вызывается событие StartReport объекта "Отчет". Перед формированием страницы вызывается событие страницы StartPage. Это событие вызывается один раз для каждой страницы шаблона отчета (не путать со страницами готового отчета!). В нашем случае, сколько бы ни было страниц в готовом отчете – событие вызовется один раз, т.к. шаблон отчета состоит из одной страницы. Затем вызывается событие CreatePage, которое происходит как раз в тот момент, когда страница создается в подготовленном отчете.
Далее начинается печать строк бэнда "Данные". Происходит это следующим образом:
- вызывается событие бэнда BeforePrint;
- вызываются события BeforePrint всех объектов, лежащих на бэнде;
- все объекты заполняются данными;
- вызываются события AfterData всех объектов, лежащих на бэнде;
- вызывается событие бэнда BeforeLayout;
- происходит размещение объектов на бэнде (если среди них есть растягиваемые объекты) и подсчет высоты бэнда и его растягивание (если бэнд растягиваемый);
- вызывается событие бэнда AfterLayout;
- если бэнд не помещается на свободном месте страницы, формируется новая страница;
- бэнд и все его объекты выводятся на страницу готового отчета;
- вызывается событие AfterPrint бэнда;
- вызывается событие AfterPrint всех объектов бэнда.
Печать строк бэнда происходит до тех пор, пока есть данные в источнике. После этого формирование отчета в нашем случае завершается и вызываются события FinishPage страницы отчета и наконец – событие FinishReport объекта "Отчет".
Таким образом, используя события разных объектов, можно контролировать практически каждый момент формирования отчета. Ключ к правильному использованию событий – полное понимание процесса печати бэндов, изложенного выше в одиннадцати пунктах.
Так, большинство действий можно выполнить, используя только событие бэнда BeforePrint – любые изменения, внесенные в объект, будут тут же отображены. Но в этом событии невозможно анализировать, на какой странице будет напечатан бэнд, если он растягиваемый – ведь подсчет высоты бэнда будет выполнен в пункте 6. Это можно сделать с помощью событий AfterLayout в пункте 7 или AfterPrint в пункте 10, но в последнем случае бэнд уже будет напечатан и действия над объектами ничего не дадут.
Одним словом, вы должны четко представлять, в какой момент времени вызывается каждое из событий и использовать те, которые соответствуют поставленной задаче.