api.reports | api.parameters. Работа с отчетами и печатными формами

api.reports Работа с отчетом

  • api.reports.getTemplateTitle(templateCode)

    Получение названия отчета.

    Параметр метода:

    • templateCode — код шаблона отчета (печатной формы)

    Возвращаемое значение:

    • Название шаблона отчета (печатной формы).
    • Пустая строка —если шаблона отчета (печатной формы) с указанным кодом не существует
  • api.reports.hasParameter(templateCode, parameter)

    Проверка наличия в шаблоне отчета (печатной формы) параметра с указанным кодом.

    Параметры метода:

    • templateCode — код шаблона отчета (печатной формы)
    • parameter — код параметра отчета (печатной формы)

    Возвращаемое значение:

    • true — если параметр с указанным кодом существует;
    • false — если параметра с указанным кодом не существует, если шаблона отчета (печатной формы) с указанным кодом отчета (печатной формы)
  • api.reports.hasParameters(templateCode, parameter)

    Проверка наличия в шаблоне отчета (печатной формы) параметров с указанным кодом.

    Параметры метода:

    • templateCode — код шаблона отчета (печатной формы)
    • parameters — коды параметров отчета (печатной формы)

    Возвращаемое значение:

    • true — если параметры с указанными кодами существует;
    • false — если параметры с указанными кодами не существуют, если шаблона отчета (печатной формы) с указанным кодом не существует.
  • api.reports.getReportLink(templateCode, subjectUUID, parametersValues)

    api.reports.getReportLink(templateCode, reportTitle, subjectUUID, parametersValues)

    Генерация ссылки на карточку экземпляра отчета (печатной формы), построенного по указанному шаблону.

    Параметр метода:

    • templateCode — код шаблона отчета (печатной формы)
    • reportTitle — название отчета
    • subjectUUID — uuid объекта, относительно которого строится отчет. Значение будет передано в контекстную переменную отчета subject
    • parametersValues — ассоциативный массив: ключ — код атрибута; значение — значение атрибута

    Возвращает строку, содержащую URL-ссылку на карточку указанного отчета (печатной формы).

    Пример. Вызов метода с параметрами всех типов:

    def link = api.reports.getReportLink(templateCode, 'root$101', ['string1':'abracadabra','integer1':987L,'double1':765.23D,'boolean1':false,'date1':new Date()+3,'dateTime1':new Date()-5,'catalogItem1':'urgency$1002','object1':'employee$2225','catalogItems1':['impact$1201','impact$1205','impact$1202'],'objects1':['employee$2241','employee$2227','employee$2223','employee$2211']]))

    Особенности:

    • Для параметров типа integer в конце значения указывается L. Пример 'integer1':987L
    • Для параметров типа double в конце значения указывается D. Пример 'double1':765.23D
    • Если оставить всю строку пустой в скобках [:], то в отчет попадают значения по умолчанию, указанные в скрипте шаблона отчетов
  • api.reports.getReportDataSource(templateCode, subjectUUID, parametersValues, format)

    Генерация отчета (печатной формы) по шаблону в определенном формате и отправка его по почте.

    Параметры метода:

    • templateCode — код шаблона отчета (печатной формы). String.
    • subjectUUID — uuid объекта, относительно которого строится отчет (печатная форма). Для использования переменной subject в отчетах. String.
    • parametersValues — ассоциативный массив: ключ — код атрибута; значение — значение атрибута.
    • format — формат отчета (печатной формы). Допустимые параметры: pdf, xls, csv, htmlZip, docx. String.
  • api.reports.getReportDataSources(templateCode, subjectUUID, parametersValues, formats)

    Генерация отчета (печатной формы) по шаблону в нескольких форматах и отправка его по почте.

    Параметры метода:

    • templateCode — код шаблона отчета (печатной формы). String.
    • subjectUUID — uuid объекта, относительно которого строится отчет (печатная форма). Для использования переменной subject в отчетах. String.
    • parametersValues — ассоциативный массив: ключ — код атрибута; значение — значение атрибута.
    • formats — форматы отчета (печатной формы). Допустимые параметры: pdf, xls, csv, htmlZip, docx. String.

    Пример скрипта см. Настройка отправки отчета (печатной формы) по почте.

  • api.reports.getReportDataSource(reportFileBytes, customScript, subject, parametersValues, formats)

    Генерация DataSource для отчета в определенном формате. В методе происходит построение отчета по шаблону. В дальнейшем может использоваться для отправки сгенерированного отчета письмом.

    Параметры метода:

    • reportFileBytes — данные файла отчета *.prpt. Byte[].
    • customScript — скрипт кастомизации отчета. Object.

    • subject — объект, относительно которого строится отчет (для использования переменной subject в отчетах). Object.
    • parametersValues — ассоциативный список значений параметров <Код параметра, Значение параметра>.
    • formats — формат отчета. Допустимые параметры: pdf, xls, xlsx, csv, htmlZip. String.

    Возвращает DataSource сгенерированного отчета.

  • api.reports.getReportExportedFileUuid(templateCode, subjectUUID, parametersValues, format)

    api.reports.getReportExportedFileUuid(templateCode, reportTitle, subjectUUID, parametersValues, format)

    Экспорт отчета в указанном формате (экспортированный файл доступен всем пользователям).

    Параметры метода:

    • templateCode — код шаблона отчета (печатной формы). String
    • reportTitle — название отчета. String
    • subjectUUID — uuid объекта, относительно которого строится отчет (печатная форма). Для использования переменной subject в отчетах. String
    • parametersValues — ассоциативный массив: ключ — код атрибута; значение — значение атрибута
    • format — формат отчета (печатной формы). Допустимые параметры: pdf, docx, xls, xlsx, csv, htmlZip. String
  • api.reports.getReportExportedFilesUuid(templateCode, subjectUUID, parametersValues, formats)

    api.reports.getReportExportedFilesUuid(templateCode, reportTitle, subjectUUID, parametersValues, formats)

    Экспорт отчета в указанных форматах (экспортированный файл доступен всем пользователям).

    Параметры метода:

    • templateCode — код шаблона отчета (печатной формы). String
    • reportTitle — название отчета. String
    • subjectUUID — uuid объекта, относительно которого строится отчет (печатная форма). Для использования переменной subject в отчетах. String
    • parametersValues — ассоциативный массив: ключ — код атрибута; значение — значение атрибута
    • formats — формат отчета (печатной формы). Допустимые параметры: pdf, docx, xls, xlsx, csv, htmlZip. String
  • api.reports.createAndSendExportedReport(templateCode, reportTitle, subjectUUID, parametersValues, format, emails)

    Построение отчета, экспорт отчета в указанном формате и отправка на указанные email адреса (экспортированный файл доступен всем пользователям).

    Параметры метода:

    • templateCode — код шаблона отчета (печатной формы). String
    • reportTitle — название отчета. String
    • subjectUUID — uuid объекта, относительно которого строится отчет (печатная форма). Для использования переменной subject в отчетах. String
    • parametersValues — ассоциативный массив: ключ — код атрибута; значение — значение атрибута
    • format — формат отчета (печатной формы). Допустимые параметры: pdf, docx, xls, xlsx, csv, htmlZip. String
    • emails — список email адресов, на которые отправится письмо. ArrayList<String>
  • api.reports.createAndSendExportedReport(templateCode, reportTitle, subjectUUID, parametersValues, format, email)

    Построение отчета, экспорт отчета в указанном формате и отправка на указанный email адрес (экспортированный файл доступен всем пользователям).

    Параметры метода:

    • templateCode — код шаблона отчета (печатной формы). String
    • reportTitle — название отчета. String
    • subjectUUID — uuid объекта, относительно которого строится отчет (печатная форма). Для использования переменной subject в отчетах. String
    • parametersValues — ассоциативный массив: ключ — код атрибута; значение — значение атрибута
    • format — формат отчета (печатной формы). Допустимые параметры: pdf, docx, xls, xlsx, csv, htmlZip. String
    • email — email адрес, на который отправится письмо. String.

    Пример:

    api.reports.createAndSendExportedReport('reportCode', 'reportTitle', 'root$301', [:], 'pdf', ['user@test.com'])

