Настройка печатной формы "Заказ-наряд"

Настройка печатной формы предоставляет возможность выводить на печать бухгалтерские документы в установленном виде (счета-фактуры, накладные и т.д.). Печатные формы также могут использоваться для сохранения и отправки на печать договоров, заявок на обслуживание, согласований, заявлений.

В данном разделе приводится пример настройки печатной формы "Заказ-наряд", общее описание отчетов и печатных форм см. Настройка отчетов и печатных форм.

Описание процесса использования печатной формы

Описание процесса использования печатной формы позволяет сформировать набор данных для отображения на печатной форме.

Печатная форма "Заказ-наряд" используется в рамках следующего процесса распределения заказ-нарядов:

  • Сотрудники службы поддержки регистрируют запросы типа "Запрос на обслуживание" или "Инцидент". Запрос может быть связан с одним или несколькими IT-активами.

  • Сотрудники службы поддержки могут создавать отдельные задачи для устранения крупного инцидента или распределения работ в рамках запроса на обслуживание.

    Задачи создаются в привязке к запросам типов "Запрос на обслуживание" и "Инцидент".

  • Сотрудники службы поддержки могут распечатывать заказ-наряды на выполнение работ по запросу и связанным задачам из карточки запроса.

    В печатной форме отображаются данные конкретного запроса, для которого построен заказ-наряд, а также данные связанных задач и IT-активов.

Для реализации описанного процесса в системе должны быть выполнены следующие настройки классов и типов:

  1. В системном классе "Запрос" (serviceCall) добавьте типы: "Запрос на обслуживание" и "Инцидент", см. Настройка классов и типов объектов.
  2. В системном классе "Запрос" (serviceCall) добавьте пользовательские атрибуты:

    • "Тема" (shortDescr) типа "Строка";
    • "Задачи" (tasks) типа "Набор ссылок на бизнес-объекты";
    • "Связанные IT-активы" (KEs) типа "Набор ссылок на бизнес-объекты".
  3. Добавьте пользовательский класс "IT-актив" (objectBase).
  4. Добавьте пользовательский класс "Задача" (task).
  5. В пользовательском классе "Задача" (task) добавьте пользовательские атрибуты:

    • "Номер" (objectNumber) типа "Целое число";
    • "Описание" (description) типа "Текст в формате RTF";
    • "Дедлайн" (deadline) типа "Дата/время".

Разработка макета печатной формы

Создайте макет таблицы печатной формы. В таблице печатной формы должны отображаться следующие данные:

  • данные запроса, по которому построен заказ-наряд;
  • данные о задачах, созданных в рамках данного запроса;
  • данные о связанных IT-активах;
  • название компании.

На рисунке приведен макет печатной формы "Заказ-наряд".

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

В таблице печатной формы должны отображаться следующие атрибуты:

  • Атрибуты объекта класса "Запрос" (serviceCall) (информация о запросе, по которому построен заказ-наряд):

    • "Название" (title);
    • "Тема" (shortDescr);
    • "Контрагент" (client);
    • "Тип" (metaClass);
    • "Услуга" (service);
    • "Статус" (state);
    • "Ответственный" (responsible);
    • "Регламентное время решения" (timeAllowanceTimer);
    • "Контактное лицо" (clientName);
    • "Контактный телефон" (clientPhone);
    • "Контактный e-mail" (clientEmail);
    • "Описание" (descriptionInRTF);
    • "Приоритет" (priority).
  • Атрибуты объекта класса "Задача" (task), связанного с объектами класса "Запрос" (serviceCall).

    • "Номер" (objectNumber);
    • "Описание" (description);
    • "Дедлайн" (deadline);
    • "Ответственный" (responsible);
    • "Связанные заявки" (serviceCalls) типа "Прямая ссылка" в классе "IT-актив" (objectBase).
    • "Связанные IT-активы" (KEs) типа "Обратная ссылка" в классе "Запрос" (serviceCall).

    Атрибуты связи задачи и запроса:

    • "В рамках заявки" (serviceCall) типа "Прямая ссылка" в классе "Задача" (task).
    • "Задачи" (tasks) типа "Обратная ссылка" в классе "Запрос" (serviceCall).
  • Атрибут объекта класса "IT-актив" (objectBase), связанного с объектами класса "Запрос" (serviceCall):

    • "Название" (title)

    Атрибуты связи IT-актива и запроса:

    • "Связанные заявки" (serviceCalls) типа "Прямая ссылка" в классе "IT-актив" (objectBase).
    • "Связанные IT-активы" (KEs) типа "Обратная ссылка" в классе "Запрос" (serviceCall).
  • Атрибут объекта класса "Компания" (root):

    • "Название" (title).

Настройка шаблона печатной формы в Pentaho Report Designer

Шаблон PRD предназначен для:

  • извлечения данных для печатной формы из базы данных с помощью SQL-запроса и их обработки;
  • создания макета печатной формы.

