8 800 250-04-32
+7 495 228-04-32

Работа с шаблонами

Шаблоны печатных форм представляют собой файлы в формате 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", в копейках

Оператор formatter и варианты его использования

Используется в случае необходимости задать условие вывода информации. Применяется с уточняющим параметром.

параметр описание
findAttribute поиск пользовательского поля
printIfElse выводить если верно, иначе…
printIf выводить если верно
printAmount выводить прописью
format выводить в формате
round округлять до 2х знаков
calc сумма по позициям

 

 

 

 

 

 

 

 

 

 

 

findAttribute

используется по схеме ${formatter.findAttribute(указатель на местонахождение поля, "название поля").формат поля}

Несколько примеров местонахождения поля

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}
Отобразит пользовательское поле Паспорт из справочника Сотрудники, если поле Сотрудник дополнительно добавлено в документ.


printIfElse

используется по схеме ${formatter.printIfElse(Условие, То, Иначе)}

Общие примеры

${formatter.printIfElse(o.sourceAgentRequisite.agent.payerVat, position.vat + "%", "Без НДС")}

Если в карточке контрагента Налогоплательщик, то печатаем значение налога +%, иначе печатаем "Без НДС"

${formatter.printIfElse(empty(o.targetAgentRequisite.legalTitle), o.targetAgentRequisite.agent.name, o.targetAgentRequisite.legalTitle)}

Если в карточке контрагента Пустое поле Полное наименование получателя, то печатаем Краткое название, иначе печатаем Полное.


printAmount

используется для вывода печати прописью

${formatter.printAmount(formatter.getCurrency(o), o.sum.sumInCurrency)}

Напечатать прописью (В валюте документа, сумму документа)


calc

используется для вывода суммы по конкретным параметрам документа.

Работает по схеме  ${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 - сумма на конец периода 

Автоматическое увеличение высоты строки

В ячейке с формулой Наименования товара устанавливается перенос по строкам. В той же строке, за таблицей, добавляется формула ${formatter.adjustRowHeight(workbook, sheet, hssfRow, А, В)}, где А это номер столбца начала ячейки с названием товара, а В количество столбцов в ширину.
       
  A   E      F    G H  I   J K L M N
1
2 Наименование
3 ${posishion.good} ${formatter.adjustRowHeight(workbook, sheet, hssfRow, 2, 4)}
4
5