diff --git a/modules/diadoc.js b/modules/diadoc.js index 505c34d..6b7f94b 100644 --- a/modules/diadoc.js +++ b/modules/diadoc.js @@ -482,10 +482,10 @@ const afterEvent = async prms => { //Получим список уникальных ящиков for (let i in resp.Events) { if (resp.Events[i]?.Message) { - if (!boxIds.boxIds.find(box => box.boxId === resp.Events[i]?.Message.FromBoxId)) { + if ((!boxIds.boxIds.find(box => box.boxId === resp.Events[i]?.Message.FromBoxId)) && (resp.Events[i]?.Message.FromBoxId)) { boxIds.boxIds.push({ boxId: resp.Events[i]?.Message.FromBoxId }); } - if (!boxIds.boxIds.find(box => box.boxId === resp.Events[i]?.Message.ToBoxId)) { + if ((!boxIds.boxIds.find(box => box.boxId === resp.Events[i]?.Message.ToBoxId)) && (resp.Events[i]?.Message.ToBoxId)) { boxIds.boxIds.push({ boxId: resp.Events[i]?.Message.ToBoxId }); } } @@ -777,6 +777,60 @@ const afterDepartmentIdGet = async prms => { }; }; +//Обработчик "До" отправки запроса на получение списка документов в сообщении к сервису "ДИАДОК" +const beforeDocumentsByMessageIdGet = async prms => { + //Получим ключ разработчика + let sAPIClientId = getAPIClientId(prms.options.nCompany, prms.options.nJurPers); + //Проверим ключ разработчика + checkAPIClientId(sAPIClientId); + //Формируем запрос + try { + //Считаем токен доступа из контекста сервиса + let sToken = null; + if (prms.service.sCtx) { + sToken = prms.service.sCtx; + } + //Если не достали из контекста токен доступа - значит нет аутентификации на сервере + if (!sToken) return { bUnAuth: true }; + //Собираем и отдаём общий результат работы + return { + options: { + headers: buildHeaders(sAPIClientId, sToken), + simple: false + } + }; + } catch (e) { + throw Error(e); + } +}; + +//Обработчик "После" отправки запроса на получение списка документов в сообщении к сервису "ДИАДОК" +const afterDocumentsByMessageIdGet = async prms => { + let resu = null; + //Действие выполнено успешно + if (prms.optionsResp.statusCode == 200) { + try { + //Разберем ответ сервера + resp = JSON.parse(prms.queue.blResp.toString()); + //Преобразуем JSON ответ сервиса "ДИАДОК" в XML, понятный "Парус 8" + resu = toXML({ root: resp }); + } catch (e) { + throw new Error(`Неожиданный ответ сервера ЭДО "ДИАДОК". Ошибка интерпретации: ${e.message}`); + } + } else { + //Если пришел текст ошибки + if (prms.queue.blResp) { + throw new Error(`Неожиданный ответ сервера ЭДО "ДИАДОК": ${prms.queue.blResp.toString()}`); + } else { + throw new Error('Сервер ЭДО "ДИАДОК" не вернул ответ'); + } + } + //Возврат результата + return { + blResp: Buffer.from(resu) + }; +}; + //----------------- // Интерфейс модуля //----------------- @@ -794,3 +848,5 @@ exports.afterDocLoad = afterDocLoad; exports.beforeDocDelete = beforeDocDelete; exports.beforeDepartmentIdGet = beforeDepartmentIdGet; exports.afterDepartmentIdGet = afterDepartmentIdGet; +exports.beforeDocumentsByMessageIdGet = beforeDocumentsByMessageIdGet; +exports.afterDocumentsByMessageIdGet = afterDocumentsByMessageIdGet;