В разделе описываются основные этапы построения шаблона PRD и дополнительные настройки шаблона PRD для печатной формы.

Для получения файла с шаблоном PRD обратитесь в службу поддержки компании NAUMEN.

Шаблон PRD строится с привлечением внешнего конструктора Pentaho Report Designer (PRD), полное описание настройки шаблона PRD см. Настройка шаблона для отчета или печатной формы в Pentaho Report Designer.

Настройка шаблона PRD для печатной формы состоит из следующих этапов:

  1. Создание шаблона PRD, см. Добавление шаблона PRD. Настройка структуры шаблона PRD.
  2. Составление SQL-запроса, см. Составление SQL-запроса для извлечения данных.

    Список атрибутов, значения которых должны быть извлечены SQL-запросом, представлен в разделе .

    Заказ-наряд должен строится для запроса, на карточке которого он расположен. Для этого в SQL-запросе необходимо использовать системный параметр subject_id: значение колонки id текущего объекта в таблице базы данных, т.е. в subject_table.

    Текст SQL-запроса. Печатная форма "Заказ-наряд":

    Copy
    SELECT
    servicecall.*,
    task.deadline,
    task.title AS taskTitle,
    task.id AS task_id,
    task.description AS taskDesc,
    COALESCE(tbl_employee.title||'/ ', '')||COALESCE(tbl_team.title, '') AS taskResponsible,
    task.responsibleemployee_id AS tasktaskresponsibleemployee_id,
    task.responsibleteam_id
    FROM
    (SELECT
    sCall.id AS id,
    tbl_root.title AS titleRoot,
    sCall.title,
    COALESCE(tbl_employee.title||'/ ', '')||COALESCE(tbl_team.title, '') AS responsible,
    sCall.responsibleemployee_id,
    sCall.responsibleteam_id,
    sCall.case_id,
    metainfo.title AS caseTitle,
    sCall.number_,
    sCall.shortdescr,
    metainfoSt.title AS state,
    COALESCE(empClient.title||'/ ', '')||COALESCE(ouClient.title, '')||COALESCE('/ '||teamClient.title, '') AS Client,
    sCall.clientemployee_id,
    sCall.clientou_id,
    sCall.clientteam_id,
    sCall.client_email,
    sCall.client_name,
    sCall.client_phone,
    sCall.descriptionrtf,
    sCall.timeallowancetimerd,
    '' AS timeAllowanceTimer,
    '' AS fDate,
    slm.title AS titleSlm,
    sCall.service_id,
    tbl_priority.priority_level AS priority,
    (SELECT string_agg(tbl_objectbase.title, '/' )
    FROM tbl_objectbase INNER JOIN tbl_objectba_servicec ON tbl_objectbase.id = tbl_objectba_servicec.objectbase_id
    WHERE tbl_objectba_servicec.servicecalls_id = sCall.id
    GROUP BY    tbl_objectba_servicec.servicecalls_id
    ) AS titleCMDB
    FROM
    tbl_servicecall AS sCall
    INNER JOIN tbl_sys_metainfo_titles AS metainfo ON (metainfo.kase= sCall.case_id AND metainfo.clazz='serviceCall')
    LEFT JOIN tbl_sys_metainfo_states AS metainfoSt  ON (metainfoSt.code=sCall.state AND metainfoSt .kase=sCall.case_id)
    LEFT JOIN tbl_slmservice AS slm ON slm.id = sCall.service_id
    LEFT JOIN tbl_team ON sCall.responsibleteam_id = tbl_team.id
    LEFT JOIN tbl_employee ON sCall.responsibleemployee_id = tbl_employee.id
    LEFT JOIN tbl_employee AS empClient ON empClient.id = sCall.clientemployee_id
    LEFT JOIN tbl_ou AS ouClient ON sCall.clientou_id = ouClient.id
    LEFT JOIN tbl_team AS teamClient ON sCall.clientteam_id = teamClient.id
    LEFT JOIN tbl_priority ON sCall.priority_id = tbl_priority.id
    , tbl_root
     
    WHERE
    sCall.id = ${subject_id}
    --         sCall.id = 1211004  -- INC6
    --         sCall.id = 1211001  -- INC3
    --         sCall.id = 1211003  -- SD5*/
    ) AS servicecall
    LEFT JOIN tbl_task AS task ON servicecall.id = task.servicecall
    LEFT JOIN tbl_employee ON task.responsibleemployee_id = tbl_employee.id
    LEFT JOIN tbl_team ON  tbl_team.id = task.responsibleteam_id
    ORDER BY task.title:: int
  3. Формирование печатной формы, на основе макета, который состоит из таблиц:

    1. определите области и структурные элементы печатной формы, см. Добавление шаблона PRD. Настройка структуры шаблона PRD;
    2. добавьте в каждую область необходимые элементы, см.  Управление элементами шаблона PRD.
    3. определите значения элементова в шаблоне PRD, см. Определение значения поля в шаблоне PRD.
  4. После выполнения всех настроек сохраните шаблон PRD.

