Заполнение, проведение и формирование проводок по документам за период#
Используется для массовой обработки документов, найденных по задаче расчёта и периоду. Скрипт отбирает документы по параметрам исходной задачи, заполняет каждый документ, переводит его в итоговое состояние и запускает формирование проводок.
Место применения: Сервис > Инструменты > Выполнить JEXL-скрипт
Внимание
Требует адаптации под конкретную задачу и тип документов. Перед запуском укажите актуальный идентификатор задачи в условии t.id = ..., проверьте условия отбора документов, правила перехода состояния и настройки формирования проводок.
Тип: JEXL-скрипт
//выполнение проводок
for (let rvx: sql(`select t.id from Asf_DeprCalcTask t where t.id = 255`).asList()) {
const idvDoc = rvx.id;
const vDocApi = Asf_DeprCalcTaskApi;
const ropDoc = vDocApi.load(idvDoc);
const vDepDocApi = Asf_DeprDocApi;
const idvDeprDocSummarySC = vDepDocApi.idSummarySC();
const idavBisObj = asJava(Asf_DeprCalcTaskBisObjApi.byParent(ropDoc).map(rop -> rop.idBisObj).toSet());
const idavAccKind = asJava(Asf_DeprCalcTaskAccKindApi.byParent(ropDoc).map(rop -> rop.idAccKind).toSet());
const mkSqlDate = (dp) -> `'${toString(dp, "dd.MM.yyyy")}"'::timestamp`;
const svSqlFromDate = mkSqlDate(ropDoc.dFrom);
const svSqlToDate = mkSqlDate(ropDoc.dTo);
const makeTrans = (ropDoc) -> {
const ropaSortedTots = Bs_TransObjTypeSettingApi
.getByObjectTypeActive(ropDoc.idObjectType).sortWith((ropA, ropB) -> ropA.nStateOrder < ropB.nStateOrder);
const gidvDoc = ropDoc.gid();
const avParam = asScala({:});
ropaSortedTots.foreach(ropTots -> {
// Btk_InfoLogPkg.info(toString(ropTots.nStateOrder));
Bs_TransPkg.procTransDoc(
gidvDoc, idpTransSetting = ropTots.id,
spOperationType = Bs_TransPkg.sMakeOperType(),
apParam = avParam,
bpWillValidateTrans = false
);
});
};
for (let idvBisObj: idavBisObj) {
for (let idvAccKind: idavAccKind) {
sql(`
select t.id
from Asf_DeprDoc t
where t.idBisObj = ${idvBisObj}
and t.idAccKind = ${idvAccKind}
and t.dTrans between ${svSqlFromDate} and ${svSqlToDate}
and t.idStateMC >= 100
and t.idSubClass = ${idvDeprDocSummarySC}
order by t.dTrans
`).foreach(rvx -> {
const ropDeprDoc = vDepDocApi.load(rvx.id);
vDepDocApi.fillDoc(ropDeprDoc);
commit();
vDepDocApi.setidState(ropDeprDoc, vDepDocApi.idDoneState());
commit();
makeTrans(ropDeprDoc);
commit();
});
}
}
}