Дерево страниц
Skip to end of metadata
Go to start of metadata

Постановка задачи


Инструмент: Палитра XML

Статус

ЧЕРНОВИК

РазделДействия
Комментарий

Реализация

<Сопроводительная информация>



  1. Создать схему диалога

  2. Создать форму диалога

  3. Создать handler (JS-Обработчик операций)

  4. Создать схему кнопок для подключения в представление

  5. Создать форму и в RootMenu создать button и подключить к нему handler

  6. Подключить форму к дескриптору


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);

}