Доступна более новая версия документации данного модуля.

См. последнюю версию

Разработка компонента импорта настроек организации из системы оператора ЭДО

Компонент импорта предоставляет модулю зависящий не от оператора ЭДО слой получения списка подразделений организации, контрагентов и ящиков, зарегистрированных в системе оператора ЭДО. Информация, предоставляемая данным компонентом, требуется для определения связей между контрагентами, зарегистрированными в системе Docsvision, и контрагентами организации в системе оператора ЭДО.

Данный компонент должен реализовывать программный интерфейс IImportService. Методы реализуемого интерфейса вызываются из компонента Справочника настроек операторов ЮЗДО при загрузке подразделений и ящиков организации, контрагентов и ящиков контрагентов.

Реализация данного компонента, получающего информацию от оператора Диадок, содержится в сборке DocsVision.Edi.Runtime.Diadoc.dll (добавляется при установке Коннектор к Диадок).

Фактическая реализация компонента импорта сильно зависит от метода взаимодействия с оператором ЭДО и предоставляемого им API.

Далее приведена часть исходного кода (только публичные методы) примера реализации интерфейса ImportService для работы с оператором Диадок.

public class ImportService : IImportService
{
    private DiadocSession DiadocSession (1)
    {
        get
        {
            if (diadocSession != null && !diadocSession.IsAlive())
                diadocSession = null;

            if (diadocSession == null)
            {
                if (!settings.ContainsKey(DiadocSettings.ApiUrl))
                    throw Error.InvalidOperation(Resources.NoConnectionData);
                if (!settings.ContainsKey(DiadocSettings.Login))
                    throw Error.InvalidOperation(Resources.NoConnectionData);

                diadocSession = new DiadocSession(
                    settings[DiadocSettings.ApiUrl],
                    settings[DiadocSettings.Login],
                    settings[DiadocSettings.Password],
                    settings.ContainsKey(DiadocSettings.ProxyUrl) ? settings[DiadocSettings.ProxyUrl] : null,
                    settings.ContainsKey(DiadocSettings.ProxyLogin) ? settings[DiadocSettings.ProxyLogin] : null,
                    settings.ContainsKey(DiadocSettings.ProxyPassword) ? settings[DiadocSettings.ProxyPassword] : null);
            }

            return diadocSession;
        }
    }


  (2)

    public void Initialize(Dictionary<string, string> settings) (3)
    {
        this.settings = settings; (4)
    }


    public ItemCollection<Unit> ImportUnits() (5)
    {
        return DiadocSession.ImportUnits();
    }

    public ItemCollection<Partner> ImportPartners() (6)
    {
        return DiadocSession.ImportPartners();
    }
}
1 Точка подключения к API Диадок.
2 Реализация интерфейса IImportService.
3 Реализация метода инициализации компонента.
4 Загрузка настроек.
5 Реализация метода получения от оператора ЭДО списка организаций.
6 Реализация метода получения от оператора ЭДО списка контрагентов.

Далее приведена часть исходного кода класса DiadocSession, показывающая принцип взаимодействия с оператором ЭДО через его API на примере загрузки данных организации.

internal class DiadocSession {
 private readonly DiadocApi diadocApi;
 private readonly string authToken;

 public DiadocSession(string apiUrl, string login, string password) {

(1)
  WinApiCrypt diadocCrypt = new WinApiCrypt();
  diadocApi = new DiadocApi(DefaultClientId, apiUrl, diadocCrypt);
  authToken = diadocApi.Authenticate(login, password);
 }

(2)
 public ItemCollection<Unit> ImportUnits() {
  ItemCollection<Unit> units = new ItemCollection<Unit>();

(3)
  units.AddRange(diadocApi.GetMyOrganizations(authToken).Organizations.Select(GetUnit));
  return units;
 }

(4)
}
1 Подключаемся и авторизуемся в Диадок.
2 Получаем данные подразделений организации.
3 Получаем подразделения организации с помощью метода GetMyOrganizations API Диадок метод.
4 Часть кода пропущена.