| |
| hc:admin:print_forms [10.10.2026 16:41] – создано - внешнее изменение | hc:admin:print_forms [10.10.2026 19:32] (текущий) – внешнее изменение |
|---|
| </WRAP> | </WRAP> |
| |
| Кнопка **«Источник»** в редакторе показывает шаблон в виде HTML-кода. Сложные формы — со множеством таблиц и точным расположением полей — надёжнее править в этом режиме. | Кнопка **«Источник»** в редакторе показывает шаблон в виде HTML-кода. Сложные формы — со множеством таблиц и точным расположением полей — надёжнее править в этом режиме, см. [[#как_править_html-код_шаблона|Как править HTML-код шаблона]]. Какие конструкции можно использовать и где брать имена полей — в разделах [[#синтаксис_шаблона|Синтаксис шаблона]] и [[#переменные_по_типам_документов|Переменные по типам документов]]. |
| |
| ===== Как добавить шаблон ===== | ===== Как добавить шаблон ===== |
| </WRAP> | </WRAP> |
| |
| ===== Подстановка данных ===== | ===== Где какой синтаксис работает ===== |
| |
| Данные документа подставляются в шаблон вместо имён полей в двойных фигурных скобках. | Шаблоны разных типов собираются по-разному, поэтому и возможности у них разные. |
| |
| <WRAP props> | <WRAP props> |
| | ''%%{{docnum}}%%'' | Значение поля документа: номер, дата, сумма | | | **Печатные формы документов** | Полный синтаксис: подстановка, циклы, условия, форматирование чисел, штрихкоды — см. [[#синтаксис_шаблона|Синтаксис шаблона]] | |
| | ''%%{{organisation.inn}}%%'' | Поле вложенной записи — через точку: ИНН юридического лица, название поставщика | | | **Печатная форма :: Кассовая форма** | Подстановка, циклы ''%%{{#each}}%%'' и условия ''%%{{#if}}%%'', ''%%{{#unless}}%%''. Форматирование чисел, сравнение и штрихкоды недоступны | |
| | ''%%{{#each orders_item}} … {{/each}}%%'' | Повторяет фрагмент для каждой строки документа — так строится таблица товаров | | | **EMail** | Только подстановка значений: ''%%{{first_name}}%%''. Циклы и условия не работают — конструкция останется в письме как текст | |
| | ''%%{{#if shipping_address}} … {{/if}}%%'' | Выводит фрагмент, только если поле заполнено | | | **Ценники** | Свой набор полей — см. [[hc:prices:labels|Ценники]] | |
| | | **Интернет-витрина :: Информация** | Обычная страница, подстановок нет | |
| </WRAP> | </WRAP> |
| |
| Какие поля есть у документа, видно под редактором: раскройте блок **«Показать структуру данных документа для автоподстановки»**. В нём показаны имена полей на примере одного из существующих документов этого типа. | ===== Синтаксис шаблона ===== |
| |
| Пример строки таблицы товаров в счёте по заказу: | Шаблон — это HTML-страница, в которую вставлены конструкции в двойных фигурных скобках. При печати система заменяет их данными документа. Используется шаблонизатор Handlebars. |
| | |
| | ==== Значения ==== |
| | |
| | <WRAP props> |
| | | ''%%{{docnum}}%%'' | Значение поля документа | |
| | | ''%%{{supplier.name}}%%'' | Поле вложенной записи — через точку: название поставщика, ИНН юридического лица | |
| | | ''%%{{orders_item.0.name}}%%'' | Поле конкретной строки документа. Строки нумеруются с нуля | |
| | | ''%%{{orders_item.length}}%%'' | Количество строк | |
| | | ''%%{{{comment}}}%%'' | Значение без защиты: если в поле записан HTML-код, он сработает как разметка. В двойных скобках тот же код выводится как текст | |
| | | ''%%{{!-- примечание --}}%%'' | Комментарий: в документ не попадает | |
| | </WRAP> |
| | |
| | Если поля с таким именем нет или оно не заполнено, на его месте будет пусто — ошибки не возникнет. |
| | |
| | ==== Циклы ==== |
| | |
| | Цикл повторяет фрагмент для каждой строки документа — так строится таблица товаров. |
| |
| <code html> | <code html> |
| {{#each orders_item}} | <table> |
| <tr> | <tbody> |
| <td>{{index}}</td> | {{#each orders_item}} |
| <td>{{name}}</td> | <tr> |
| <td>{{quantity}} {{okei_name}}</td> | <td>{{index}}</td> |
| <td>{{price}}</td> | <td>{{name}}</td> |
| <td>{{amount}}</td> | <td>{{quantity}} {{okei_name}}</td> |
| </tr> | <td>{{price}}</td> |
| {{/each}} | <td>{{amount}}</td> |
| | </tr> |
| | {{else}} |
| | <tr><td colspan="5">В заказе нет товаров</td></tr> |
| | {{/each}} |
| | </tbody> |
| | </table> |
| </code> | </code> |
| | |
| | <WRAP props> |
| | | ''%%{{#each строки}} … {{/each}}%%'' | Повторяет фрагмент для каждой строки. Внутри цикла имена полей относятся к строке: ''%%{{name}}%%'' — название товара в строке | |
| | | ''%%{{else}}%%'' внутри цикла | Что вывести, если строк нет | |
| | | ''%%{{index}}%%'' | Номер строки с единицы — готовое поле в строках документов | |
| | | ''%%{{@index}}%%'' | Номер строки с нуля — считает сам шаблонизатор | |
| | | ''%%{{#if @first}}%%'', ''%%{{#if @last}}%%'' | Первая и последняя строка: удобно для разделителей и итогов | |
| | | ''%%{{../docnum}}%%'' | Поле документа изнутри цикла: ''../'' поднимает на уровень выше | |
| | | ''%%{{#each_with_sort orders_item "name"}} … {{/each_with_sort}}%%'' | Тот же цикл, но строки отсортированы по указанному полю по возрастанию. Порядок сохраняется и для циклов ниже по шаблону | |
| | | ''%%{{#times 10}} … {{/times}}%%'' | Повторяет фрагмент заданное число раз — так добавляют пустые строки в бланк. ''%%{{this}}%%'' внутри — счётчик с нуля | |
| | </WRAP> |
| | |
| | В поступлении, возврате поставщику, перемещении и заказе поставщику порядок строк можно менять прямо на странице печати: над документом есть ссылка **Сортировка: Товар**. |
| | |
| | ==== Условия ==== |
| | |
| | <WRAP props> |
| | | ''%%{{#if shipping_address}} … {{/if}}%%'' | Выводит фрагмент, если поле заполнено. Пустая строка, ноль и пустой список считаются незаполненными | |
| | | ''%%{{#if paid}} … {{else}} … {{/if}}%%'' | Два варианта: для заполненного и пустого поля | |
| | | ''%%{{#unless customer_name}} … {{/unless}}%%'' | Наоборот: выводит фрагмент, если поле пустое | |
| | | ''%%{{#ifeq is_paid "Да"}} … {{else}} … {{/ifeq}}%%'' | Сравнение: выводит фрагмент, если значение поля равно указанному. То же делает ''%%{{#if_eq}}%%'' | |
| | | ''%%{{#with supplier}} {{name}}, ИНН {{inn}} {{/with}}%%'' | Переходит внутрь вложенной записи, чтобы не повторять её имя | |
| | </WRAP> |
| | |
| | Пример: строка с адресом доставки печатается, только если адрес указан. |
| | |
| | <code html> |
| | {{#if shipping_address}} |
| | <p>Адрес доставки: {{shipping_address}}</p> |
| | {{/if}} |
| | </code> |
| | |
| | ==== Числа и текст ==== |
| | |
| | <WRAP props> |
| | | ''%%{{toFixed cogs 2}}%%'' | Число с заданным количеством знаков после запятой: 760 → ''760.00''. Без второго значения — округление до целого | |
| | | ''%%{{removeZeros count}}%%'' | Убирает лишние нули: ''2.000'' → ''2'', ''1.500'' → ''1.5'' | |
| | | ''%%{{concat docnum " от " docdate_readable}}%%'' | Склеивает несколько значений и текст в одну строку | |
| | </WRAP> |
| | |
| | Шаблон не умеет считать: сложить, умножить или сравнить «больше — меньше» в нём нельзя. Всё нужное уже посчитано в данных документа: суммы и итоги, суммы прописью (поля с окончанием ''_text'' или ''Text''), даты в привычном виде (''docdate_readable''), дата по частям для бланков (''docdate_parts.d'', ''docdate_parts.mText'', ''docdate_parts.Y''). |
| | |
| | ==== Штрихкод ==== |
| | |
| | <code html> |
| | {{> barcode data=docnum}} |
| | {{> barcode data=docnum type="qrcode"}} |
| | {{> barcode data="4600000010526" type="ean13" includeText="true"}} |
| | </code> |
| | |
| | <WRAP props> |
| | | ''data'' | Что закодировать: имя поля или текст в кавычках | |
| | | ''type'' | Вид кода: ''code128'' (по умолчанию), ''ean13'', ''qrcode'' | |
| | | ''includeText'' | ''%%"true"%%'' — подписать значение под штрихкодом | |
| | | ''scale'', ''width'', ''rotate'' | Масштаб, ширина и поворот изображения | |
| | </WRAP> |
| |
| <WRAP info> | <WRAP info> |
| **Подсказка.** Шаблоны используют синтаксис Handlebars. Реквизиты продавца и покупателя берутся из справочников — см. [[hc:company:organisations|Юридические лица]] и [[hc:company:bank_accounts|Банковские счета]]: если в печатной форме пустые реквизиты, заполните их там. | **Подсказка.** Изображение штрихкода строит внешний сервис quickchart.io: при печати компьютеру нужен доступ в интернет, а закодированное значение передаётся этому сервису. Не кодируйте так персональные данные. |
| | </WRAP> |
| | |
| | ===== Переменные по типам документов ===== |
| | |
| | ==== Где смотреть имена полей ==== |
| | |
| | Откройте шаблон на изменение и раскройте под редактором блок **«Показать структуру данных документа для автоподстановки»**. В нём показаны все поля на примере одного из существующих документов этого типа. |
| | |
| | {{:hc:admin:print_forms:template-data.png?700|Структура данных документа под редактором шаблона}} |
| | |
| | <WRAP props> |
| | | ''%%[docnum] => 1052%%'' | Поле документа. В шаблоне: ''%%{{docnum}}%%'' | |
| | | ''%%[organisation] => Array%%'' и поля с отступом ниже | Вложенная запись. В шаблоне — через точку: ''%%{{organisation.inn}}%%'' | |
| | | ''%%[orders_item] => Array%%'', внутри ''%%[0] => Array%%'' | Строки документа. В шаблоне — цикл ''%%{{#each orders_item}}%%'', внутри него поля строки: ''%%{{name}}%%'' | |
| | </WRAP> |
| | |
| | В примере показана только первая строка документа — этого достаточно, чтобы узнать имена полей. Если документов этого типа ещё нет, блок пуст: создайте хотя бы один документ. |
| | |
| | <WRAP important> |
| | **Внимание.** У кассовых форм блока нет — их поля перечислены [[#кассовые_формы|ниже]]. Для писем блок показывает готовый список переменных. |
| | </WRAP> |
| | |
| | ==== Общие поля ==== |
| | |
| | В печатных формах документов доступны все поля самого документа и общие поля: |
| | |
| | <WRAP props> |
| | | ''currency_symbol'', ''currency_sub_symbol'' | Обозначение валюты и её дробной части | |
| | | ''user_full_name'', ''user_short_name'' | Ф.И.О. сотрудника, который печатает документ, — полностью и с инициалами. Есть в поступлении, возврате, перемещении, отгрузке и заказе поставщику | |
| | | ''attribute1'' … ''attribute15'' | [[hc:admin:flex_fields|Пользовательские поля]] документа. Какое поле под каким номером, видно по значениям в блоке структуры данных | |
| | | ''warehouse.name'', ''warehouse.address'', ''warehouse.phone'' | Точка продаж документа | |
| | | ''warehouse.organisation.name'', ''.legal_name'', ''.inn'', ''.kpp'', ''.ogrn'', ''.okpo'', ''.address'' | Юридическое лицо точки продаж | |
| | | ''supplier.name'', ''.legal_name'', ''.inn'', ''.kpp'', ''.address'', ''.phone'', ''.bank_name'', ''.BIK'', ''.bankaccount'', ''.corraccount'' | Поставщик или контрагент и его банковские реквизиты | |
| | | ''item.name'', ''item.print_name'', ''item.article'', ''item.unit'', ''item.barcodes'', ''item.manufacturer.name'' | Товар строки — внутри цикла по строкам | |
| | </WRAP> |
| | |
| | ==== Документы ==== |
| | |
| | Имена полей со строками и основных итогов. Полный список для типа — в блоке структуры данных. |
| | |
| | ^ Тип ^ Строки ^ Поля строки ^ Итоги и даты ^ |
| | | Поступление | ''inflow_items'' | ''quantity'', ''cogs'', ''cogsum'', ''vat_rate'', ''vat_sum'', ''sum_minus_vat'', ''price_minus_vat'', ''retail_price'', ''retail_sum'', ''lot_number'', ''expir_date'', ''item.*'' | ''waybill'', ''docdate_readable'', ''accept_date_readable'', ''docdate_parts'', ''inflow_sum.*'', ''inflow_items_count'', ''inflow_items_count_text'', ''consignee.*''; расхождения — ''difference_report'' | |
| | | Возврат | ''returns_items'' | ''quantity'', ''cogs'', ''cogsum'', ''vat_rate'', ''vat_sum'', ''sum_minus_vat'', ''lot_number'', ''item.*'' | ''amount'', ''docdate_readable'', ''returns_sum.*'', ''returns_items_count_text'', ''consignee.*'' | |
| | | Перемещение, Товарная накладная | ''movegood_items'' | ''count'', ''cogs'', ''amount'', ''src_retail_price'', ''dst_retail_price'', ''vat_rate'', ''vat_sum'', ''lot_number'', ''expir_date'', ''item.*'' | ''amount'', ''amountText'', ''retail_amount'', ''retailAmountText'', ''totalCount'', ''item_count'', ''item_count_text'', ''docdate_readable'', ''docdate_parts'', ''source.*'', ''destination.*'' | |
| | | Списание | ''writeoff_item'' | ''quantity'', ''cogs'', ''cogsum'', ''retail_price'', ''lot_number'', ''formatted_expir_date'', ''item.*'' | ''amount'', ''amountText'', ''quantity'', ''formatted_date'', ''reason_readable'' | |
| | | Инвентаризация | ''pages'' → ''inventory_items'' | ''quantity_initial'', ''quantity'', ''cogs'', ''item_sum'', ''item_fact_sum'', ''item.*'' | ''docnum'', ''formatted_date'', ''sum'', ''fact_sum'', ''quantity_sum'', ''fact_quantity_sum'', ''fact_sum_str''; расхождения — ''pages_diff'' | |
| | | Отгрузка со склада | ''shipment_items'' | ''index'', ''name'', ''article'', ''okei_code'', ''okei_name'', ''quantity'', ''price_without_vat'', ''amount_without_vat'', ''vat_rate'', ''vat_amount'', ''amount_with_vat'', ''kiz_codes'' | ''docnum'', ''docdate_readable'', ''total_amount_without_vat'', ''total_vat_amount'', ''total_amount_with_vat'', ''total_amount_with_vat_text'', ''shipment_items_count'', ''shipment_items_count_text'' | |
| | | Заказ покупателя | ''orders_item'' | ''index'', ''name'', ''article'', ''okei_name'', ''quantity'', ''price'', ''discount_formatted'', ''amount'', ''item.*'' | ''docnum'', ''docdate_readable'', ''total_amount'', ''total_amount_text'', ''order_discount'', ''shipping_cost_formatted'', ''total_amount_final'', ''total_amount_final_text'', ''orders_item_count'' | |
| | | Заказ поставщику | ''purchase_order_items'' | ''index'', ''quantity'', ''price'', ''amount'', ''item.*'' | ''docnum'', ''docdate_readable'', ''expected_date'', ''docdate_parts'', ''total_quantity'', ''total_amount'', ''total_amount_text'', ''items_count'', ''items_count_text'' | |
| | | Установка розничных цен | ''lines'' | ''price_old'', ''price_new'', ''price2_old'', ''price2_new'', ''item.*'' | ''docNum'', ''dateDay'', ''dateMonth'', ''dateYear'', ''pricelist.*'' | |
| | | Движение денег по главной кассе | — | — | ''doc_num'', ''doc_date'', ''doc_date_data.*'', ''amount'', ''amount_data.*'', ''typeName'', ''subtypeName'', ''responsibleUser.fioName'', ''cash_before_data.*'', ''cash_after_data.*'' | |
| | | Главная касса | — | — | ''cash'', ''doc_date'', ''doc_date_data.day'', ''.month_string'', ''.year'', ''cash_data.whole_part'', ''.fraction_part'', ''.string_format'' | |
| | | Кассовая книга | ''pages'' → ''items'' | ''index'', ''title'', ''in_amount'', ''out_amount'', ''account'' | ''doc_date'', ''doc_date_data.*'', ''organisation.*''; у страницы — ''page_number'' | |
| | | Инкассация главной кассы | ''note_set'' | ''den'', ''count'', ''sum'' | ''transaction.*'' — данные движения денег | |
| | | Z-отчет | ''returnReceipts'' | поля чека возврата | ''doc_num'', ''date'', ''time'', ''amountCash'', ''amountCard'', ''amountSbp'', ''amountReturn'', ''totalIncome'', ''totalIncomeText'', ''terminal.*'', ''openUser.fioName'', ''closeUser.fioName'' | |
| | |
| | Суммы с набором вариантов записи (''amount_data'', ''cash_before_data'', ''cash_data'') раскрываются через точку: ''.money_format'' — число с копейками, ''.string_format'' — прописью, ''.whole_part'' и ''.fraction_part'' — целая и дробная части отдельно. |
| | |
| | <WRAP info> |
| | **Подсказка.** В заказе покупателя и отгрузке со склада реквизиты продавца вынесены в отдельные поля: ''organisation_name'', ''organisation.inn'', ''organisation.kpp'', ''organisation_bank_name'', ''organisation_bik'', ''organisation_account'', ''organisation_corr_account''. Банк берётся из первого банковского счёта юридического лица. Покупатель в заказе — ''customer_name'', ''customer_contact'', ''customer.*''; в отгрузке — ''supplier_name'' и ''supplier.*''. |
| | </WRAP> |
| | |
| | В перемещении себестоимость (''cogs'', ''amount'') видит только сотрудник с правом ''console.movegoods.showcostprice''. Остальным в эти поля подставляется розничная цена. |
| | |
| | ==== Кассовые формы ==== |
| | |
| | Кассовые формы печатает касса, данные берутся из открытого чека или смены. Касса находит шаблон по системному имени, поэтому меняйте существующие шаблоны «Товарный чек», «КМ-3» и «КМ-6»: новый шаблон этого типа касса печатать не будет. |
| | |
| | <WRAP props> |
| | | ''company.name'', ''.inn'', ''.kpp'', ''.ogrn'', ''.okpo'' | Юридическое лицо | |
| | | ''company.warehouseName'', ''.address'', ''.phone'', ''.warehouse_time_open'', ''.warehouse_time_close'' | Точка продаж и часы работы | |
| | | ''user.shortFio'', ''user.shortName'', ''user.lastName'', ''.firstName'', ''.middleName'' | Кассир | |
| | | ''number'', ''date'', ''time'' | Номер, дата и время чека — товарный чек | |
| | | ''amount'', ''amount_text'' | Сумма чека со скидками — числом и прописью | |
| | | ''customer_fname'', ''customer_lname'', ''customer_phone'' | Покупатель | |
| | | ''items'' | Строки чека: ''index'', ''name'', ''quantity'', ''price'', ''discount'', ''discount_name'', ''amount'', ''amount_original'' | |
| | | ''inCash'', ''inCard'', ''inBonus'', ''moneyChange'', ''net_amount'', ''net_amount_text'' | Оплата: наличные, карта, баллы, сдача, сумма к оплате без баллов. Заполняются после оплаты чека | |
| | | ''shift.*'' | Данные смены в формах КМ-3 и КМ-6. Имена полей смотрите в стандартных шаблонах | |
| | </WRAP> |
| | |
| | ==== Письма ==== |
| | |
| | В шаблонах типа «EMail» — в тексте и в теме письма — работают эти переменные: |
| | |
| | <WRAP props> |
| | | ''%%{{first_name}}%%'', ''%%{{last_name}}%%'', ''%%{{middle_name}}%%'' | Имя, фамилия и отчество клиента | |
| | | ''%%{{email}}%%'', ''%%{{phone}}%%'' | Почта и телефон | |
| | | ''%%{{sales_amount}}%%'' | Сумма покупок клиента | |
| | | ''%%{{mobile_app_link}}%%'', ''%%{{mobile_invite_code}}%%'' | Ссылка на мобильное приложение и код приглашения | |
| | | ''%%{{shop_name}}%%'' | Название сети из настроек системы | |
| | </WRAP> |
| | |
| | Имя переменной пишите слитно со скобками, без пробелов: ''%%{{ first_name }}%%'' в письме не сработает. |
| | |
| | ===== Как править HTML-код шаблона ===== |
| | |
| | Редактор показывает шаблон в двух видах: как оформленную страницу и как HTML-код. Сложные формы — со множеством таблиц, циклами и условиями — правят в коде. |
| | |
| | <WRAP procedure> |
| | - Откройте шаблон на изменение и нажмите **«Источник»** — первую кнопку на панели редактора. Вместо страницы появится HTML-код. |
| | |
| | {{:hc:admin:print_forms:template-source.png?700|Шаблон «Счёт по заказу» в режиме «Источник»}} |
| | |
| | - Внесите правки в код. |
| | - Нажмите **«Источник»** ещё раз, чтобы вернуться к оформленной странице. Циклы и условия в ней показаны как текст в фигурных скобках — это нормально. |
| | - Нажмите **«Сохранить»** над редактором. |
| | - Откройте документ этого типа, нажмите **«Печать»**, выберите шаблон и проверьте результат. Чтобы отправить документ на принтер, нажмите **«Печатать»** над ним. |
| | </WRAP> |
| | |
| | <WRAP tip> |
| | **Совет.** Большой шаблон удобнее править во внешнем редакторе кода: скопируйте код из режима **«Источник»**, измените и вставьте обратно целиком. Копию исходного кода сохраните в файл — так шаблон можно вернуть. |
| | </WRAP> |
| | |
| | Что нужно знать о редакторе: |
| | |
| | <WRAP props> |
| | | **Вставка кода** | Вставляйте HTML-код только в режиме **«Источник»**. В обычном режиме редактор вставит его как текст, и вместо таблицы в документе окажутся теги | |
| | | **Переформатирование** | При переключении видов редактор выравнивает отступы и переносы строк по-своему. На документ это не влияет | |
| | | **Циклы в таблицах** | ''%%{{#each}}%%'' и ''%%{{/each}}%%'' ставьте внутри ''<tbody>'', вокруг строки ''<tr>'' целиком — как в примере выше | |
| | | **Парные конструкции** | Каждой открывающей части нужна своя закрывающая: ''%%{{#if}}%%'' — ''%%{{/if}}%%'', ''%%{{#each}}%%'' — ''%%{{/each}}%%'' | |
| | | **Перенос строки** | Клавиша Enter в обычном режиме ставит перенос строки ''<br>'', а не новый абзац | |
| | </WRAP> |
| | |
| | Оформление задаётся обычными средствами HTML и CSS: |
| | |
| | <WRAP props> |
| | | **Стили** | Блок ''<style> … </style>'' в начале шаблона или атрибут ''style'' у тега. Давайте классам свои имена с общей приставкой, например ''schet-'': стили шаблона действуют на всю страницу печати | |
| | | **Размер и поля страницы** | ''@media print { @page { size: A4 portrait; margin: 10mm; } }'' внутри блока ''<style>''. Для альбомной ориентации — ''A4 landscape'' | |
| | | **Размеры** | Ширину формы и колонок задавайте в миллиметрах: ''width: 190mm'' | |
| | | **Разрыв страницы** | ''<div style="page-break-after: always"></div>'' — всё, что ниже, печатается с новой страницы | |
| | | **Масштаб** | При печати документ уменьшается до 90 % | |
| </WRAP> | </WRAP> |
| |
| | В меню «Печать» документа нет нужной формы | Шаблон создан с другим типом или удалён | Проверьте **Тип** шаблона в списке; при необходимости создайте шаблон заново | | | В меню «Печать» документа нет нужной формы | Шаблон создан с другим типом или удалён | Проверьте **Тип** шаблона в списке; при необходимости создайте шаблон заново | |
| | В напечатанном документе пустые реквизиты | Не заполнены реквизиты юридического лица, банковский счёт или данные покупателя | Заполните справочники — см. [[hc:company:organisations|Юридические лица]] | | | В напечатанном документе пустые реквизиты | Не заполнены реквизиты юридического лица, банковский счёт или данные покупателя | Заполните справочники — см. [[hc:company:organisations|Юридические лица]] | |
| | В документе пусто на месте значения | В имени поля опечатка, такого поля у документа нет или оно не заполнено | Сверьте имя с блоком «Показать структуру данных документа для автоподстановки» | | | В документе пусто на месте значения | В имени поля опечатка, такого поля у документа нет или оно не заполнено | Сверьте имя с блоком «Показать структуру данных документа для автоподстановки» или с таблицей [[#документы|полей по типам]] | |
| | Таблица товаров пустая или выводит одну строку | Повреждена конструкция ''%%{{#each}} … {{/each}}%%'' | Откройте шаблон в режиме **«Источник»** и восстановите открывающую и закрывающую части | | | Таблица товаров пустая или выводит одну строку | Повреждена конструкция ''%%{{#each}} … {{/each}}%%'' или в ней неверное имя поля со строками | Откройте шаблон в режиме **«Источник»**, проверьте имя и восстановите открывающую и закрывающую части | |
| | | Блок «Показать структуру данных…» пуст | Документов такого типа ещё нет или это кассовая форма | Создайте документ этого типа или возьмите имена полей из раздела [[#переменные_по_типам_документов|Переменные по типам документов]] | |
| | | В письме клиенту остался текст ''%%{{#if …}}%%'' | В шаблонах писем работает только подстановка значений | Уберите циклы и условия, оставьте переменные из [[#письма|списка]] | |
| | | Вместо штрихкода пустое место или значок битой картинки | Нет доступа в интернет или значение не подходит для выбранного вида кода | Проверьте интернет на компьютере; для ''ean13'' значение должно состоять из 12–13 цифр | |
| | | Изменённый шаблон товарного чека не печатается на кассе | Создан новый шаблон, а касса печатает по стандартному | Внесите правки в существующий шаблон «Товарный чек» — см. [[#кассовые_формы|Кассовые формы]] | |
| | После правки форма «поехала» | Редактор изменил разметку таблиц | Верните шаблон из копии и правьте в режиме **«Источник»** | | | После правки форма «поехала» | Редактор изменил разметку таблиц | Верните шаблон из копии и правьте в режиме **«Источник»** | |
| | Поле **Тип** недоступно | Тип задаётся при создании и не меняется | Создайте новый шаблон нужного типа | | | Поле **Тип** недоступно | Тип задаётся при создании и не меняется | Создайте новый шаблон нужного типа | |