api.reports.table. Формирование таблицы отчета /печатной формы

  • api.reports.table()

    Формирование таблицы отчета и получение данных, альтернатива SQL запросу. После вызова метод таблица наполняется данными, например, через Db Api. Получение строк таблицы, значения столбца с определенным кодом в строке, изменение или добавление вычисленного в скрипте значения в таблицу отчета.

    Пример. Вычисление общего количества запросов и установка в каждую строку процентов от общего (в строке таблицы отчета выводится группа запросов, servicecalls — количество запросов в этой группе):

    def all = table.rows.collect {row -> row.servicecalls}.sum();
    table.rows.each() { row ->
    row.percents = String.format("%.2f", row.servicecalls * 100.0 / all) + '%';
    }
    return table;

getFunctions. Кастомизация шаблона отчета

  • getFunctions()

    Определение функции для расширения набора стандартных функций Pentaho Report Designer. Функции, определенные в скрипте, должны быть вынесены в шаблон отчета PRD, см. Использование функций, определенных в скрипте отчета.

    Доступные переменные:

    • subject (объект, на карточке которого строится отчет)
    • user (текущий пользователь)

    Пример 1:

    * totalFunction — анализирует все строки отчета
    
    def getFunctions()
    def usr = user?.login
    return [ api.reports.totalFunction('usr', { rows -> usr }) ]
    }

    Пример 2:

    * groupFunction — отдельно анализирует каждую группу
    def getFunctions() {
    return [ api.reports.groupFunction('usr', { rows -> api.tx.call() { user?.login } }) ]
    }

