<< Click to Display Table of Contents >> Разработка > Примеры разработки > Документы Как запретить получение документов от конкретного филиала из сервиса обмена |
Ситуация
В нашей организации «ООО, Юпитер» настроен обмен с контрагентом «ООО, Экспедитор» и его филиалом «ООО, Новый мир» через сервис обмена Диадок.
Необходимо настроить обмен так, чтобы документы поступали только от головной организации. Документы филиала отправляются напрямую в учетную систему, поэтому загружать их в Directum RX не нужно.
Решение
В Directum RX есть стандартная серверная функция FilterLiteMessages(), которая получает «легкие» сообщения с данными из сервиса обмена и фильтрует их. Подробнее см. раздел «Получение сообщений в фоновом режиме».
Чтобы задать свои настройки фильтрации данных из сервиса обмена, необходимо переопределить функцию:
1.В своем решении перекройте модуль «Электронный обмен» (Sungero.Exchange) и добавьте зависимость от него. Если зависимости не указаны, при публикации могут возникнуть ошибки.
2.Чтобы изменить стандартную логику, в редакторе перекрытого модуля переопределите серверную функцию FilterLiteMessages(). Для этого измените ее модификатор на override и доработайте код:
/// <summary>
/// Отфильтровать «легкие» сообщения с информацией из сервиса обмена.
/// </summary>
/// <param name="businessUnitBox">Абонентский ящик нашей организации.</param>
/// <param name="messages">Сообщения.</param>
/// <returns>Список отфильтрованных сообщений.</returns>
public override List<NpoComputer.DCX.Common.IMessage> FilterLiteMessages(ExchangeCore.IBusinessUnitBox businessUnitBox, List<NpoComputer.DCX.Common.IMessage> messages)
{
var filteredMessages = new List<NpoComputer.DCX.Common.IMessage>();
// ИД и код филиала контрагента в Диадок, с которым настроен обмен.
var diadocSenderBoxId = "405b3fb0af6a4215b89bab864ff8aca0@diadoc.ru";
var diadocSenderDepartmentCode = "6e9ab7bd-576d-4fc2-9a1e-9282ec8bebb3";
foreach (var message in messages)
{
// Запретить обрабатывать входящие документы от филиала «ООО, Новый мир» с ИД=6e9ab7bd-576d-4fc2-9a1e-9282ec8bebb3.
if (string.Equals(message.Sender?.BoxId, diadocSenderBoxId) && string.Equals(message.FromDepartment?.Id, diadocSenderDepartmentCode))
continue;
filteredMessages.Add(message);
}
return filteredMessages;
}
3.Опубликуйте разработку.
В результате из сервиса обмена Диадок в Directum RX смогут загружаться и отправляться на обработку документы только от головной организации контрагента, а от филиала документы загружаться не будут.
© Компания Directum, 2024 |