Если возвращаемое значение имеет тип Time, в качестве операнда можно использовать Datetime. Если возвращаемое значение имеет тип Datetime, в качестве операнда можно использовать Time, при этом в качестве даты используется 1 января 0001 года.
Арифметические операторы могут использоваться только с числами. Если возвращаемое значение число, автоматически конвертация типов не производится. Для конвертации типов в этом случае следует явно использовать функции конвертации (см. табл. 2.2.3).
Учитывать типы данных необходимо также, если поля или константы используются в качестве аргументов функций. Список функций с указанием типов аргументов приведен в табл. 2.2.3.
2.2.8. Функции RPTwin
Функции RPTwin позволяют производить сложные вычисления и обработку данных отчета. Так же как и операторы, функции возвращают значение определенного типа. Для внесения функции в формулу можно дважды щелкнуть по функции в списке Functions диалога Formula Editor.
Агрегативные функции позволяют производить вычисления по нескольким строкам отчета. Некоторые функции (Sum, Avg, Min, Max, Count) выполняются контекстно, т. е. возвращают результат в зависимости от той секции отчета, в которой находятся. Например, если функция Sum(number) находится в секции Group Footer, она возвращает сумму, вычисленную по группе, если в Page Footer - то по странице. Другие агрегативные функции (GroupAvg GroupSum, GroupMin, GroupMax, GroupCount, ReportAvg, ReportCount, ReportMax, ReportMin, ReportSum) возвращают значение независимо от их расположения в отчете. Даже если функция ReportSum (number) находится в секции Group Footer, она возвращает сумму, вычисленную по всему отчету. Агрегативные функции группы, такие, как GroupAvg, вычисляют значения независимо от того, в какой секции текущей группы они расположены. Если такая функция располагается, например, в секции Report Footer, она вычисляет агрегативное значение по всему отчету.
RPTwin является двухпроходным (Two-Pass, другой термин - Look-Ahead) генератором отчетов. Это означает, что отчет выполняется в два этапа. На первом этапе просматриваются все данные и вычисляются значения функций. На втором этапе происходит непосредственно процесс печати или вывода на экран в режиме предварительного просмотра. Поэтому значения агрегативных функций Sum, Avg, Min, Max, Count будут вычисляться одинаково, независимо от того, расположены ли они в секции Footer или Header.
Полный список функций RPTwin приведен в табл. 2.2.3.
Таблица 2.2.3. Функции RPTwin
2.2.9. Использование формул RPTwin
Рассмотрим построение отчета RPTwin по модели процессов, изображенной на рис. 2.2.11. Модель описывает процесс изготовления изделия и имеет три уровня декомпозиции. В ней описаны следующие свойства, определяемые пользователем (UDP):
уровень декомпозиции (Integer List, допустимые значения в модели - 0,1,2);
потребление электроэнергии, кВт-ч (Real Number);
потребление воды, т (Real Number).
Контекстной работе ("Изготовление изделия") присвоено значение UDP "Уровень декомпозиции", равное 0, работам на диаграмме декомпозиции контекста -1 и работам на диаграммах декомпозиции нижнего уровня -2. Значения свойств "Потребление электроэнергии, кВт-ч" и "Потребление воды, т" присвоены только работам на диаграммах декомпозиции нижнего уровня.
Создание UDP в BPwin и присвоение значений работам подробно описано в 1.3.
Рис. 2.2.11. Дерево узлов модели процессов
Непосредственно в среде BPwin невозможно оценить количество ресурсов (электроэнергия и вода), необходимых для производства изделия, поскольку невозможно производить арифметические операции с UDP. В отчете Diagram Object Report, фрагмент которого приведен на рис. 2.2.12, можно получить только список работ с указанием их UDP, но невозможно отфильтровать работы и произвести расчеты суммарных значений, необходимых для производства изделия ресурсов.
Рис. 2.2.12. Отчет по UDP (Diagram Object Report), полученный средствами BPwin
Создать отчет со сложной обработкой данных возможно только средствами RPTwin. Для создания такого отчета необходимо в диалоге настройки отчета Diagram Object Report в качестве формата отчета указать RPTwin, после чего щелкнуть по кнопке Report. В появившемся диалоге сохранения файла следует указать имя файла данных отчета (.LWD). После этого автоматически запускается RPTwin и появляется диалог New Report. В диалоге New Report в качестве типа создаваемого отчета следует указать Columnar. Создается шаблон отчета, включающий в себя все колонки файла набора данных отчета (рис. 2.2.13).