Документація/Налаштування пристроїв

Адміністратору

PDF-форми

Конфігурація pdf_forms.xml, HTML-шаблони та готовий приклад PDF-форми замовлення.

PDF-форма — це HTML-шаблон, у який застосунок підставляє дані документа. PDF формується на Android-пристрої; його можна відкрити для перегляду або надіслати через інший застосунок.

Для підстановки даних використовується мова шаблонів Chunk Templates. На окремій сторінці описано поля, фільтри, умови, цикли та обчислення.

Готовий приклад

Для замовлення можна використати архів із прикладом PDF-форми. Він містить:

ФайлПризначення
pdf_forms.xmlПерелік PDF-форм із формою «Замовлення».
order_summary_uk.htmlHTML-шаблон замовлення з товарами, знижками та підсумками.
exchange-profile.xmlПрофіль для додавання у ваш exchange.xml.
README.txtКороткий порядок встановлення.

Завантажений HTML-файл є шаблоном: значення тегів з'являться після формування PDF у застосунку.

Перелік форм — pdf_forms.xml

<?xml version="1.0" encoding="utf-8"?>
<pdf-forms>
  <document name="order">
    <forms>
      <form lang="uk">
        <presentation>Замовлення</presentation>
        <file>order_summary_uk.html</file>
      </form>
    </forms>
  </document>
</pdf-forms>
Елемент або атрибутПризначення
<document name="…">Документ, для якого доступна форма. Для замовлення — order, оплати — invoice, стор-чеку — storecheck.
<forms>Перелік форм цього документа.
<form>Одна форма.
langКод мови інтерфейсу застосунку. Для української — uk. Атрибут необов'язковий.
<presentation>Назва форми, яку бачить користувач під час вибору.
<file>Точне ім'я HTML-файла з розширенням.

Для кількох форм додайте окремі <form> усередину <forms>. Файл pdf_forms.xml задає повний перелік PDF-форм: приклад вище залишає лише одну форму замовлення. Щоб зберегти інші форми, додайте їхні записи до цього самого файла та передайте відповідні шаблони.

Застосунок спочатку вибирає форми з lang, що відповідає поточній мові інтерфейсу. Якщо таких немає — форми без lang. Якщо немає й форм без мови, показуються всі форми цього документа. Коли доступна одна форма, вона використовується відразу; для кількох застосунок пропонує вибір.

HTML-шаблон

Зберігайте HTML-шаблон у UTF-8. Розміщуйте стилі всередині файла, а сам шаблон — поруч із pdf_forms.xml на пристрої. У <file> вказуйте ім'я без шляху до теки.

У шаблоні використовуються теги для підстановки значень:

<h1>Замовлення № {$doc.number|html}</h1>
<p>Дата: {$doc.date_localized|html}</p>
<p>Клієнт: {$doc.customer_name|html}</p>

Для замовлення доступні такі групи даних:

ГрупаПриклади
doc{$doc.number}, {$doc.date_localized}, {$doc.customer_name}, {$doc.sum}, {$doc.discount}.
doc.customerПоля клієнта з довідника: наприклад, {$doc.customer.code} або додаткове поле адреси.
weРеквізити компанії: {$we.company}, {$we.address}, {$we.registration}, {$we.billing}, {$we.comment}.
tableРядки табличної частини документа. Використовується в циклі.
row.productПоля товару з довідника в поточному рядку: наприклад, {$row.product.measure_unit}.

Назви полів мають відповідати схемі документа та довідникам. Наприклад, додаткова адреса клієнта буде доступна лише за наявності відповідного поля в завантаженому довіднику.

Рядки документа

<table>
  <thead>
    <tr>
      <th>Товар</th>
      <th>Кількість</th>
      <th>Коефіцієнт</th>
      <th>Ціна</th>
      <th>Сума</th>
    </tr>
  </thead>
  <tbody>
    {% loop in $table as $row %}
    <tr>
      <td>{$row.name|html}</td>
      <td>{$row.count|number}</td>
      <td>{$row.koef|number}</td>
      <td>{$row.price|decimal}</td>
      <td>{$row.sum|decimal}</td>
    </tr>
    {% onEmpty %}
    <tr>
      <td colspan="5">У документі немає товарів</td>
    </tr>
    {% endloop %}
  </tbody>
</table>

count — введена кількість, koef — кількість базових одиниць у введеній одиниці, price — ціна базової одиниці. Наприклад, дві фасовки по шість одиниць передаються як count=2 і koef=6.

У прикладі html готує текст для HTML, number форматує кількість без зайвих кінцевих нулів, а decimal — суми з двома десятковими знаками. Повний опис цих фільтрів, перевірок порожніх реквізитів і нумерації рядків є на сторінці Мова шаблонів — Chunk.

Передавання й перевірка

  1. Розпакуйте архів із прикладом.

  2. Покладіть pdf_forms.xml та order_summary_uk.html безпосередньо в outbox пристрою. Якщо використовуєте інші форми, спочатку узгодьте їхній перелік у pdf_forms.xml.

  3. Додайте вміст exchange-profile.xml усередину <palm-client> вашого exchange.xml:

    <exchange name="pdf_forms" view="Завантажити PDF-форми">
      <get>
        <files>
          <file name="pdf_forms" files="pdf_forms.xml"/>
          <file name="order_summary_pdf" files="order_summary_uk.html"/>
        </files>
      </get>
    </exchange>
    
  4. На пристрої виконайте Завантажити файл обміну, потім Завантажити PDF-форми. Перевірте журнал обміну.

  5. Заповніть реквізити компанії, відкрийте замовлення з товарами й виберіть Перегляд у меню документа.

  6. Перевірте поля, кількість, ціни, знижки та підсумки. Окремо перевірте документ із довгими назвами й великою кількістю рядків, щоб оцінити розбивку на сторінки.

  7. Виберіть Поділитися й перевірте надсилання PDF потрібним застосунком.

PDF містить значення відкритого документа на момент формування. Після редагування документа сформуйте файл повторно.

Якщо PDF не формується

СимптомЩо перевірити
Перегляд і Поділитися недоступніОтримання pdf_forms.xml, правильність XML і наявність форм для цього документа.
Потрібної форми немає у спискуЗначення name документа, записи <form> та правила вибору за lang.
Помилка підготовки форми або порожній вмістЧи завантажено HTML-файл, чи збігається його ім'я з <file> та чи має він розширення .html.
У формі порожні поля або залишилися теги {$…}Назви тегів, дані відкритого документа, реквізити та поля завантажених довідників; для необов'язкових полів — заміну або умову в шаблоні.
PDF створено, але він не відкриваєтьсяНаявність застосунку для перегляду PDF на пристрої.
Неправильна точність кількостіФільтр number або налаштування відповідної колонки, якщо використано тег _display.