Создать схему диалога
Создать форму диалога
Создать handler (JS-Обработчик операций)
Создать схему кнопок для подключения в представление
Создать форму и в RootMenu создать button и подключить к нему handler
Подключить форму к дескриптору
importClass(Packages.ru.intertrust.cmj.af.exceptions.AFDaoBadParameterException); importClass(Packages.ru.intertrust.cmj.rest.tunable.object.TunableObjectREST); importClass(Packages.ru.intertrust.cmj.rest.tunable.object.TunableObjectREST.Resource); importClass(Packages.ru.intertrust.cmj.rest.tunable.object.action.TunableOperation); importClass(Packages.ru.intertrust.cmj.tunable.object.AnyTunableObject); importClass(Packages.ru.intertrust.cmj.tunable.object.TunableObjectApplication); importClass(Packages.ru.intertrust.cmj.tunable.object.TunableObjectApplication.ClientContextKey); importClass(Packages.ru.intertrust.cmj.tunable.object.common.TunableObjectHelper); importClass(Packages.ru.intertrust.cmj.rest.tunable.object.action.OperationJScriptREST); importClass(Packages.ru.intertrust.cmj.rest.tunable.object.action.OperationJScriptREST.ReturnParamsResource); importClass(Packages.ru.intertrust.cmj.af.version.VersionApplication); importClass(Packages.ru.intertrust.cmj.dp.DPApplication); importPackage(Packages.ru.intertrust.cmj.af.utils); importPackage(Packages.ru.intertrust.cmj.af.tuning.impl); importPackage(Packages.ru.intertrust.cmj.af.tuning); importPackage(Packages.ru.intertrust.cmj.rest.tuning); importPackage(Packages.java.util); importPackage(Packages.java.lang); importClass(Packages.ru.intertrust.cmj.af.core.AFSession); importClass(Packages.ru.intertrust.cmj.af.tuning.TuningApplication); importClass(Packages.ru.intertrust.cmj.rest.version.VersionCardResource); importClass(Packages.ru.intertrust.cmj.rest.core.ExtendedResourceReference); importClass(Packages.ru.intertrust.cmj.rest.core.ReferenceFactory); importClass(Packages.ru.intertrust.cmj.rest.tuning.TuningHelper); importClass(Packages.ru.intertrust.cmj.tunable.object.history.TunableHistoryHelper); importClass(Packages.ru.intertrust.cmj.af.core.AFObject); importClass(Packages.ru.intertrust.cmj.dp.DPM); importClass(Packages.ru.intertrust.cmj.dp.DPMAdvInput); importClass(Packages.ru.intertrust.cmj.dp.DPMContracts); importClass(Packages.ru.intertrust.cmj.rest.misc.PermitHelper); importClass(Packages.ru.intertrust.cmj.rest.bf.BFHelper); importClass(Packages.ru.intertrust.cmj.rest.rkk.CopyRkkAction); importClass(Packages.ru.intertrust.cmj.rest.rkk.RkkResource); importClass(Packages.ru.intertrust.cmj.dp.operations.DPOperations); importClass(Packages.ru.intertrust.cmj.dp.fdnd.FDSharedToolsD); importClass(Packages.ru.intertrust.cmj.af.core.AFCMDomino); importClass(Packages.ru.intertrust.cmj.rest.tunable.object.processes.service.MonitorProcessingService); importClass(Packages.ru.intertrust.cmj.rest.tunable.object.processes.service.MonitorProcessingServiceImpl); importClass(Packages.ru.intertrust.cmj.tunable.object.processes.IProcessMonitor); importClass(Packages.ru.intertrust.cmj.rest.core.ResourceLink); importClass(Packages.ru.intertrust.cmj.af.utils.BeansUtils); importClass(Packages.ru.intertrust.cmj.af.so.SOApplication); importClass(Packages.java.lang.System); function processAsync(monitorId) { var monitorService = MonitorProcessingServiceImpl.get(); var paramsResource = monitorService.getData(monitorId); process_dialog1(monitorId); } /** * Обработка первого пакета данных с клиента. * @param paramsResource * @return ресурс первого диалога сценария */ function process_dialog1(monitorId) { var monitorService = MonitorProcessingServiceImpl.get(); var paramsResource = monitorService.getData(monitorId); var appTNObject = AFSession.get().getApplication(TunableObjectApplication.class); var id = paramsResource.tuning().getValues().get("selectIds").getValues().get(0).getValue(); var newids = new ArrayList(); var appdp = AFSession.get().getApplication(DPApplication.class); var obj = appdp.getEntityByUNID(id); var count = TunableObjectHelper.getAFInstanceValue(paramsResource.tuning().getValues().get("count")); var service = BeansUtils.getBean("BarcodeGenerationService"); var user = AFSession.get().currentUser().getBeard(); var barcode = ""; for (var i = 0; i < count; i++) { barcode = ""; var source = BFHelper.get(id); var rkk = source.composeRKKAsCopy().getRKK(); source.copyTo(rkk); rkk.content().getFileItems().clear(); rkk.content().setRichText(null); rkk.content().specification().setExemplarsCount(""); rkk.content().specification().setExemplarsPagesCount(""); rkk.content().specification().setAppendixesCount(""); rkk.content().specification().setAppendixesPagesCount(""); rkk.setSecurityStamp(source.getSecurityStamp()); TunableObjectHelper.putAFInstanceValue(rkk.tuning(), "barCode", "") rkk.setLinkAccessDisabled(source.isLinkAccessDisabled()); rkk.control().setControlled(source.control().isControlled()); rkk.control().setControllersExt(source.control().getControllers()); rkk.control().setDeadline(source.control().getDeadline()); rkk.control().setDeadlineExt(source.control().getDeadline()); rkk.control().setExecutionExt(source.control().execution()); rkk.registration().saveWithRegistration(); var document = AFCMDomino.getDocByUNID(rkk.getUNID()); barcode = service.generate(document, user); TunableObjectHelper.putAFInstanceValue(rkk.tuning(), "barCode", barcode); rkk.save(); newids.add(rkk.getUNID()) monitorService.updateProgress(monitorId, count, i+1); //актуализируем прогресс для пользователя } //новый диалог с вопросом о штрихкодах var message = appTNObject.composeDialog("CreateCopyBarcodeDialog", null, null, null); //AnyTunableObject TunableObjectHelper.putAFInstanceValue(message.tuning(), "messageText", "Распечатать штрихкоды для созданных документов?"); TunableObjectHelper.putAFInstanceValue(message.tuning(), "selectIds", newids); TunableObjectHelper.putAFInstanceValue(message, "counter", "answer2"); var resource = TunableObjectREST.Resource.create(message); //ссылка на следующий обработчик. Он будет уже синхронный для того, чтобы запустить процесс печати отчёта resource.link.add(new ResourceLink(OperationJScriptREST.OperationReference.REL, new OperationJScriptREST.OperationReference("regCopyesPrintReport", monitorId))); var params = new HashMap(); //Map<String, String> params.put("ids", id); monitorService.updateByHandler(monitorId, IProcessMonitor.Command.SHOW_DIALOG, "Входящие РКК созданы и зарегистрированы", resource, params); }