api.parameters Параметры отчета /печатной формы

Методы для определения параметров отчета /печатной формы, которые будут указываться при построении отчета. Для каждого типа параметров используется соответствующий метод.

  • api.parameters.get"parameter type"(code, title, defaultValue, required)

    Определение параметров типа "Строка", "Целое число", "Дробное число".

    Параметры метода:

    • code — код параметра;
    • title — название параметра, которое будет выводиться на форму добавления отчета и форму редактирования параметров отчета.

      Если название null, то параметр на форму не выводится, но доступен в отчете;

    • defaultValue — значение по умолчанию для данного параметра;
    • required — обязательность заполнения параметра отчета:

      • false (по умолчанию) или пусто— параметр не обязателен для заполнения;
      • true — параметр обязателен для заполнения и отмечен на форме звездочкой

    Пример. Определение параметров "Строка", "Целое число", "Дробное число":

    def getParameters() {
    return 
    [api.parameters.getString("string1", "Строка", "строка по умолчанию"),
    api.parameters.getInteger("integer1", "Целое число", 123),
    api.parameters.getDouble("double1", "Дробное число", 123.45, true),
    ] as List;
     }
  • api.parameters.getBoolean(code, title, defaultValue)

    Определение параметра типа "Логический".

    Параметры метода:

    • code — код параметра;
    • title — название параметра, которое будет выводиться на форму добавления отчета и форму редактирования параметров отчета.

      Если название null, то параметр на форму не выводится, но доступен в отчете;

    • defaultValue — значение по умолчанию для данного параметра.

    Пример. Определение параметра "Логический":

    api.parameters.getBoolean("boolean1", "Логический", true)

  • api.parameters.getDate(code, title, defaultValue, required)

    api.parameters.getDateTime(code, title, defaultValue, required)

    api.parameters.getDateTime(code, title, defaultValue, ofFillingTime, required)

    Определение параметров типа "Дата", "Дата/время". Время указывается в часовом поясе пользователя. Если пользовательский часовой пояс [не указано], то берется часовой пояс сервера, на котором установлено приложение.

    Параметры метода:

    • code — код параметра;
    • title — название параметра, которое будет выводиться на форму добавления отчета и форму редактирования параметров отчета. Если название null, то параметр на форму не выводится, но доступен в отчете;
    • defaultValue — значение по умолчанию для данного параметра;
    • ofFillingTime — способ заполнения времени:

      • если этот аргумент не указан, то при заполнении параметра типа "Дата и время" из календаря подставляется указанная дата и текущее время;
      • значение "startOfDay", подставляется указанная дата и время "00:00";
      • значение "endOfDay", подставляется указанная дата и время "23:59".

      Параметр ofFillingTime передается в отчет только в случае задания или изменения даты пользователем вручную. Если используется значение по умолчанию, то значение не подставится.

    • required — обязательность заполнения параметра отчета:

      • false (по умолчанию) или пусто — параметр не обязателен для заполнения;
      • true — параметр обязателен для заполнения и отмечен на форме звездочкой

    Пример. Определение параметров "Дата", "Дата/время":

    def getParameters() {
    return 
    [api.parameters.getDate("date1", "Дата", new Date(), true),
    api.parameters.getDateTime("dateTime1", "Дата-время", new Date()),
    api.parameters.getDateTime("dateFrom","Дата с", null, "startOfDay"),
    ] as List;
     }
  • api.parameters.getDate("beginDate", BEGIN_DATE)

    api.parameters.getDate("endDate", END_DATE)

    Определение параметра типа "Временной интервал" (Даты с, по).

    Пример. Определение параметров "Временной интервал":

    def getParameters()
    {
    //ПАРАМЕТРЫ--------------------------------
    BEGIN_DATE = 'С' // Дата начала периода
    END_DATE = 'По' // Дата конца периода
    return 
    [api.parameters.getDate("beginDate", BEGIN_DATE),
    api.parameters.getDate("endDate", END_DATE) 
    ] as List;
    };
  • api.parameters.getCatalogItem(code, title, catalogCode, defaultValue, required) Определение параметра типа "Элемент справочника".

    Параметры метода:

    • Обязательные:

      • code — код параметра;
      • title — название параметра, которое будет выводиться на форму добавления отчета и форму редактирования параметров отчета.

        Если название null, то параметр на форму не выводится, но доступен в отчете;

      • catalogCode — код справочника, элементы которого можно будет выбрать в параметре;
    • Дополнительные:

      • defaultValue — значение по умолчанию для данного параметра. UUID;
      • required — обязательность заполнения параметра отчета:

        • false (по умолчанию) или пусто — параметр не обязателен для заполнения;
        • true — параметр обязателен для заполнения и отмечен на форме звездочкой

    Пример. Определение параметра "Элемент справочника":

    api.parameters.getCatalogItem("catalogItem1", "Справочник", "currency", "currency\$1303", true)

  • api.parameters.getCatalogItems(code, title, catalogCode, required)

    api.parameters.getCatalogItems(code, title, catalogCode, defaultValue, required)

    Определение параметра типа "Набор элементов справочника" (1).

    Параметры метода:

    • Обязательные:

      • code — код параметра;
      • title — название параметра, которое будет выводиться на форму добавления отчета и форму редактирования параметров отчета.

        Если название null, то параметр на форму не выводится, но доступен в отчете;

      • catalogCode — код справочника, элементы которого можно будет выбрать в параметре;
    • Дополнительные:

      • defaultValue — значение по умолчанию для данного параметра, может быть null;
      • required — обязательность заполнения параметра отчета:

        • false (по умолчанию) или пусто — параметр не обязателен для заполнения;
        • true — параметр обязателен для заполнения и отмечен на форме звездочкой
  • api.parameters.getCatalogItemsByCodes(code, title, catalogCode, required)

    api.parameters.getCatalogItemsByCodes(code, title, catalogCode, defaultValue, required)

    Определение параметра типа "Набор элементов справочника" (2).

    Параметры метода:

    • Обязательные:

      • code — код параметра;
      • title — название параметра, которое будет выводиться на форму добавления отчета и форму редактирования параметров отчета.

        Если название null, то параметр на форму не выводится, но доступен в отчете;

      • catalogCode — код справочника, элементы которого можно будет выбрать в параметре;
    • Дополнительные:

      • defaultValue — значение по умолчанию для данного параметра, может быть null;
      • required — обязательность заполнения параметра отчета:

        • false (по умолчанию) или пусто — параметр не обязателен для заполнения;
        • true — параметр обязателен для заполнения и отмечен на форме звездочкой
  • api.parameters.getObject(code, title, metaClass, defaultValue, required)

    api.parameters.getObject(code, title, metaClass, defaultValue, required)

    api.parameters.getObject(code, title, metaClass, defaultValue, key1: value1, ..., required)

    Определение параметра типа "Объект".

    Параметры метода:

    • code — код параметра;
    • title — название параметра, которое будет выводиться на форму добавления отчета и форму редактирования параметров отчета. Если название null, то параметр на форму не выводится, но доступен в отчете;
    • metaClass — код метакласса, объект которого можно будет выбрать в параметре;
    • defaultValue — значение по умолчанию для данного параметра;
    • [key1: value1, ...] — определяет возможность выбора объектов с помощью формы выбора объекта и /или представления для редактирования:

      • key — "presentationCode" (представление для редактирования);
      • value — "0" (дерево выбора), "1" (дерево выбора с папками), "2" (список выбора), "3" (список выбора с папками)

      И/ ИЛИ

      • key — "attrGroupCode" (форма выбора объекта);
      • value — uuid группы атрибутов, например, "302b563a-47b3-4b02-a50a-4154676b4edf")

      Для получения uuid группы атрибутов рекомендуется использовать скриптовый модуль, возвращающий uuid группы по ее названию.

      Текст модуля:

      import ru.naumen.metainfo.shared.ClassFqn
      def getAttrGroupCodeByTitle(ClassFqn fqn, String title)
      {
      return api.metainfo.getMetaClass(fqn).attributeGroups.find { it.title==title }?.code
      }

      Вызов функции модуля:

      modules.<Код модуля>.getAttrGroupCodeByTitle(fqn, title)

      Параметры "fqn" и "title" необходимо определить перед вызовом модуля: "fqn" — код метакласса, в котором необходимо найти группу (строка), "title" — название группы атрибутов (строка);

    • required — обязательность заполнения параметра отчета:

      • false (по умолчанию) или пусто — параметр не обязателен для заполнения;
      • true — параметр обязателен для заполнения и отмечен на форме звездочкой

    Пример 1. Определение параметра "Объект":

    api.parameters.getObject("object1", "Сотрудник", "employee", "employee\$54801", true)

    Пример 2. Выбор объекта с помощью представления для редактирования:

    api.parameters.getObject('object1', 'Сотрудник', 'employee', 'employee\$54801', ['presentationCode':'1'])

    Пример 3. Выбор объекта с помощью формы выбора объекта:

    api.parameters.getObject('object1', 'Сотрудник', 'employee', 'employee\$54801', ['attrGroupCode':'302b563a-47b3-4b02-a50a-4154676b4edf'])

    Пример 4. Выбор объекта с помощью формы выбора объекта и представления для редактирования:

    api.parameters.getObject('object1', 'Сотрудник', 'employee', 'employee\$54801', ['presentationCode':'0', 'attrGroupCode':'302b563a-47b3-4b02-a50a-4154676b4edf'])

  • api.parameters.getObjects(code, title, metaClass, required)

    api.parameters.getObjects(code, title, metaClass, defaultValue, required)

    api.parameters.getObjects(code, title, metaClass, defaultValue, key1: value1, ..., required)

    Определение параметра типа "Набор объектов".

    Параметры метода:

    • code — код параметра;
    • title — название параметра. Указанное название будет выводиться на форму добавления отчета и форму редактирования параметров отчета.

      Если название null, то параметр не выводится на форму, но будет доступен в отчете;

    • metaClass — код метакласса, объекты которого можно будет выбрать в параметре;
    • defaultValue — список значений по умолчанию для данного параметра, может быть null;
    • [key1: value1, ...] — определяет возможность выбора объектов с помощью формы выбора объекта и /или представления для редактирования:

      ['presentationCode':'0'])

      • key — "presentationCode" (представление для редактирования);
      • value — "0" и "2" (дерево выбора), "1" (дерево выбора с папками), "3" (список выбора), "4" (список выбора с папками)

      И/ ИЛИ

      • key — "attrGroupCode" (форма выбора объекта);
      • value — uuid группы атрибутов, например, "302b563a-47b3-4b02-a50a-4154676b4edf")

      Для получения uuid группы атрибутов рекомендуется использовать скриптовый модуль, возвращающий uuid группы по ее названию, см. описание метода api.parameters.getObject

    • required — обязательность заполнения параметра отчета:

      • false (по умолчанию) или пусто — параметр не обязателен для заполнения;
      • true — параметр обязателен для заполнения и отмечен на форме звездочкой

    Пример 1:

    api.parameters.getObjects("tekTeam", "Кем решен", "team", ["team\$1901"]), true]

    Пример 2: Выбор объектов с помощью представления для редактирования:

    api.parameters.getObjects('object1', 'Сотрудник', 'employee', ['employee\$54801'], ['presentationCode':'0'])

    Пример 3: Выбор объектов с помощью формы выбора объекта:

    api.parameters.getObjects('object1', 'Сотрудник', 'employee', ['employee\$54801'], ['attrGroupCode':'302b563a-47b3-4b02-a50a-4154676b4edf'])

    Пример 4: Выбор объектов с помощью формы выбора объекта и представления для редактирования

    api.parameters.getObjects('object1', 'Сотрудник', 'employee', ['employee\$54801'], ['presentationCode':'0', 'attrGroupCode':'302b563a-47b3-4b02-a50a-4154676b4edf'])

  • api.parameters.getCaseList(code, title, metaClass)

    api.parameters.getCaseList(code, title, metaClass, defaultValue)

    api.parameters.getCaseList(code, title, metaClass, defaultValue, required)

    Определение параметра типа "Набор типов класса".

    Параметры метода:

    • code — код параметра
    • title — название параметра, которое будет выводиться на форму добавления отчета и форму редактирования параметров отчета.

      Если название null, то параметр не выводится на форму, но будет доступен в отчете;

    • metaClass — код метакласса, типы которого можно будет выбрать в параметре;
    • defaultValue — список значений по умолчанию для данного параметра, может быть null;
    • required — обязательность заполнения параметра отчета:

      • false (по умолчанию) — параметр не обязателен для заполнения;
      • true — параметр обязателен для заполнения и отмечен на форме звездочкой

    Пример:

    api.parameters.getCaseList('caseList', 'Набор типов класса', 'ou', 'ou$geneal', false)

  • api.parameters.getState(code, title, metaClass)

    api.parameters.getState(code, title, metaClass, defaultValue)

    Определение параметра типа "Статус".

    Параметры метода:

    • code — код параметра;
    • title — название параметра, которое будет выводиться на форму добавления отчета и форму редактирования параметров отчета.

      Если название null, то параметр не выводится на форму, но будет доступен в отчете;

    • metaClass — код метакласса, статусы которого можно будет выбрать в параметре;
    • defaultValue — список значений по умолчанию для данного параметра, может быть null
  • api.parameters.getStates(code, title, metaClass)

    api.parameters.getStates(code, title, metaClass, defaultValue)

    Определение параметра типа "Набор статусов".

    Параметры метода:

    • code — код параметра;
    • title — название параметра, которое будет выводится на форму добавления отчета и форму редактирования параметров отчета.

      Если название null, то параметр не выводится на форму, но будет доступен в отчете;

    • metaClass — код метакласса, статусы которого можно будет выбрать в параметре;
    • defaultValue — список значений по умолчанию для данного параметра, может быть null

