Публикация

При синхронизации мобильного приложения ошибка "Модели, указанные в манифесте мобильного приложения, имеют циклические связи"

Симптомы

Суть инцидента: пытаемся войти в мобильное приложение – происходит ошибка синхронизации.

Часть полученного баг-репорта:

ENG

Terrasoft-Mobile":"true","Accept":"application/json","Content-Type":"application/json","Authorization":"Cookie"},"method":"GET","disableCaching":false},"performanceCounter":{"startDate":"2015-07-24T08:26:56.702Z"}},"headers":{"X-Terrasoft-Mobile":"true","Accept":"application/json","Content-Type":"application/json","Authorization":"Cookie"},"method":"GET","disableCaching":false},"async":true},"requestId":8,"status":500,"statusText":"Internal Server Error","responseText":"Terrasoft.Mobile.MobileModelLoopException: Models specified in the mobile application manifest have circular relationships\r\n   at Terrasoft.Mobile.MobileModelTopologicalSorter.Sort()\r\n   at Terrasoft.Mobile.MobileModelGraph.Build()\r\n   at Terrasoft.Mobile.MobileManifest.BuildModelGraph()\r\n   at Terrasoft.Mobile.MobileUtilities.GetAppMetadata(HttpContextBase context)\r\n   at Terrasoft.WebApp.Mobile.Services.MobileCodeService.ProcessRequest(HttpContext context)\r\nЦикл: [Account,KnowledgeBase]","responseXML":null,"responseBytes":null} 

Calls sequence:

RUS

Type: Terrasoft.SyncException

Message: An error occurred while synchronizing

Type: Terrasoft.ServerException

Message: Server request returned error

Additional information: 

{"request":{"id":4,"headers":{"X-Terrasoft-Mobile":"true","Accept":"application/json","Content-Type":"application/json","Authorization":"Cookie","X-Requested-With":"XMLHttpRequest"},"options":{"url":"https://xxx.xxxxxx.xxx/0/Mobile/Services/MobileCodeService.ashx?functionName=getAppMetadata&workplaceCode=","scope":{"initialConfig":{"url":"https://xxx.xxxxxx.xxx/0/Mobile/Services/MobileCodeService.ashx?functionName=getAppMetadata&workplaceCode=","scope":{},"headers":{"X-Terrasoft-Mobile":"true","Accept":"application/json","Content-Type":"application/json","Authorization":"Cookie"},"method":"GET","disableCaching":false},"performanceCounter":{"startDate":"2015-07-23T09:41:43.803Z"}},"headers":{"X-Terrasoft-Mobile":"true","Accept":"application/json","Content-Type":"application/json","Authorization":"Cookie"},"method":"GET","disableCaching":false},"async":true},"requestId":4,"status":500,"statusText":"InternalServer Error","responseText":"Terrasoft.Mobile.MobileModelLoopException: Модели, указанные в манифесте мобильного приложения, имеют циклические связи\r\n at Terrasoft.Mobile.MobileModelTopologicalSorter.Sort()\r\n at Terrasoft.Mobile.MobileModelGraph.Build()\r\n at Terrasoft.Mobile.MobileManifest.BuildModelGraph()\r\n at Terrasoft.Mobile.MobileUtilities.GetAppMetadata(HttpContextBase context)\r\n at Terrasoft.WebApp.Mobile.Services.MobileCodeService.ProcessRequest(HttpContext context)\r\nЦикл: [Invoice,Contract]","responseXML":null,"responseBytes":null}

Решение

Для решения необходимо создать (Добавить - Исходный код) кастомный манифест (например, MobileApplicationManifestCustom) и указать язык "Javascript"

Для версии 7.6 и выше, в случае если MobileApplicationManifest в Custom нет - нужно замещать родительскую схему манифеста. Для этого можно войти в мастер мобильного приложения, выбрать "Настройку разделов" для рабочего места и нажать кнопку "Сохранить".

Если кастомный манифест уже присутствует, то открываем имеющий и добавляем следующий код:

Изображение удалено.

{
    "Loops": [
        ["Account", "KnowledgeBase"],
    ]
}

, где

["Account", "KnowledgeBase"], - связи, которые необходимо указать. Значение прописывается из значения.

Например (из баг-репорта):

Цикл: [Invoice,Contract]","responseXML":null,"responseBytes":null}

То, прописывать надо:

 

{
    "Loops": [
        ["Invoice”,”Contract "],                   
    ]
}

Если версия 7.5 и ниже, то также необходимо манифест (например,  MobileApplicationManifestCustom ) прописать в системной настройке MobileApplicationManifest:

Изображение удалено.

И проверить синхронизацию. Если с ошибкой, то скорее всего еще необходимо указать связи в кастомном манифесте. В результате в манифест добавляет до тех пор пока синхронизация не произойдет успешно.

Нравится

Поделиться

0 комментариев
Показать все комментарии