Создание шаблонов печатных форм

Шаблоны печатных форм представляют собой файлы в формате Microsoft Excel.

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

Чтобы скачать шаблон перейдите в нужный вам список документов, нажмите меню Печать и выберите пункт Настроить.

Справа появиться окно Настройка шаблонов. Там представлено два раздела Отчет и Документ. К Документу относятся все печатные формы, выводимые из самого документа; к Отчету - шаблоны, печатающиеся из списка документов одного типа, а так же Остатки, Обороты, Прибыльность и другие отчеты.

После редактирования или создания новой печатной формы, добавьте её к существующим шаблонам в соответствующем разделе Печать - Настроить.

Печать из Документа

Реквизиты получателя и отправителя.

В качестве примера используется Заказ Покупателя.

Общим правилом оформление любой формулы реквизитов компании является структура 

${o.targetAgentRequisite.legalTitle}

Основные параметры: 

  • targetAgentRequisite или sourceAgentRequisite- указатель на источник данных, это либо карточка контрагента (кто создает документ source), либо информация из закладки Юр. лица (кто получатель документа target).
  • legalTitle - сама переменная, которую требуется вывести на печать.

Готовые примеры: 

${o.targetAgentRequisite} краткое наименование 
${o.targetAgentRequisite.legalTitle} полное наименование 
${o.targetAgentRequisite.INN} ИНН 
${o.targetAgentRequisite.KPP} КПП 
${o.targetAgentRequisite.OKPO} ОКПО 
${o.targetAgentRequisite.legalAddress} юридический адрес 
${o.targetAgentRequisite.actualAddress} фактический адрес 
${o.targetAgentRequisite.agent.contact.phones} телефон 
${o.targetAgentRequisite.account.bankName} наименование банка
${o.targetAgentRequisite.account.bankLocation} местонахождение банка 
${o.targetAgentRequisite.account.BIC} БИК банка 
${o.targetAgentRequisite.account.accountNumber} расчетный счет 
${o.targetAgentRequisite.account.correspondentAccount} корреспондентский счет 
${o.targetAgentRequisite.discount} скидка контрагента
${o.targetAgentRequisite.autoDiscount} автоматическая скидка контрагента

 Во всех формулах используется target - это формулы получателя документа, измените на source, если требуется напечатать реквизит отправителя документа.

Общие формулы документа

Общие

${o.name} Наименование
${formatter.getExcelDate(o.moment)} Дата
${o.project.name} Проект
${o.contract.name} Договор
${formatter.getExcelDate(o.contract.moment)} Дата договора
${formatter.printIf(o.applicable, "Да")} Проведение
${o.state.name} Статус
${o.description} Комментарий
${formatter.getExcelDate(o.deliveryPlannedMoment)} План. дата отгрузки/приёмки
${formatter.getExcelDate(o.paymentPlannedMoment)}

План. дата оплаты

Сотрудник 

${o.employee.name} Фамилия ИО
${o.employee.lastName} Фамилия
${o.employee.firstName} Имя
${o.employee.middleName} Отчество
${o.employee.phone} Телефон
${o.employee.email} E-mail
${o.employee.description} Описание

Суммы

${o.sum.sum / 100} Сумма 
${o.sum.sumInCurrency / 100} Сумма в валюте документа
${formatter.printAmount(formatter.getCurrency(o), o.sum.sumInCurrency)} Сумма прописью
${formatter.calcVat(o.getPositions())} Сумма НДС
${formatter.printAmount(formatter.getCurrency(o), formatter.calcVat(o.getPositions())*100)} Сумма НДС прописью
${formatter.calcTotalAmount(formatter.getServices(o)) / 100} Сумма услуг
${formatter.calcTotalAmount(formatter.getGoods(o)) / 100} Сумма товаров
${formatter.calcTotalQuantity(o)} Количество позиций
${formatter.getGoods(o).size()} Количество порядковых записей товаров
${formatter.printNumber(formatter.getGoods(o).size())} Количество порядковых записей товаров прописью
${formatter.getServices(o).size()} Количество порядковых записей услуг
${formatter.printNumber(formatter.getServices(o).size())} Количество порядковых записей услуг прописью
${o.getPositions().size()} Всего наименований
${formatter.printNumber(o.getPositions().size())} Всего наименований прописью
${formatter.countServices(o)} Количество услуг
${formatter.calcTotalGoodsQuantity(o)}  Количество товаров
${formatter.operationWeight(o)} Суммарный вес
${formatter.operationVolume(o)} Суммарный объем

Для документа розницы

${formatter.printIfElse(o.tail.nonCash,"Картой","Наличными")} Способ оплаты
${o.retailStore.name} Наименование точки продаж
${o.retailStore.address} Адрес точки продаж

Склад

${o.sourceStore.name} Наименование
${o.sourceStore.code} Код
${o.sourceStore.contact.address} Адрес
${o.sourceStore.description} Комментарий

Разное

${o.currency.name} Валюта документа
${o.customerOrder.name} Связанный заказ
${formatter.getCurrentUser().name} Текущий пользователь
${o.getPayments().iterator().next().incomingNumber} Номер связанного платежа
${o.getPayments().iterator().next().incomingDate} Дата связанного платежа
${formatter.printIfElse(o.vatIncluded, "с НДС  ", "без НДС")}  Сумма включает НДС
${o.currency.rate} Курс

Позиций документа

Формула

Значение
${position.good.name} краткое наименование товара
${position.good.code} код товара
${position.good.productCode} артикул товара
${position.good.description} описание товара
${position.good.uom.name} единица измерения
${position.good.uom.code} код единицы измерения
${position.basePrice.sum} цена с НДС без скидки, в копейках
${position.discount} скидка, в процентах
${position.price.sum} цена с НДС с учетом скидки, в копейках
${position.quantity} количество единиц товара
${position.vat} НДС, в процентах
${position.good.salePrice} цена продажи из карточки товара
${position.good.buyPrice} цена закупки из карточки товара
${position.consignment.name} наименование серии
${position.consignment.description} описание серии
${position.goodPack.uom.name} название упаковки (может быть пустым)
${position.goodPack.quantity} упаковка (может быть пустым)
${position.good.supplier.name} поставщик
${position.good.minimumBalance} неснижаемый остаток

Создание цикла. Перебор по позициям

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

<jx:forEach items="${o.positions}" var="position">
</jx:forEach>
по всем позициям документа
<jx:forEach items="${formatter.getGoods(o)}" var="position">
</jx:forEach>
только по Товарам
<jx:forEach items="${formatter.getServices(o)}" var="position">
</jx:forEach>

только по Услугам

Еще есть вопросы? Отправить запрос

Комментарии