7.7.6. Печатные формы#

7.7.6.1. Описание раздела#

Скрипты для автоматизации работы с печатными формами: запуск отчётов по кнопке, формирование читаемых имён файлов при экспорте и другие операции на основе параметров документа (бизнес-объект, период, номер и др.).

7.7.6.1.1. Запуск печатной формы по кнопке#

Используется чтобы привязать вызов печатной формы (RPT-отчёта) к пользовательской кнопке через обозреватель проекта. При нажатии запускается построение отчёта с передачей идентификаторов текущего объекта.

Место применения: Сущности > Обозреватель проекта > [Объект] > Редактор операций > [JEXL-операция] > Вкладка "JEXL-скрипт".

Тип: JEXL-скрипт

var idvOrderClass = selection ("idClass"); 
var idvOrder = selection.getVar ("id");
var NLong= function (number) { // локальная функция для преобразования Long в NLong
    return new ("ru.bitec.app.gtk.lang.NLong", number);
                              };
var spReportName = "Stm_InvoiceOut"; 
var dpReportVersionDate = sysDate ();
var vPostBuildAction = session
.sbtClassLoader()
.loadClass('ru.bitec.app.gtk.gl.postbuildaction.PostBuildAction')
.design();
var propertyMap = {
                   "idSrcObject" : NLong (idvOrder),
                   "idSrcClass"  : NLong (idvOrderClass)
                   };
var idObjectTypePrintForm = null;
Rpt_Lib.createReportExJexl (
spReportName, 
dpReportVersionDate,
vPostBuildAction,
asScala (propertyMap), 
idpObjectTypePrintForm
);

7.7.6.1.2. Формирование имени файла печатной формы#

Используется чтобы задать понятное и структурированное имя файла при экспорте печатной формы, заменяя системные или неинформативные значения. Поддерживает разные источники данных (например, связанный документ или сущность выполнения). Пропущенные параметры заменяются пробелами, что предотвращает ошибки.

Место применения скрипта: Отчёты > Печатные формы > [Печатная форма] > Редактировать > Режим формирования имени файла: JEXL > Вкладка "JEXL для формирования имени файла".

Тип: JEXL-скрипт

var ropEntityExec = null;
if ((IDSRCCLASS) == Wf_DocApi.idClass()) {
  var gid = Wf_DocApi.getGidLastVer(IDSRCOBJECT);
  ropEntityExec = Rpt_EntityExecApi.getByGidDocVer(gid);
} else {
  ropEntityExec = Rpt_EntityExecApi.load(IDENTITYEXEC);
}
var jParams = toJObject(ropEntityExec.jParams);
var nvMonth = " ";
if (isNotNull(jParams.getLong("flt_dperiodmonth"))) {
   nvMonth = toString(Clr_MonthApi.load(jParams.getLong("flt_dperiodmonth")).sCode);
}
"СНГ-Р1_№" + nvl(jParams.getString("flt_snumref"), " ") + "_за_" + nvMonth + "_" + nvl(toString(jParams.getNumber("flt_dperiodyear")), " ") + "_для_" + nvl(jParams.getString("flt_idbisobjmc"), " ");