Создание заявок на поступление книг#
Создает документы заявок на поступление и их позиции для библиотечного модуля.
Место применения: Сервис > Инструменты > Выполнить JEXL-скрипт
Внимание
Скрипт привязан к объектам конкретного модуля и требует проверки на целевой базе. Перед запуском проверьте идентификаторы, SQL-запросы, API-классы и условия обработки.
Тип: JEXL-скрипт
var idvDepOwner = Bs_DepOwnerApi.findByMnemoCode("0000");
var idvPerson1 = Bs_PersonApi.findByMnemoCode("0200");
var idvPerson2 = Bs_PersonApi.findByMnemoCode("0201");
sql(`
select regexp_replace(ssystemname, 'lbr', '') as "sNum"
from btk_module bm
where ssystemname like 'lbr__'
`).foreach(function(r){
var list = [["1", [["1", "978-5-04-121401-2"]]]];
var apiDoc = Btk_ClassApi.getApiBySimpleClassName("Lbr" + r.sNum + "_InOrder");
var apiDet = Btk_ClassApi.getApiBySimpleClassName("Lbr" + r.sNum + "_InOrderDet");
var apiBook = Btk_ClassApi.getApiBySimpleClassName("Lbr" + r.sNum + "_Book");
for (t : list){
var svCode = t.0;
var idv = apiDoc.findByMnemoCode(svCode);
if(idv == null){
var rop = apiDoc.insert();
apiDoc.setsNumDoc(rop, svCode);
apiDoc.setsNumDocBMs_dz(rop, 1B);
apiDoc.setidLibrarian(rop, idvPerson1);
apiDoc.setidPerson(rop, idvPerson2);
apiDoc.setidDepOwner(rop, idvDepOwner);
for (det : t.1) {
var sDetCode = det.0;
if(sDetCode != null){
var ropDet = apiDet.insertByParent(rop);
apiDet.setsNumber(ropDet, sDetCode);
apiDet.setsNumberBMs_dz(ropDet, 1B);
var idvBook = apiBook.findByMnemoCode(det.1);
if(idvBook != null){
apiDet.setidBook(ropDet, idvBook);
}
}
}
}
}
commit();
}) ;