Платформа 3V/Формы/Действия/Экспорт по шаблону: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показано 5 промежуточных версий этого же участника)
Строка 1: Строка 1:
Действие, которое позволяет выгрузить документ word/pdf заполненный данными из формы по определенном шаблону.
+
Для выполнения выгрузки по шаблону необходимо добавить элемент "Кнопка" и добавить действие с типом "Нажатие", которое позволяет выгрузить документ word/pdf заполненный данными из формы по определенном шаблону.
  
==Общая информация==
+
==JSON действия==
 
<syntaxhighlight lang="JSON" line>
 
<syntaxhighlight lang="JSON" line>
 
  {
 
  {
Строка 29: Строка 29:
 
| format|| Формат выгружаемого документа (Docx или Pdf)
 
| format|| Формат выгружаемого документа (Docx или Pdf)
 
|-
 
|-
| id || Идентификатор действия
+
| id || Идентификатор действия (задается автоматически)
 
|-
 
|-
 
| comment || Описание действия
 
| comment || Описание действия
 
|-
 
|-
| enableExpressionId|| Условие выполнения действия
+
| enableExpressionId|| Условие выполнения действия (при необходимости)
 
|-
 
|-
 
| discriminator|| ExportAction
 
| discriminator|| ExportAction
 
|}
 
|}
  
==Пример использования==
+
==Шаги настройки==
 
Необходимо сформировать шаблон документа, в котором будет отображаться информация в виде предзаполненных полей документа.
 
Необходимо сформировать шаблон документа, в котором будет отображаться информация в виде предзаполненных полей документа.
 
Для настройки данного функционала необходимо выполнить следующие шаги:
 
Для настройки данного функционала необходимо выполнить следующие шаги:
Строка 47: Строка 47:
  
 
===Настроить в файле Word выгружаемые поля===
 
===Настроить в файле Word выгружаемые поля===
Для выгрузки возможно использовать текстовые, числовые поля, даты, таблицы, ячейку таблицы.
+
Для выгрузки возможно использовать текстовые, числовые поля, даты, таблицы, ячейку таблицы, диаграммы.
 +
 
 +
На основании caption или id настроенных элементов возможно сформировать шаблон для выгрузки.
  
 
Подробнее о настройке требуемых полей в Word см. статью [[Платформа_3V/Экспорт_по_шаблону/Формирование_печатной_формы|'''"Формирование шаблона для печати"''']].
 
Подробнее о настройке требуемых полей в Word см. статью [[Платформа_3V/Экспорт_по_шаблону/Формирование_печатной_формы|'''"Формирование шаблона для печати"''']].
Строка 54: Строка 56:
 
Для выполнения действия выгрузки документа по шаблону необходимо настроить кнопку, по нажатию на которую будет происходить выгрузка
 
Для выполнения действия выгрузки документа по шаблону необходимо настроить кнопку, по нажатию на которую будет происходить выгрузка
  
Подробнее о настройке кнопки см. статью [[Платформа_3V/Экспорт_по_шаблону/Формирование_печатной_формы|'''"Платформа_3V/Формы/Компоненты/Основные/Кнопка"''']].
+
Подробнее о настройке кнопки см. статью [[Платформа_3V/Формы/Компоненты/Основные/Кнопка|'''"Настройка кнопки в форме"''']].
  
 
===Настроить действие на выгрузку===
 
===Настроить действие на выгрузку===
Строка 78: Строка 80:
 
Подробнее про каждое свойство смотри выше.
 
Подробнее про каждое свойство смотри выше.
  
