Задача [0174]: Доработки печатного представления форм

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

Используется:

Решение:

1. Необходимо реализовать следующие новые возможности таблиц (в т.ч. динамических) в печатном представлении формы
  1. Ограничение[1], существовавшее до данной задачи:

    Таблица, динамическая на форме, в шаблоне может содержать произвольное количество заголовков (шапок), но она обязательно должна содержать последнюю строку со значениями идентификаторов компонентов.

    Теперь динамическая таблица в шаблоне печати должна поддерживать и т.н. «подвалы». Т.е. таблица не обязательно должна заканчиваться строкой с данными полей из формы (идентификаторами), может и произвольным текстом. В подвале нельзя использовать идентификаторы из любой динамической таблицы на форме (т.е. можно использовать произвольный текст и остальные идентификаторы).

  2. Ограничение, существовавшее до данной задачи:

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

    Теперь динамическая таблица в шаблоне печати должна поддерживать ввод в ячейке записей формата:

    1.1   `произвольный текст`
    1.2   `«id1»`
    1.3   `произвольный текст + «id1»`
    1.4   `«id1» + «id2»`
    1.5   `произвольный текст + «id1» + произвольный текст + «id2»`
    

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

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

  3. Ограничение, существовавшее до данной задачи:

    Таблица, динамическая на форме, (...) обязательно должна содержать последнюю строку со значениями идентификаторов компонентов.

    Теперь динамическая таблица в шаблоне печати должна поддерживать многострочные блоки. Т.е. строка со значениями идентификаторов компонентов не обязательно должна быть единственной, можно ее разбить не несколько строк. Строки со значениями компонентов из динамической таблицы должны вставляться этими блоками.

Примечание

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

Пример ожидаемого поведения №1

Условие: существует форма, у которой настроена выгрузка печати только в формате DOCX, на основе этой формы создан реестр.

  1. Методолог в шаблоне печати настраивает отображение динамической таблицы, используя двустрочный блок, используя в одной ячейке не только поле ввода, но и вперемешку обычный текст, а также несколько полей ввода, а также произвольный «подвал» таблицы:

    ___Приказываю выплатить премию в размере 1-го оклада ФИО: cmp1, должность: cmp2
    ___Основание: cmp3
    Подготовил: cmp4

    Примечание: компоненты cmp1, cmp2 и cmp3 - из одной динамической таблицы, cmp4 - произвольный компонент формы.

  2. Пользователь1 создает запись реестра из условия.

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

  4. Пользователь1 нажимает на кнопку «Печать» и выбирает единственный (помимо стандартного HTML) вариант DOCX.

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

    ___Приказываю выплатить премию в размере 1-го оклада ФИО: Бобров Степан Егорович, должность: Генеральный директор
    ___Основание: Приказ №1
    ___Приказываю выплатить премию в размере 1-го оклада ФИО: Слепаков Иван Ильич, должность: Начальник отдела
    ___Основание: Приказ №2
    ___Приказываю выплатить премию в размере 1-го оклада ФИО: Саматов Ербол Алиевич, должность: Снабженец
    ___Основание: Приказ №3
    Подготовил: Абдрешен Л.С.
2. Выгрузка шаблона печати в другие форматы

В настройки печатного представления формы необходимо добавить новую опцию Формат печати, представляющую собой 3 флажка:

  • PDF (включена по умолчанию)

  • ODT

  • DOCX

Рисунок 21. Настройки печатного представления формы

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

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

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

Выберите хотя бы 1 формат печати

Пример ожидаемого поведения №2

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

  1. Методолог в редакторе форм настроил выгрузку печати в форматы PDF, ODT и DOCX.

  2. Пользователь1 создает проект документа из условия.

  3. Пользователь1 заполняет данные формы и сохраняет, переходит в режим просмотра файла по форме.

  4. Пользователь1 нажимает на кнопку «Печать», среди вариантов печати вышло:

    • HTML

    • PDF

    • ODT

    • DOCX

  5. Пользователь1 выбирает вариант PDF, формируется печатное представление в формате PDF.

  6. Пользователь1 выбирает вариант ODT, формируется печатное представление в формате ODT.

  7. Пользователь1 выбирает вариант DOCX, формируется печатное представление в формате DOCX.

3. Действия при обновлении системы

При обновлении системы во всех настроенных печатных представлениях форм должна появиться новая опция «Формат печати» с единственным включенным флажком PDF. Других видимых изменений, в т.ч. в клиентской части, произойти не должно.



[1] Все бывшие ограничения описаны в задаче 64 итерации про печатное представление.