From 5173202799d129ee393ed67532872895378ee2f0 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Thu, 29 Dec 2022 15:43:28 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A6=D0=98=D0=A2=D0=9A-560=20-=20"=D0=98?= =?UTF-8?q?=D0=BD=D1=82=D0=B5=D0=B3=D1=80=D0=B0=D1=86=D0=B8=D1=8F=20=D1=81?= =?UTF-8?q?=20=D0=AD=D0=94=D0=9E=20=D0=94=D0=98=D0=90=D0=94=D0=9E=D0=9A":?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D0=B0=20"?= =?UTF-8?q?=D0=9A=D0=BE=D0=B4=20=D0=BF=D0=BE=D0=B4=D1=80=D0=B0=D0=B7=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F"=20=D0=BF=D1=80=D0=B8=20?= =?UTF-8?q?=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B5=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=81=D0=BE=D0=B2=20=D0=BD=D0=B0=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D1=8B=D1=85=20=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/diadoc.js | 49 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/modules/diadoc.js b/modules/diadoc.js index f9b6b97..2729df4 100644 --- a/modules/diadoc.js +++ b/modules/diadoc.js @@ -291,8 +291,13 @@ const beforeEvent = async prms => { checkAPIClientId(SDDAUTH_API_CLIENT_ID); //Формируем запрос try { + let sToken = null; //Токен доступа + let surl = prms.options.url; //Адрес запрос + let serverResp; //Результат запроса информации по текущей организации + let obj; //Тело запроса (JSON) + let rblMsg; //Буфер тела запроса + let sDepartmentId; //Идентификатор подразделения //Считаем токен доступа из контекста сервиса - let sToken = null; if (prms.service.sCtx) { sToken = prms.service.sCtx; } @@ -304,23 +309,49 @@ const beforeEvent = async prms => { headers: buildHeaders(SDDAUTH_API_CLIENT_ID, sToken), json: true }; - //Выполним запрос - let serverResp = await rqp(rqpoptions); - //Не удалось получить текущий ящик организации - if (!serverResp.Organizations[0].Boxes[0].BoxId) { - throw new Error("Не удалось получить ящик текущей организации"); + try { + //Выполним запрос + serverResp = await rqp(rqpoptions); + //Не удалось получить ящик получателя + if (!serverResp.Organizations[0].Boxes[0].BoxId) { + throw new Error(`Не удалось получить ящик текущей организации.`); + } + } catch (e) { + throw Error(`Не удалось получить ящик текущей организации: ${e.message}`); } - let surl = prms.options.url; - let obj; - let rblMsg; + //Сохраняем полученный ответ surl = surl + "?" + "boxId=" + serverResp.Organizations[0].Boxes[0].BoxId; + //Если задано подразделение + if (prms.options.sdepartment_name) { + if (prms.options.sdepartment_name == "Головное подразделение") { + sDepartmentId = "00000000-0000-0000-0000-000000000000"; + } else { + //Получим идентификатор подразделения + for (let i in serverResp.Organizations[0].Departments) { + //Если нашлось подразделение - запомним идентификато и выходим из цикла + if (serverResp.Organizations[0].Departments[i].Name == prms.options.sdepartment_name) { + sDepartmentId = serverResp.Organizations[0].Departments[i].DepartmentId; + break; + } + } + //Не удалось получить идентификатор подразделения + if (!sDepartmentId) { + throw new Error(`Не удалось получить идентификатор подразделения с наименованием "${prms.options.sdepartment_name}"`); + } + } + } //Если действие не "Документооборот" if (prms.options.saction != "DOCFLOWS") { + //Заполним параметры для отбора последних событий if (prms.options.aftereventid) { surl = surl + "&" + "afterEventId=" + prms.options.aftereventid; } else { surl = surl + "&" + "timestampFromTicks=" + prms.options.timestampfromticks; } + //Заполним идентификатор подразделения + if (prms.options.sdepartment_name && sDepartmentId) { + surl = surl + "&" + "departmentId=" + sDepartmentId; + } } else { if (prms.queue.blMsg) { //Конвертируем XML из "Парус 8" в понятный "ДИАДОК" JSON