Изменение заполненных параметров до построения отчета

  • getActualParameters(def parameters)

    Изменение параметров, заполненных в getParameters до построения отчета.

    В методе доступны переменные:

    • parameters — карта всех параметров отчета после их заполнения пользователем, у которой ключ — код параметра, значение — значение, которое было заполнено при построении отчета.
    • user — пользователь, под которым строится отчет. Если отчет строится суперпользователем, то = null.
    • subject — объект на карточке которого строится отчет.

    В случае если параметр не имел значения по умолчанию или не заполнялся на форме и является пустым, то заполнить его в скрипте не получится.

    Заполнение отсутствующих в getParameters параметров не поддерживается

    Возвращает изначальный parameters или новую карту.

    def getParameters()
    {
    return [ api.parameters.getObjects('ous', 'Отделы', 'ou', ['ou$19901']) ]
    }
    def getActualParameters(def parameters)
    {
    parameters.ous += utils.findFirst('ou', [:])
    return parameters
    }
    

Фильтрация параметров отчета

  • .setFiltrationScript(...) — метод для фильтрации выпадающего списка элементов параметров отчета. Метод может задаваться для указанного параметра отчета.

    Внутри метода помещается скрипт для фильтрации параметров. Также внутри скрипта возможно использовать механизм зависимости параметров друг от друга:

    def ATTRS_FOR_UPDATE_ON_FORMS = ['t1'];
    if (subject == null)
    {
    return ATTRS_FOR_UPDATE_ON_FORMS;
    }

    Примеры использования скрипта фильтрации для параметров отчета:

    Copy
    def getParameters() {
       return [ 
         api.parameters.getObject("t1", "Команда", "team")
           .setFiltrationScript({
              return ['team$3601'];
          }),

         api.parameters.getObjects("t2", "Отдел", "ou", ['ou$4202'], ['presentationCode':'4'])
            .setFiltrationScript({
              def ATTRS_FOR_UPDATE_ON_FORMS = ['t1']; 
              if (subject == null)
              { 
                  return ATTRS_FOR_UPDATE_ON_FORMS; 
              }
              return ['ou$4201'];
          }),

         api.parameters.getObject("t3", "Отдел", "ou", 'ou$4202', ['presentationCode':'1'])
            .setFiltrationScript({
              def ATTRS_FOR_UPDATE_ON_FORMS = ['t1']; 
              if (subject == null)
              { 
                  return ATTRS_FOR_UPDATE_ON_FORMS; 
              }
              return ['ou$4201'];
          }),

         api.parameters.getObjects("t4", "Команда", "team", ['team$3601'], ['presentationCode':'1'])
            .setFiltrationScript({
              return ['team$3601'];
          }),
         
         api.parameters.getCatalogItems('t5', 'Справочник', 'priority', ['priority$4501'])
                 .setFiltrationScript({
              return ['priority$4501'];
          }),

         api.parameters.getCatalogItemByCode('t6', 'Справочник', 'priority', 'sss1')
                 .setFiltrationScript({
              return ['priority$4501'];
          }),
         
         api.parameters.getCaseList('t7', 'Набор типов класса', 'ou', ['ou$ou2'])
            .setFiltrationScript({
              return ['ou$ou1'];
          }),
         
         api.parameters.getStates('t8', 'Статус', 'serviceCall', ['registered'])
            .setFiltrationScript({
              return ['registered'];
          }),

         api.parameters.getState('t9', 'Статус', 'serviceCall', 'registered')
            .setFiltrationScript({
              return ['registered'];
          }),
         
         api.parameters.getDate('t10', 'Дата', new Date()-2)
            .setFiltrationScript({
              if (!subject)
              {
                 return [];
              }
              def filter = api.date.filter();
              return [(filter.after(new Date())) : 'Значением может быть только дата в будущем'];
          })
       ] as List;
    }

    Использование зависимости параметров друг от друга (контекстная переменная params):

    Copy
    def getParameters() {
       return [ 
         api.parameters.getObject("serviceParam", "Услуга", "slmService"),
         
         api.parameters.getObjects("t3", "Заявки", "serviceCall")
            .setFiltrationScript({
              def ATTRS_FOR_UPDATE_ON_FORMS = ['serviceParam']; 
              if (subject == null)
              { 
                  return ATTRS_FOR_UPDATE_ON_FORMS; 
              }
              return utils.find('serviceCall',['service': params.serviceParam]);
          })
       ] as List;
    }

Обработка построенного отчета

  • Вывод произвольных значений в отчет (печатную форму):

    table.addValue('number1', 123456);
    table.addValue('text1', 'iText');
  • table.clearData()

    Очистка таблицы отчета для полной замены данных в отчете groovy-скриптом.

  • Настройка возможности отправлять копию отчета по почте при построении отчета в списке отчетов (скрипт добавляется в шаблон отчета):

    def getSettings() {
    return [ 'possibleToSend' : true ]
    }