| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
| product:api:faq [20.08.2025 11:03] – [Синхронизация данных с внешним приложением] Белугин Александр | product:api:faq [20.08.2025 11:09] (текущий) – [Синхронизация данных с внешним приложением] Белугин Александр |
|---|
| **Ответ** | **Ответ** |
| |
| Как можно было бы реализовать этот сценарий интеграции (точнее, как мы обычно подобные задачи делаем для клиентов): | * Для реализации изложенной ниже логики пишем скрипт на Power Shell, Python или мини-приложение на C# (.Net), но можно использовать и другие языки / средства запуска сценариев. |
| * Пишем скрипт на Power Shell, Python или мини-приложение на C# (.Net), но можно использовать и другие языки / средства запуска сценариев. | * Получаем данные из внешней системы (из файла, API или шины). Критически важно, чтобы у полученных из внешнего источника данных были уникальные идентификаторы по каждой задаче (уникальные для данного источника и однозначно идентифицирующие каждую задачу – далее «внешний ключ» задачи). |
| * Получаем данные из внешней системы (из файла, API или шины). Критически важно, чтобы у полученных из внешнего источника данных были уникальные идентификаторы по каждой задаче (уникальные для данного источника, однозначно идентифицирующие каждую задачу – «внешний ключ»). | * Сохраняем полученные данные в скрипте (или нашем приложении из п.1) в массив для обработки. |
| * Сохраняем полученные данные в скрипте (нашем приложении из п.1) в массив для обработки | * Последовательно обрабатываем хранящиеся в массиве задачи с использованием цикла. |
| * Последовательно обрабатываем полученные задачи в цикле | * Запросом в API ADVANTA (быстрее всего будет сделать вызов LINQ-запроса с параметром в виде «внешнего ключа») проверяем что в ADVANTA еще нет объекта, связанного с задачей из внешнего источника. Если это так, то создаем в ADVANTA через API новый объект и в скрытом поле этого объекта (надо его будет создать через админку) сохраняем значение «внешнего ключа» для будущих синхронизаций. Все полученные из внешней системы атрибуты задачи сохраняем в системные или кастомные реквизиты объекта в ADVANTA (или в справочники, при необходимости). Созданную в ADVANTA задачу (имеющую связь с внешней системой) желательно не изменять вручную, но декомпозировать на вложенные в нее подчиненные задачи/объекты и вести работу с ними (либо использовать горизонтальные связи с другими задачами в ADVANTA - новыми или уже существующими). |
| * Запросом в API ADVANTA (быстрее всего будет через вызов LINQ-запроса с параметром в виде «внешнего ключа») проверяем что в ADVANTA еще нет объекта, связанного с задачей из внешнего источника. Если это так, то создаем в ADVANTA через API новый объект и в скрытом поле этого объекта сохраняем значение «внешнего ключа» для будущих синхронизаций. Все полученные из внешний системы атрибуты задачи сохраняем в системные или кастомные реквизиты объекта в ADVANTA (или в справочники, при необходимости). Эту задачу в ADVANTA желательно не менять, а для декомпозиции создавать вложенные в нее подчиненные задачи/объекты. | * Если связанный с задачей из внешнего источника объект уже есть в ADVANTA (найдено совпадение по «внешнему ключу»), то полученные из внешней системы данные необходимо сохранить в объекте ADVANTA, но не затирая текущие значения его реквизитов, а сохранив полученные из внешней системы данные в отдельном табличном справочнике (нескольких справочниках, при необходимости). |
| * Если связанный с задачей из внешнего источника объект уже есть в ADVANTA (найдено совпадение по «внешнему ключу»), то полученные из внешней системы данные можем: | * По «связанным» с внешней системой объектам в ADVANTA можно создать контрольный отчет, для отображения расхождений в атрибутах задачи в ADVANTA и полученных по этой задаче данных из внешней системы. |
| * Сохранить в объекте ADVANTA, но не затирая текущие значения реквизитов, а сохранив полученные из внешней системы данные в отдельном табличном справочнике (возможно, нескольких справочниках). | * Можно дополнительно на уровне скрипта/приложения или через модуль ADVANTA «Цифровой помощник» (Триггеры) делать сравнение атрибутов, и в случае их изменения направлять уведомление (или создавать дискуссию в ADVANTA) на заинтересованных пользователей с информацией о произошедших изменениях. |
| * По «связанным» с внешней системой объектам в ADVANTA можно создать контрольный отчет, для отображения расхождений в атрибутах задачи в ADVANTA и полученных по этой задаче данных из внешней системы. | |
| * Можно дополнительно на уровне скрипта/приложения или через модуль ADVANTA «Цифровой помощник» (Триггеры) делать сравнение атрибутов, и в случае их изменения направлять уведомление (или создавать дискуссию в ADVANTA) на заинтересованных пользователей с информацией о произошедших изменениях. | |
| * С заданной регулярностью запускаем созданный скрипт (через cron в Linux или планировщик задач в Windows) | * С заданной регулярностью запускаем созданный скрипт (через cron в Linux или планировщик задач в Windows) |
| |
| Таким образом информация в объектах ADVANTA будет защищена от изменений, пришедших из внешней системы, но при этом можно будет сопоставлять непосредстве в ADVANTA данные из внешней системы и данные по связанным задачам и принимать решение о том, как изменять информацию или же просто мониторить отклонения между данными двух систем. | Таким образом информация в объектах ADVANTA будет защищена от изменений, пришедших из внешней системы, но при этом можно будет сопоставлять непосредственно в ADVANTA данные из внешней системы и данные по связанным задачам и принимать решение о том, как изменять информацию или же просто мониторить отклонения между данными двух систем. |
| |
| |