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

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

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

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

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

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

  • Сотрудники службы поддержки регистрируют запросы типа "Запрос на обслуживание" или "Инцидент". Запрос может быть связан с одним или несколькими 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. Перейдите в карточку запроса и добавьте новую задачу.

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