Шаблоны печатных форм представляют собой файлы в формате Microsoft Excel. Для создания нового шаблона мы рекомендуем взять за основу один из существующих и изменить его: добавить или убрать поля, прикрепить логотип, изменить внешний вид таблиц или поменять шрифт. Всё это возможно путем простого редактирования файлов Еxcel, которые хранятся в Моемскладе и доступны для скачивания из раздела Администрирование, закладка Шаблоны. Там предоставлено два раздела Документы и Отчеты.
К Документам относятся все печатные формы, выводимые из самого документа; к Отчетам шаблоны, печатающиеся из списка документов одного типа, а так же Остатки, Обороты, Прибыльность и другие отчеты.
После редактирования или создания новой печатной формы, добавьте её к существующим шаблонам в соответствующем разделе.
В качестве примера используется Заказ Покупателя.
Общим правилом оформление любой формулы является структура ${формула}
Основные параметры target - получатель, source - отправитель.
AgentRequisite - указатель на источник данных, это либо карточка контрагента, либо информация из закладки Моя компания.
Поле самих данных
| o.sourceAgentRequisite.agent.name | краткое наименование отправителя |
| o.sourceAgentRequisite.legalTitle | полное наименование отправителя |
| o.sourceAgentRequisite.INN | ИНН отправителя |
| o.sourceAgentRequisite.KPP | КПП отправителя |
| o.sourceAgentRequisite.OKPO | ОКПО отправителя |
| o.sourceAgentRequisite.legalAddress | юридический адрес отправителя |
| o.sourceAgentRequisite.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 | автоматическая скидка контрагента |
| Заказ на покупку у организации: |
${o.targetAgentRequisite.agent.name} ${o.targetAgentRequisite.legalAddress} тел. ${o.targetAgentRequisite.agent.contact.phones} |
| От покупателя: |
${o.sourceAgentRequisite.agent.name} ${o.sourceAgentRequisite.legalAddress} тел. ${o.sourceAgentRequisite.agent.contact.phones} |
Для вывода списка позиций документа используются формулы цикла (перебора).
Общим правилом создания цикла является наличие функции его начала и описания, а так же функции окончания.
В шаблонах документов существует три варианта циклов: по позиции, по товару, по услугам.
| <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> |
перебор данных будет осуществлен только по Услугам |
| o.name |
номер документа |
| o.applicable | проведен |
| o.moment | дата и время документа |
| o.state.name | состояние документа |
| o.sum.sum | сумма по позициям документа, в копейках |
| o.description | комментарий |
| o.sourceStore.name | склад |
| position.good.name | краткое наименование товар |
| position.good.description | описание товара |
| position.good.uom.name | единица измерения |
| position.good.uom.code | код единицы измерения |
| position.basePrice.sum | цена с НДС без скидки, в копейках |
| position.discount | скидка, в процентах |
| position.price.sum | цена с НДС с учетом скидки, в копейках |
| position.quantity | количество единиц товара |
| position.vat | НДС, в процентах |
| position.consignment.name | наименование серии |
| position.consignment.description | описание серии |
| position.goodPack.uom.name | название упаковки (может быть пустым) |
| position.goodPack.quantity | упаковка (может быть пустым) |
| position.good.supplier.name | поставщик |
| position.good.minimumBalance |
неснижаемый остаток |
| metadata.columns.name | название колонки прайс-листа |
| positions.good.name | краткое наименование товара |
| positions.cells.get("Столбец 1").sum.sum | цена для колонки "Столбец 1", в копейках |
Используется в случае необходимости задать условие вывода информации. Применяется с уточняющим параметром.
| параметр | описание |
| findAttribute | поиск пользовательского поля |
| printIfElse | выводить если верно, иначе… |
| printIf | выводить если верно |
| printAmount | выводить прописью |
| format | выводить в формате |
| round | округлять до 2х знаков |
| calc | сумма по позициям |
Несколько примеров местонахождения поля
| o | текущий документ |
| o.sourceAgentRequisite.agent | карточка контрагента |
| position.good | карточка товара |
| position.consignment | карточка серии |
| findAttribute | дополнительное поле |
Примеры формата поля
| valueString |
тип "Строка" |
| timeValue | тип "Дата" |
| booleanValue | тип "Флажок" |
| entityValue.name | тип "Селектор" на Пользовательский справочник |
| employeeValue.name | тип "Селектор" на Стандартный справочник |
| longValue | тип "Целое число" |
| doubleValue | тип "Дробное число" |
Общие примеры
${formatter.findAttribute(o.sourceAgentRequisite.agent, "Регион") .valueString}
Отобразит пользовательское, текстовое поле Регион, в карточке контрагента.
${formatter.findAttribute(o, "Менеджер") .entityValue.name}
Отобразит пользовательское поле Менеджер, добавленное в документ и выбираемое селектором.
${formatter.findAttribute(formatter.findAttribute(o, "Сотрудник").employeeValue, "Паспорт").valueString}
Отобразит пользовательское поле Паспорт из справочника Сотрудники, если поле Сотрудник дополнительно добавлено в документ.
Общие примеры
${formatter.printIfElse(o.sourceAgentRequisite.agent.payerVat, position.vat + "%", "Без НДС")}
Если в карточке контрагента Налогоплательщик, то печатаем значение налога +%, иначе печатаем "Без НДС"
${formatter.printIfElse(empty(o.targetAgentRequisite.legalTitle), o.targetAgentRequisite.agent.name, o.targetAgentRequisite.legalTitle)}
Если в карточке контрагента Пустое поле Полное наименование получателя, то печатаем Краткое название, иначе печатаем Полное.
${formatter.printAmount(formatter.getCurrency(o), o.sum.sumInCurrency)}
Напечатать прописью (В валюте документа, сумму документа)
Работает по схеме ${formatter.calcПараметр(местонахождение параметра)}
Примеры параметров
| TotalGoodsQuantity | Количество товаров документа |
| Vat | Сумма НДС документа |
| TotalQuantity | Количество товаров и услуг документа |
| TotalAmount | Сумма денег |
Примеры
${formatter.calcTotalGoodsQuantity(o)}
Выведет сумму всех товаров документа
${formatter.calcTotalAmount(o)}
Выведет сумму денег документа
Пример:
| Наименование | Количество | Цвет |
|---|---|---|
| <jx:forEach items="${o.positions}"var="position"> | ||
| ${position.good.name} | ${position.quantity} | ${formatter.findAttribute(position.good, "Цвет").entityValue.name} |
| </jx:forEach> |
Данный шаблон переберет все позиции документа построчно, указав для каждой Наименование ( название товара), Колличество и Цвет, который указывается в дополнительном поле карточки товара и выбирается селектором из пользовательского справочника.
Ссылки с суффиксом Ref содержат ссылки на поля:
id - идентификатор name - имя code - код
Например: goodRef.name
goodRef - товар productCode - артикул товара uomName - имя единицы измерения quantity - доступно reserve - зарезервировано stock - на складе sumTotal - сумма на складе по закупке saleAmount - сумма на складе по цене продажи (из карточки товара) category - категория
Поля совпадают с полями отчета Остатки
goodRef - товар productCode - артикул uomName - название единицы измерения out.quantity - количество out.amount - сумма закупочная out.sellAmount - сумма продажная (фактическая - из документов отгрузки)
name - имя контрагента beginningBalance - количество на начало периода finalBalance - количествона конец периода incoming - приход по клиенту outcoming - расход по клиенту
goodRef - товар productCode - артикул товара consignmentName - имя партии consignmentId - идентификатор партии defaultConsignment - маркер партии по умолчанию storeName - название склада storeId - идентификатор склада uomName - наименование единицы измерения category - папка в справочнике товаров type - тип документа deliveryName - имя документа agentName - имя контрагента quantity - количество amount - сумма moment - дата документа
goodRef - товар productCode - артикул товара consignmentName - имя партии consignmentId - идентификатор партии defaultConsignment - маркер партии по умолчанию storeName - название склада storeId - идентификатор склада uomName - наименование единицы измерения category - папка в справочнике товаров start.quantity - количество на началопериода start.amount - сумма на начало периода in.quantity - количество в приходе in.amount - сумма в приходе out.quantity - количество в отгрузке out.amount - сумма в отгрузке end.quantity - количество на конец периода end.amount - сумма на конец периода
goodRef - товар productCode - артикул товара uomName - наименование единицы измерения category - папка в справочнике товаров start.quantity - количество на началопериода start.amount - сумма на начало периода in.quantity - количество в приходе in.amount - сумма в приходе out.quantity - количество в отгрузке out.amount - сумма в отгрузке end.quantity - количество на конец периода end.amount - сумма на конец периода
| |
A | B | C | D | E | F | G | H | I | J | K | L | M | N |
| 1 | ||||||||||||||
| 2 | Наименование | |||||||||||||
| 3 | ${posishion.good} | ${formatter.adjustRowHeight(workbook, sheet, hssfRow, 2, 4)} | ||||||||||||
| 4 | ||||||||||||||
| 5 | ||||||||||||||
© 2007—2012 ООО «Логнекс» складская программа учета товаров