<< Click to Display Table of Contents >> Интеграция с внешними системами > Примеры настройки интеграции Как синхронизировать контрагентов |
Ситуация
Предположим, во внешней системе хранится список всех контрагентов. Дополнительно данные дублируются в Directum RX. После обновления списка необходимо синхронизировать записи во внешней системе и в Directum RX.
Важно. Синхронизацию данных рекомендуется выполнять в нерабочее время.
Решение
В Directum RX сведения о контрагентах хранятся в справочнике «Организации». Чтобы синхронизировать списки, нужно получить данные из справочника, данные из внешней системы, сравнить их и добавить недостающие записи в справочник. Для этого:
1.В среде разработки с установленной библиотекой Simple.OData.Client создайте приложение, например консольное. В коде задайте URL запроса, аутентификационные данные и обязательные заголовки. Подробнее см. раздел «Разработка консольного приложения для интеграции».
2.Получите список всех записей из справочника Организации. Для этого отправьте GET-запрос к справочнику. Пример кода для создания запроса:
// Создание запроса.
var geAllCompanies = await odataClient.For("ICompanies")
.FindEntriesAsync();
3.Из внешней системы получите актуальный список контрагентов и сравните со списком записей из Directum RX. В результате получится список контрагентов, информацию о которых нужно добавить в Directum RX.
4.Создайте недостающие записи в справочнике Организации. Это удобнее делать с помощью пакетного запроса. Объедините в нем POST-запросы, в которых них укажите обязательное свойство Название (Name). Также можно указать остальные доступные данные о контрагентах.
Пример кода для создания пакетного запроса:
// Создание пакетного запроса.
var odataBatchRequest = new ODataBatch(odataClientSettings);
// Создание записей справочника "Организации".
odataBatchRequest += async odataClient => await odataClient.For("ICompanies")
.Set(new { Name = "Компас, ООО" })
.InsertEntryAsync();
odataBatchRequest += async odataClient => await odataClient.For("ICompanies")
.Set(new { Name = "Авангард, ООО", Email = "mail@avan-gard.ru" })
.InsertEntryAsync();
...
// Выполнение пакетного запроса.
await odataBatchRequest.ExecuteAsync();
5.Запустите приложение.
В результате данные из внешней системы и записи справочника Организации синхронизируются. Чтобы синхронизация происходила автоматически, можно настроить периодический запуск приложения.
Работа с другими справочниками, например со справочником «Персоны», выполняется аналогично.
© Компания Directum, 2024 |