Описанные формулы предназначены для добавления в шаблоны конкретных документов, например Заказ покупателя.
Основным параметром является атрибут o, который указывает на обращение к текущему документу.
Формулы вывода полей с типом даты должны размещаться в шаблоне в отдельных ячейках с форматом Дата (форматирование ячеек в Excel).
Скачать шаблон отладки на примере документа Заказ покупателя.
- Основные поля
- Владелец-сотрудник
- Адрес доставки
- Склад
- Другие поля для Отгрузки
- Другие поля для Розничной продажи
- Канал продаж
- Договор
- Проект
- Валюта
- Сумма
- НДС
- Количество
- Дополнительные поля
Основные поля
Формула | Значение |
${o.name} | Номер |
${formatter.getExcelDate(o.moment)} | Дата |
${formatter.printIf(o.applicable, "Да")} | Проведено |
${o.state.name} | Статус |
${o.description} | Комментарий |
${formatter.operationWeight(o)} | Вес |
${formatter.operationVolume(o)} | Объем |
${o.addressFull} | Адрес доставки |
${formatter.getExcelDate(o.deliveryPlannedMoment)} | План. дата отгрузки или приемки (для заказов покупателей и заказов поставщикам) |
${formatter.getExcelDate(o.paymentPlannedMoment)} | План. дата оплаты (для счетов покупателям и счетов поставщиков) |
${o.incomingNumber} | Входящий номер (для счетов поставщиков, приемок, счетов-фактур полученных, полученных отчетов комиссионеров и входящих платежей) |
${formatter.getExcelDate(o.incomingDate)} | Входящая дата (для счетов поставщиков, приемок, счетов-фактур полученных, полученных отчетов комиссионеров и входящих платежей) |
${formatter.getExcelDate(o.updated)} | Дата последнего изменения |
${formatter.getExcelDate(o.created)} | Дата создания |
${o.externalCode} | Внешний код |
${o.id} | ID |
${formatter.qrCode(o)} | QR номера документа по размеру ячейки |
${formatter.qrCode(o, true)} | QR номера документа фиксированного размера |
Владелец
Формула | Значение |
${o.getOwnerName()} | Владелец-сотрудник |
${o.getGroupName()} | Владелец-отдел |
${formatter.printIfElse(o.getShared(), "Да", "Нет")} | Общий доступ |
Подробные поля из карточки сотрудника, указанного в документе в качестве Владельца-сотрудника:
Формула | Значение |
${formatter.getEmployeeForId(o.getOwnerId()).lastName} | Фамилия |
${formatter.getEmployeeForId(o.getOwnerId()).firstName} | Имя |
${formatter.getEmployeeForId(o.getOwnerId()).middleName} | Отчество |
${formatter.getEmployeeForId(o.getOwnerId()).phone} | Телефон |
${formatter.getEmployeeForId(o.getOwnerId()).email} | |
${formatter.getEmployeeForId(o.getOwnerId()).position} | Должность |
${formatter.getEmployeeForId(o.getOwnerId()).inn} | ИНН |
${formatter.getEmployeeForId(o.getOwnerId()).description} | Описание |
Адрес доставки
Формулы действуют в Заказах покупателей и Отгрузках.
Формула |
Значение |
${o.address.country.name} |
Страна |
${o.address.region.name} |
Регион |
${o.address.postalCode} |
Индекс |
${o.address.city} |
Город |
${o.address.street} |
Улица |
${o.address.house} |
Дом |
${o.address.apartment} |
Квартира или офис |
${o.address.addInfo} |
Другое |
${o.address.comment} |
Комментарий к адресу |
${o.addressFull} |
Полный адрес |
Организация и Контрагент
Формулы вывода данных из карточки контрагента/юр.лица опубликованы в отдельной статье.
Склад
Во описанных формулах используется атрибут source - это формулы вывода реквизитов склада, с которого отгружается товар (используется в документах раздела Продажи и в документе Перемещение в поле Со склада), измените на атрибут target, если требуется вывести реквизиты склада на который приходуется товар (используется в документах раздела Закупки и в документе Перемещение в поле На склад).
Формула | Значение |
${o.sourceStore.name} | Наименование |
${o.sourceStore.address} | Адрес |
${o.sourceStore.description} | Комментарий |
${o.sourceStore.code} | Код |
Адрес раздельно по полям | |
${o.sourceStore.detailedAddress.postalCode} |
Индекс |
${o.sourceStore.detailedAddress.country.name} |
Страна |
${o.sourceStore.detailedAddress.region.name} |
Регион |
${o.sourceStore.detailedAddress.city} |
Город |
${o.sourceStore.detailedAddress.street} |
Улица |
${o.sourceStore.detailedAddress.house} |
Дом |
${o.sourceStore.detailedAddress.apartment} |
Квартира или офис |
${o.sourceStore.detailedAddress.addInfo} |
Другое |
${o.sourceStore.detailedAddress.comment} |
Комментарий к адресу |
Другие поля (в документе Отгрузка)
Формула | Поле в элементе справочника |
${o.extension.consignee.requisite.agent.name} | Грузополучатель |
${o.extension.carrier.requisite.agent.name} | Перевозчик |
${o.extension.transportFacility} | Транспортное средство |
${o.extension.carNumber} | Номер автомобиля |
${o.extension.loadName} | Наименование груза |
${o.extension.goodPackQuantity} | Всего мест |
${o.extension.consignorIndication} | Указания грузоотправителя |
${o.idStateContract} | ИД гос. контракта |
Для документа Розничной продажи
Формула | Значение |
${formatter.printIfElse(o.noCashSum.sum > 0, formatter.printIfElse(o.sum.sum == o.noCashSum.sum, "Безналичными", "Смешанная"), "Наличными")} | Способ оплаты |
${o.retailStore.name} | Наименование точки продаж |
${o.retailStore.address} | Адрес точки продаж |
${(o.sum.sumInCurrency-o.noCashSum.sumInCurrency-o.prepaymentCashSum.sumInCurrency-o.prepaymentNoCashSum.sumInCurrency)/ 100} | Сумма наличными |
${o.noCashSum.sumInCurrency / 100} | Сумма безналичными |
${o.byCardSum.sumInCurrency / 100} | Сумма по карте |
${o.byQrCodeSum.sumInCurrency / 100} | Сумма по QR |
${o.prepaymentCashSum.sumInCurrency/ 100} | Сумма предоплаты наличными |
${o.prepaymentNoCashSum.sumInCurrency/ 100} | Сумма предоплаты б/н |
${o.prepaymentByQrCodeSum.sumInCurrency/ 100} | Сумма предоплаты по QR |
Канал продаж
Формула | Значение |
${o.salesChannel.name} | Название |
${o.salesChannel.type} | Тип |
${o.salesChannel.description} | Описание |
${o.salesChannel.ownerName} | Владелец-сотрудник канала |
${o.salesChannel.groupName} | Владелец-отдел канала |
Договор
Формула | Значение |
${o.contract.name} | Номер |
${formatter.getExcelDate(o.contract.moment)} | Дата |
${o.contract.sum.sum / 100} | Сумма |
${o.contract.code} | Код |
${o.contract.description} | Комментарий |
${o.contract.state.name} | Статус |
Проект
Формула | Значение |
${o.project.name} | Наименование |
${o.project.code} | Код |
${o.project.description} | Описание |
Валюта
Формула | Значение |
${o.currency.name} | Краткое наименование валюты документа |
${o.currency.fullName} | Полное наименование валюты документа |
${o.currency.code} | Цифровой код валюты документа |
${o.currency.letterCode} | Буквенный код валюты документа |
${o.rate} | Курс валюты по документу |
${o.currency.rate} | Курс валюты по справочнику |
Сумма
Формула | Значение |
${o.sum.sum / 100} | Сумма в валюте по умолчанию |
${o.sum.sumInCurrency / 100} | Сумма в валюте документа |
${formatter.printAmount(formatter.getCurrency(o), o.sum.sumInCurrency)} | Сумма в валюте документа прописью |
${formatter.calcTotalAmount(formatter.getServices(o)) / 100} | Сумма услуг |
${formatter.calcTotalAmount(formatter.getGoods(o)) / 100} | Сумма товаров |
${o.tail.payedSum / 100} | Оплачено |
${(o.sum.sum - o.tail.payedSum) / 100} | Осталось оплатить |
${formatter.allSum(o)/100} | Сумма без учета скидки |
${formatter.allDiscount(o)/100} | Сумма скидки |
${o.getPayments().iterator().next().incomingNumber} | Номер связанного платежа |
${o.getPayments().iterator().next().incomingDate} | Дата связанного платежа |
НДС
Формула | Значение |
${formatter.printIfElse(o.vatIncluded, "с НДС ", "без НДС")} | с НДС или без НДС |
${formatter.calcVat(o.getPositions())} | Сумма НДС |
${formatter.printAmount(formatter.getCurrency(o), formatter.calcVat(o.getPositions())*100)} | Сумма НДС прописью |
Количество
Формула | Значение |
${formatter.calcTotalQuantity(o)} | Количество по всем позициям |
${formatter.countServices(o)} | Количество услуг |
${formatter.calcTotalGoodsQuantity(o)} | Количество товаров |
${o.getPositions().size()} | Количество порядковых записей позиций |
${formatter.printNumber(o.getPositions().size())} | Количество порядковых записей прописью |
${formatter.getGoods(o).size()} | Количество порядковых записей товаров |
${formatter.printNumber(formatter.getGoods(o).size())} | Количество порядковых записей товаров прописью |
${formatter.getServices(o).size()} | Количество порядковых записей услуг |
${formatter.printNumber(formatter.getServices(o).size())} | Количество порядковых записей услуг прописью |
Дополнительные поля
Общим правилом оформления любой формулы дополнительного поля является структура
${formatter.findAttribute(o, "Наименование поля").value}
Основные параметры:
- o - указатель на источник данных - текущий документ.
- "Наименование поля" - точное наименование дополнительного поля в кавычках (с учетом регистра, дополнительных символов и т.д.).
- value - тип, по которому создано пользовательское поле.
Формула | Тип поля |
${formatter.findAttribute(o, "Наименование поля").valueString} | Строка |
${formatter.findAttribute(o, "Наименование поля").valueText} | Текст |
${formatter.findAttribute(o, "Наименование поля").value} | Ссылка |
${formatter.findAttribute(o, "Наименование поля").longValue} | Число целое |
${formatter.findAttribute(o, "Наименование поля").doubleValue} | Число дробное |
${formatter.findAttribute(o, "Наименование поля").timeValue} | Дата |
${formatter.printIfElse(formatter.findAttribute(o, "Наименование поля").booleanValue=="true", "Да", "Нет")} | Флажок |
Для поля по типу Файл используется два варианта вывода изображения, добавленного в поле в форматах *.png или *.jpg:
Формула | Формат вывода изображения |
${formatter.imageAttribute(o, "Наименование поля", true)} | В реальном размере |
${formatter.imageAttribute(o, "Наименование поля", false)} | По границам ячейки |
Для полей, созданных по типу Справочник (дополнительный или стандартный) возможно вывести не только отображаемые в поле наименования, но и другие поля из карточки элемента справочника.
Дополнительный справочник
Формула | Поле в элементе справочника |
${formatter.findAttribute(o, "Наименование поля").entityValue.name} | Наименование |
${formatter.findAttribute(o, "Наименование поля").entityValue.code} | Код |
${formatter.findAttribute(o, "Наименование поля").entityValue.description} | Описание |
Справочник - Контрагенты
Формула | Поле в элементе справочника |
${formatter.findAttribute(o, "Наименование поля").agentValue.name} | Наименование |
${formatter.findAttribute(o, "Наименование поля").agentValue.code} | Код |
${formatter.findAttribute(o, "Наименование поля").agentValue.contact.phones} | Телефон |
${formatter.findAttribute(o, "Наименование поля").agentValue.contact.email} |
По аналогии можно выводить другие поля из карточки контрагента, перечень которых опубликован в отдельной статье.
Справочник - Товары
Формула | Поле в элементе справочника |
${formatter.findAttribute(o, "Наименование поля").goodValue.name} | Наименование |
${formatter.findAttribute(o, "Наименование поля").goodValue.code} | Код |
${formatter.findAttribute(o, "Наименование поля").goodValue.productCode} | Артикул |
По аналогии можно выводить другие поля из карточки товара, перечень которых опубликован в отдельной статье.
Справочник - Склады
Формула | Поле в элементе справочника |
${formatter.findAttribute(o, "Наименование поля").warehouseValue.name} | Наименование |
${formatter.findAttribute(o, "Наименование поля").warehouseValue.address} | Адрес |
${formatter.findAttribute(o, "Наименование поля").warehouseValue.description} | Комментарий |
${formatter.findAttribute(o, "Наименование поля").warehouseValue.code} | Код |
Справочник - Проекты
Формула | Поле в элементе справочника |
${formatter.findAttribute(o, "Наименование поля").projectValue.name} | Наименование |
${formatter.findAttribute(o, "Наименование поля").projectValue.code} | Код |
${formatter.findAttribute(o, "Наименование поля").projectValue.description} | Описание |
Справочник - Договоры
Формула | Поле в элементе справочника |
${formatter.findAttribute(o, "Наименование поля").contractValue.name} | Номер |
${formatter.findAttribute(o, "Наименование поля").contractValue.moment} | Дата |
${formatter.findAttribute(o, "Наименование поля").contractValue.sum.sum / 100} | Сумма |
${formatter.findAttribute(o, "Наименование поля").contractValue.code} | Код |
${formatter.findAttribute(o, "Наименование поля").contractValue.description} | Комментарий |
${formatter.findAttribute(o, "Наименование поля").contractValue.state.name} | Статус |
Справочник - Сотрудники
Формула | Поле в элементе справочника |
${formatter.findAttribute(o, "Наименование поля").employeeValue.name} | ФИО |
${formatter.findAttribute(o, "Наименование поля").employeeValue.lastName} | Фамилия |
${formatter.findAttribute(o, "Наименование поля").employeeValue.firstName} | Имя |
${formatter.findAttribute(o, "Наименование поля").employeeValue.middleName} | Отчество |
${formatter.findAttribute(o, "Наименование поля").employeeValue.phone} | Телефон |
${formatter.findAttribute(o, "Наименование поля").employeeValue.email} | |
${formatter.findAttribute(o, "Наименование поля").employeeValue.description} | Описание |