Дополнительные настройки шаблона PRD для печатной формы:

  • Чтобы заказ-наряд отображался на странице формата А4, в меню "Файл" выберите пункт "Параметры страницы" и укажите стандартный размер страницы А4 и необходимые отступы, см.  Форматирование страницы отчета / печатной формы.
  • Таблица со списком связанных с запросом задач может растянуться на несколько страниц. Чтобы настроить повторение заголовка на каждой странице печатной формы, добавьте ячейки с заголовком в группу "Заголовок отчета". Выберите элемент "Заголовок отчета" и на вкладке "Стиль" в атрибуте "дублировать заголовок" (группа атрибутов "расположение на странице") установите true , см.  Повторение заголовка на каждой странице.
  • Значения в ячейках с описанием запроса, задач и т.д. могут содержать большое количество текста. Рекомендуется сделать все ячейки таблицы динамически расширяемыми, для этого выберите элемент шаблона PRD и на вкладке "Стиль" в атрибуте "динамическая высота" (группа атрибутов "размер и расположение") установите true, см.  Динамическое расширение ячеек таблицы.
  • Чтобы в одной ячейке отображать фиксированный текст в одном формате, а значения атрибутов в другом, необходимо использовать функции, см. Описание стандартных функций Pentaho Report Designer.

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

Добавление шаблона печатной формы

Добавление шаблона печатной формы выполняется по общим правилам создания шаблонов отчетов и печатных форм на странице "Шаблоны отчетов и печатных форм", см. Добавление шаблона отчетов и печатных форм.

При создании шаблона печатной формы "Заказ-наряд" на форме добавления заполните поля:

  • Название: "Заказ-наряд".
  • Код: уникальный идентификатор шаблона в системе.
  • Описание.
  • Файл: "Шаблон печатной формы заказ-наряд.prpt". Для получения файла обратитесь в службу поддержки NAUMEN.
  • Скрипт печатной формы "Заказ-наряд". Скрипт позволяет корректно обрабатывать теги из RTF атрибутов и вычисляет дату первого построения отчета.

    Содержание скрипта:

    Copy
    //ОСНОВНОЙ БЛОК--------------------------------------------------------
    table.rows.each() { row ->
    row.descriptionRTF = row.descriptionRTF?  row.descriptionRTF.replaceAll("\\<.*?>","") : "-";
    row.descriptionRTF = row.descriptionRTF.replaceAll("\\ "," ");
    row.taskDesc = row.taskDesc?  row.taskDesc.replaceAll("\\<.*?>","") : "-";
    row.taskDesc = row.taskDesc.replaceAll("\\ "," ");
    row.fdate=new Date();
    def backTimerVal = subject.timeAllowanceTimer;
    row.timeAllowanceTimer =  backTimerVal? backTimerVal.deadLineTime : "-";
    };
    return table;

После сохранения форма добавления закроется, новый шаблон отобразится на странице "Шаблоны отчетов и печатных форм".

Размещение печатной формы на карточке объекта

Печатная форма размещается на карточке объекта в контентах: "Список отчетов, печатных форм" и "Отчет, печатная форма", см. Настройка отчетов и печатных форм в системе.

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

Работа с печатной формой в системе

Работа с печатной формой в интерфейсе оператора в рамках процесса, описанного в разделе Описание процесса использования печатной формы:

  1. Зарегистрируйте запрос типа "Инцидент" и свяжите запрос с IT-активом 1С.
  2. В карточке запроса добавьте две задачи для устранения инцидента.

  3. В карточке запроса перейдите на вкладку "Печатные формы". Нажмите на название шаблона "Заказ-наряд".

    На экране отобразится список экземпляров печатной формы.

    Чтобы добавить экземпляр печатной формы нажмите кнопку Добавить. После добавления на экране отобразится печатная форма.

    На странице экземпляра печатной формы выполняются следующие действия:

    • Экспорт (выгрузка) в файл печатной формы . При нажатии кнопки Экспорт, раскрывается список для выбора формата файла. Процедура загрузки и место сохранения файла на компьютере зависят от настройки интернет-браузера пользователя.

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

    • Печать экземпляра печатной формы. При нажатии кнопки Печать открывается новая вкладка браузера, на которой отображается сгенерированный отчет/печатная форма. Функция печати вызывается автоматически.
    • Добавление по текущим параметрам. При нажатии кнопки Добавить по текущим параметрам открывается форма добавления экземпляра печатной формы, при построении экземпляра используются текущие данные объектов системы.
  4. Чтобы вернуться к списку экземпляров печатной формы, перейдите по ссылке К списку отчетов "Заказ-наряд".

    Действия с экземплярами печатной формы см. Работа с экземпляром отчета / печатной формы .

  5. Перейдите в карточку запроса и добавьте новую задачу.

    Перейдите на вкладку "Печатные формы" и добавьте новый экземпляр печатной формы "Заказ-наряд". Новая задача будет отображаться в списке задач печатной формы.