Скрипт для авторегистрации документа\договора по процессной кнопке (пример скрипта для дизайнера)

Скрипт

import com.haulmont.cuba.core.Persistence
import com.haulmont.cuba.core.Transaction
import com.haulmont.cuba.core.app.DataService
import com.haulmont.cuba.core.global.AppBeans
import com.haulmont.cuba.core.global.LoadContext
import com.haulmont.cuba.core.global.TimeSource
import com.haulmont.thesis.core.app.NumerationService
import com.haulmont.thesis.core.entity.Doc
import com.haulmont.thesis.core.entity.Numerator
import com.haulmont.thesis.core.enums.DocOfficeDocKind
 
 
Doc doc = card;
Persistence persistence=AppBeans.get(Persistence.class)
Transaction tx=persistence.getTransaction();
try {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(AppBeans.get(TimeSource.class).currentTimestamp());
    NumerationService numerationWorker = AppBeans.get(NumerationService.class);
    LoadContext ctx = new LoadContext(Numerator.class);
    ctx.setQueryString("select e from df\$Numerator e where e.name = :name")
            .setParameter("name", "Договоры");
    Numerator numerator = AppBeans.get(DataService.class).load(ctx);
    HashMap params = new HashMap()
    params.put("doc", doc)
    String num = numerationWorker.getNextNumber(numerator, params);
    doc.setDocOfficeDocKind(DocOfficeDocKind.INTERNAL);
    doc.setRegistered(true);
    doc.setIncomeDate(AppBeans.get(TimeSource.class).currentTimestamp());
    doc.setIncomeNo(num);
    persistence.getEntityManager().merge(doc);
    tx.commit();
}finally {
    tx.end();
}