Варианты настройки наименования выгружаемого файла:
+
====Укажите ссылку на файловое хранилище====
# Фиксированное наименование файла
+
Необходимо указать URL файлового хранилища, где размещен файл (может быть сторонний открытый ресурс, а также сервис "Файловое хранилище" платформы 3V.
 +
 
 +
При использовании сервиса "Файловое хранилище" платформы 3V [[Платформа_3V/Файловое_хранилище/Запись_и_получение_файла|'''в следующей статье''']] вы найдете как загрузить файл и получить соответствующий URL
 +
 
 +
====Настройка наименования выгружаемого файла====
 +
* Фиксированное наименование файла
 
<syntaxhighlight lang="JSON" line>
 
<syntaxhighlight lang="JSON" line>
 
  {
 
  {
Строка 91: Строка 98:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
# Расчетное наименование файла
+
* Расчетное наименование файла
 
<syntaxhighlight lang="JSON" line>
 
<syntaxhighlight lang="JSON" line>
 
  {
 
  {
Строка 103: Строка 110:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Где '''expressionId''' - Идентификатор выражения, в котором рассчитывается наименование - должно иметь строковый тип данных
+
Где '''expressionId''' - Идентификатор выражения, в котором рассчитывается наименование - выражение должно "отдавать" строковый тип данных
 +
 
 +
====Укажите формат выгружаемого файла====
 +
В качестве формата выгружаемого файла вы можете использовать Word или Pdf
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
    ...
 +
      "format": "Docx",
 +
      ...
 +
    }
 +
</syntaxhighlight>
 +
 
 +
 
 +
====Укажите форму с данными (при необходимости)====
 +
При условии выгрузки данных из текущей открытой формы (на которой располагается кнопка "Печать") данное свойство можно не заполнять!
 +
 
 +
При выгрузке из иной формы, которую требуется "открыть" для выгрузки с точно такими же параметрами как текущую форму, необходимо указать свойство '''target''' с идентификатором '''серверной!''' части формы (объекта навигатора).
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
    ....
 +
      "target": {
 +
        "id": 227
 +
      },
 +
    ...
 +
    }
 +
</syntaxhighlight>
 +
 
 +
При выгрузке из иной формы, которую требуется "открыть" для выгрузки с параметрами, отличными от параметров текущей форсы, необходимо указать свойство '''target''' с идентификатором '''серверной!''' части формы (объекта навигатора), а также прописать параметры открытия для выгрузки документа в свойство '''parameterValues'''
 +
 
 +
Где:
 +
 
 +
*id - идентификатор параметра формы, в которую передаем отметку
 +
*value - фиксированное значение параметра для открытия формы
 +
*expressionId- идентификатор выражения, с помощью которым рассчитываем значение параметра (при необходимости)
 +
 
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
    ....
 +
      "target": {
 +
        "id": 227,
 +
        "parameterValues": [
 +
          {
 +
            "id": 1,
 +
            "expressionId": 287,
 +
            "value": null
 +
          }
 +
        ]
 +
      },
 +
    ...
 +
    }
 +
</syntaxhighlight>
 +
 
 +
====Настроить условие выполнения действия (при необходимости)====
 +
При необходимости настроить особое условие при котором действие будет/не будет выполнятся, укажите соответствующие выражение в свойство '''enableExpressionId'''', которое будет "возвращать" true или false
 +
 
 +
true - действие будет выполнено, false - действие не будет выполнено
 +
 
 +
Если свойство не заполнено действие будет выполнятся при каждом нажатии на кнопку
 +
 
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
    ....
 +
      "enableExpressionId": 101,
 +
    ...
 +
    }
 +
</syntaxhighlight>
 +
 
 +
==Основные проблемы и способы решения==
 +
 
 +
1. Выгружается пустой файл:
 +
* Настроены некорректно поля - загрузите файл без заполненных полей, но с простым текстом, чтобы исключить прочие проблемы и добавляйте поля для выгрузки по одному
 +
* Файла по указанной ссылке нет в файловом хранилище - проверьте наличие файла по указанной ссылке
 +
 
 +
2. Выгружается файл с полями того вида, как они были настроены (Например: $params["Пользователь"]):
 +
* В качестве target указана клиентская форма, а не серверная - исправьте ссылку на корректную
 +
 
 +
3. Падет ошибка 403 Forbidden
 +
* Нет прав на объект (форму или элемент справочника) у пользователя для выгрузки по шаблону - проверьте права доступа пользователя/роли/группы на соответствующие объекты, которые указаны в логе (F12, ответ/Response упавшего запроса)

Текущая версия на 19:26, 19 апреля 2022

Для выполнения выгрузки по шаблону необходимо добавить элемент "Кнопка" и добавить действие с типом "Нажатие", которое позволяет выгрузить документ word/pdf заполненный данными из формы по определенном шаблону.

JSON действия

 1  {
 2       "templateFilename": "https://.../filestorage/api/FileStorage/S3/get/Документ.docx",
 3       "filenameSettings": {
 4         "value": "Наименование выгружаемого документа.docx",
 5         "discriminator": "FixedTextSettings"
 6       },
 7       "format": "Docx",
 8       "discriminator": "ExportAction",
 9       "comment": null,
10       "enableExpressionId": null,
11       "id": 1,
12       "name": "Выгрузка документа по шаблону",
13       "code": null
14     },
Свойство Описание
templateFilename Ссылка на загруженный файл в Файловом хранилище
filenameSettings Наименование документа, с которым он выгрузится на устройство
format Формат выгружаемого документа (Docx или Pdf)
id Идентификатор действия (задается автоматически)
comment Описание действия
enableExpressionId Условие выполнения действия (при необходимости)
discriminator ExportAction

Шаги настройки

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

Настроить в форме требуемые поля для выгрузки в документ

Настройки всех полей для выгрузки осуществляется в форме, из котороый и происходит выгрузка, в случае когда бОльшая часть необходимых полей должна отображаться на форме. Если для выгрузки требуются элементы, таблицы, диаграммы, бОльшая часть которых не используется для отображения в самой форме - для заполнения по шаблону настраивают отдельную форму, чтобы при открытии текущей не перегружать ее информацией, а подгружать требуемую информацию только в момент "печати" по шаблону.

Как настроить соответствующие поля (текстовые, числовые, даты, таблицы и прочее) см. статью "Настроить элементы формы".

Настроить в файле Word выгружаемые поля

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

На основании caption или id настроенных элементов возможно сформировать шаблон для выгрузки.

Подробнее о настройке требуемых полей в Word см. статью "Формирование шаблона для печати".

Добавить кнопку для выполнения печати из формы

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

Подробнее о настройке кнопки см. статью "Настройка кнопки в форме".

Настроить действие на выгрузку

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

 1  {
 2       "templateFilename": "https://.../filestorage/api/FileStorage/S3/get/Документ.docx",
 3       "filenameSettings": {
 4         "value": "Наименование выгружаемого документа.docx",
 5         "discriminator": "FixedTextSettings"
 6       },
 7       "format": "Docx",
 8       "discriminator": "ExportAction",
 9       "comment": null,
10       "enableExpressionId": null,
11       "id": 1,
12       "name": "Выгрузка документа по шаблону",
13       "code": null
14     }

Подробнее про каждое свойство смотри выше.

Укажите ссылку на файловое хранилище

Необходимо указать URL файлового хранилища, где размещен файл (может быть сторонний открытый ресурс, а также сервис "Файловое хранилище" платформы 3V.

При использовании сервиса "Файловое хранилище" платформы 3V в следующей статье вы найдете как загрузить файл и получить соответствующий URL

Настройка наименования выгружаемого файла

  • Фиксированное наименование файла
1  {
2      ...
3       "filenameSettings": {
4         "value": "Фиксированное наименование выгружаемого документа.docx",
5         "discriminator": "FixedTextSettings"
6       },
7       ...
8     }
  • Расчетное наименование файла
1  {
2      ...
3       "filenameSettings": {
4         "expressionId": 100,
5         "discriminator": "ExpressionTextSettings"
6       },
7       ...
8     }

Где expressionId - Идентификатор выражения, в котором рассчитывается наименование - выражение должно "отдавать" строковый тип данных

Укажите формат выгружаемого файла

В качестве формата выгружаемого файла вы можете использовать Word или Pdf

1  {
2      ...
3       "format": "Docx",
4       ...
5     }


Укажите форму с данными (при необходимости)

При условии выгрузки данных из текущей открытой формы (на которой располагается кнопка "Печать") данное свойство можно не заполнять!

При выгрузке из иной формы, которую требуется "открыть" для выгрузки с точно такими же параметрами как текущую форму, необходимо указать свойство target с идентификатором серверной! части формы (объекта навигатора).

1  {
2      ....
3       "target": {
4         "id": 227
5       },
6      ...
7     }

При выгрузке из иной формы, которую требуется "открыть" для выгрузки с параметрами, отличными от параметров текущей форсы, необходимо указать свойство target с идентификатором серверной! части формы (объекта навигатора), а также прописать параметры открытия для выгрузки документа в свойство parameterValues

Где:

  • id - идентификатор параметра формы, в которую передаем отметку
  • value - фиксированное значение параметра для открытия формы
  • expressionId- идентификатор выражения, с помощью которым рассчитываем значение параметра (при необходимости)
 1  {
 2      ....
 3       "target": {
 4         "id": 227,
 5         "parameterValues": [
 6           {
 7             "id": 1,
 8             "expressionId": 287,
 9             "value": null
10           }
11         ]
12       },
13      ...
14     }

Настроить условие выполнения действия (при необходимости)

При необходимости настроить особое условие при котором действие будет/не будет выполнятся, укажите соответствующие выражение в свойство enableExpressionId', которое будет "возвращать" true или false

true - действие будет выполнено, false - действие не будет выполнено

Если свойство не заполнено действие будет выполнятся при каждом нажатии на кнопку

1  {
2      ....
3       "enableExpressionId": 101,
4      ...
5     }

Основные проблемы и способы решения

1. Выгружается пустой файл:

  • Настроены некорректно поля - загрузите файл без заполненных полей, но с простым текстом, чтобы исключить прочие проблемы и добавляйте поля для выгрузки по одному
  • Файла по указанной ссылке нет в файловом хранилище - проверьте наличие файла по указанной ссылке

2. Выгружается файл с полями того вида, как они были настроены (Например: $params["Пользователь"]):

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

3. Падет ошибка 403 Forbidden

  • Нет прав на объект (форму или элемент справочника) у пользователя для выгрузки по шаблону - проверьте права доступа пользователя/роли/группы на соответствующие объекты, которые указаны в логе (F12, ответ/Response упавшего запроса)