From ac7870e8841fcbbf2a23aff5600f3024a7efcfe6 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Mon, 2 Feb 2026 13:50:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A6=D0=98=D0=A2=D0=9A-1032=20-=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=D0=BE=D1=80=D0=B8=D1=82=D0=B5=D1=82=D0=BD=D1=8B?= =?UTF-8?q?=D0=B9=20=D0=BF=D0=BE=D0=B4=D0=B1=D0=BE=D1=80=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BD=D1=82=D1=80=D0=B0=D0=B3=D0=B5=D0=BD=D1=82=D0=B0=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=BA=D0=BE=D0=B4=D1=83=20=D1=83=D1=87=D0=B0=D1=81?= =?UTF-8?q?=D1=82=D0=BD=D0=B8=D0=BA=D0=B0=20=D0=AD=D0=94=D0=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/diadoc.js | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/modules/diadoc.js b/modules/diadoc.js index 5bee4ad..f55bfea 100644 --- a/modules/diadoc.js +++ b/modules/diadoc.js @@ -136,15 +136,23 @@ const buildHeaders = (sAPIClientId, sToken = null) => ({ }); //Отбор организций -const getOrganizations = organizations => { +const getOrganizations = (organizations, sNumEdo = null) => { //Параметры отбора let isRoaming = false; let isActive = true; //Итоговая выборка let organization = { Organizations: [] }; - //Найдем активную организацию не в роуминге - organization.Organizations[0] = organizations.Organizations.find(org => (org.IsRoaming === isRoaming) && (org.IsActive === isActive)); - //Если не удалось получить организацию не в роуминге + //Задан код участника ЭДО + if (sNumEdo) { + //Найдем активную организацию не в роуминге + organization.Organizations[0] = organizations.Organizations.find(org => (org.FnsParticipantId === sNumEdo)); + }; + //Не удалось получить организацию по коду участника ЭДО + if (!organization.Organizations[0]) { + //Найдем активную организацию не в роуминге + organization.Organizations[0] = organizations.Organizations.find(org => (org.IsRoaming === isRoaming) && (org.IsActive === isActive)); + }; + //Не удалось получить организацию не в роуминге if (!organization.Organizations[0]) { //Найдем активную организацию organization.Organizations[0] = organizations.Organizations.find(org => (org.IsActive === isActive)); @@ -185,7 +193,7 @@ const getOrganization = async (sSrvRoot, headers, nInn, nKpp) => { }; //Получение ящика организации по ИНН/КПП контрагента -const getOrganizationBoxId = async (sSrvRoot, headers, nInn, nKpp) => { +const getOrganizationBoxId = async (sSrvRoot, headers, nInn, nKpp, sNumEdo) => { //Параметры запроса let rqpOptions; let serverResp; @@ -205,9 +213,9 @@ const getOrganizationBoxId = async (sSrvRoot, headers, nInn, nKpp) => { serverResp = await rqp(rqpOptions); try { //Получим организацию не в роуминге (или единственную организацию в роуминге) - serverResp = getOrganizations(serverResp); + serverResp = getOrganizations(serverResp, sNumEdo); if (!serverResp?.Organizations[0]) { - throw Error(`Не удалось получить ящик получателя для контрагента с ИНН: ${nInn} и КПП: ${nKpp}`); + throw Error(`Не удалось получить ящик получателя для контрагента с ${sNumEdo ? `кодом участника ЭДО: ${sNumEdo}, ` : ""}ИНН: ${nInn} и КПП: ${nKpp}`); } } catch (e) { //Получим головную организацию по ИНН/КПП @@ -329,7 +337,7 @@ const beforeMessagePost = async prms => { throw Error(`Ошибка при получении ящика текущей организации: ${e.message}`); } //Получим ящик получателя - organization = await getOrganizationBoxId(prms.service.sSrvRoot, buildHeaders(sAPIClientId, sToken), optionsData.inn_cs, optionsData.kpp_cs); + organization = await getOrganizationBoxId(prms.service.sSrvRoot, buildHeaders(sAPIClientId, sToken), optionsData.inn_cs, optionsData.kpp_cs, optionsData.num_cs); obj.ToBoxId = organization.BoxId; //Если не заполнен идентификатор подразделения и при получении ящика удалось его подобрать if ((!obj.ToDepartmentId) && (organization.DepartmentId)) { @@ -844,9 +852,9 @@ const afterDepartmentIdGet = async prms => { try { try { //Получим организацию не в роуминге (или единственную организацию в роуминге) - organization = getOrganizations(JSON.parse(prms.queue.blResp.toString())); + organization = getOrganizations(JSON.parse(prms.queue.blResp.toString()), optionsData.sNumEdo); if (!organization) { - throw Error(`Не удалось получить ящик для контрагента с ИНН: ${optionsData.nINN} и КПП: ${optionsData.nKPP}`); + throw Error(`Не удалось получить ящик для контрагента с ${optionsData.sNumEdo ? `кодом участника ЭДО: ${optionsData.sNumEdo}, ` : ""}ИНН: ${optionsData.nINN} и КПП: ${optionsData.nKPP}`); } } catch (e) { //Получим ключ разработчика