Устранение неполадок при начальной синхронизации

Эта статья предоставляет информацию по устранению неполадок для интеграции двойной записи между приложениями для управления финансами и операциями и Dataverse. А именно, содержатся сведения об устранении неполадок, которые могут возникнуть при начальной синхронизации.

Важно

Для устранения некоторых проблем, рассмотренных в этой статье, может потребоваться роль системного администратора или учетные данные администратора клиента Microsoft Azure Active Directory (Azure AD). В разделе для каждого выпуска объясняется, требуются ли конкретная роль или учетные данные.

Проверка ошибок начальной синхронизации в приложении для управления финансами и операциями

После включения шаблонов сопоставления статус сопоставлений должно быть Выполняется. Если статус Не выполняется, при первоначальной синхронизации произошли ошибки. Для просмотра ошибок выберите вкладку Сведения о начальной синхронизации на странице Двойная запись.

Ошибка на вкладке сведений о начальной синхронизации.

Выполнение начальной синхронизации невозможно: 400 Неправильный запрос

Роль, требуемая для исправления ошибки: системный администратор

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

([Неправильный запрос], Удаленный сервер вернул ошибку: (400) Неправильный запрос.), при экспорте AX произошла ошибка.

Ниже приведен пример полного сообщения об ошибке.

Dual write Initial Sync completed with status: Error. Following are the details:
Executed leg: From AX Financial dimensions to CRM msdyn_dimensionattributes
with exported records count: 0, ImportRecordsErrorCount: 0,
ImportRecordsInsertedCount: 0 and ImportRecordsUpdatedCount: 0
ErrorsDetails:
Dual write Initial sync failed
Message: ([Bad Request], The remote server returned an error: (400) Bad Request.), AX export encountered an error
Stacktrace: at
Microsoft.Dynamics.Integrator.QueryGenerator.AxClient.\<ExportAxPackage\>d__16.MoveNext()
in X:\\bt\\1024532\\repo\\src\\Core\\QueryGenerator\\AxClient.cs:line 265
\--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.D365.ServicePlatform.Context.ServiceContext.Activity.\<ExecuteAsync\>d__11\`2.MoveNext()
\--- End of stack trace from previous location where exception was thrown ---

Если эта ошибка происходит постоянно, и вы не можете выполнить начальную синхронизацию, выполните следующие действия для устранения проблемы.

  1. Выполните вход в виртуальную машину для приложения для управления финансами и операциями.
  2. Откройте консоль управления Microsoft.
  3. В области Службы убедитесь, что запущена служба структуры импорта и экспорта данных Microsoft Dynamics 365. Перезапустите ее, если она была остановлена, так как она необходима для исходной синхронизации.

Ошибка начальной синхронизации: 403 Запрещено

Во время начальной синхронизации может появиться следующее сообщение об ошибке:

([Запрещено], Удаленный сервер вернул ошибку: (403) Запрещено.), при экспорте AX произошла ошибка

Чтобы устранить проблему, выполните следующие действия.

  1. Войдите в приложение для управления финансами и операциями.
  2. На странице Приложения Azure Active Directory удалите клиент DtAppID и добавьте его снова.

Клиент DtAppID в списке приложений Azure AD.

Ошибки ссылки на себя или циклических ссылок во время первоначальной синхронизации

Если какое-либо сопоставление имеет ссылки на себя или циклические ссылки, вы можете получить сообщение об ошибке. Ошибки делятся на следующие категории:

Устранение ошибок в сопоставлении таблиц "Поставщики V2" с msdyn_vendors

Возможны ошибки первоначальной синхронизации для составления Поставщики V2 с msdyn_vendors, если у этих таблиц есть существующие строки, где есть значения в столбцах PrimaryContactPersonId и InvoiceVendorAccountNumber. Эти ошибки возникают в связи с тем, что InvoiceVendorAccountNumber — это столбец ссылки на себя, а PrimaryContactPersonId — это циклическая ссылка в сопоставлении поставщиков.

Полученные сообщения об ошибках будет иметь следующую форму.

Не удалось разрешить GUID для поля: <поле>. Подстановка не найдена: <значение>. Попробуйте использовать этот URL-адрес для проверки наличия ссылочных данных: https://focdsdevtest2.crm.dynamics.com/api/data/v9.0/<entity>?$select=<field>&$filter=<field> eq <value>

Далее приводятся некоторые примеры.

  • Не удалось разрешить GUID для поля: msdyn_vendorprimarycontactperson.msdyn_contactpersonid. Подстановка не найдена: 000056. Попробуйте использовать этот URL-адрес для проверки наличия ссылочных данных: https://focdsdevtest2.crm.dynamics.com/api/data/v9.0/contacts?$select=msdyn_contactpersonid.contactid&$filter=msdyn_contactpersonid eq '000056'
  • Не удалось разрешить GUID для поля: msdyn_invoicevendoraccountnumber.msdyn_vendoraccountnumber. Подстановка не найдена: V24-1. Попробуйте использовать этот URL-адрес для проверки наличия ссылочных данных: https://focdsdevtest2.crm.dynamics.com/api/data/v9.0/msdn_vendors?$select=msdyn_vendoraccountnumber,msdyn_vendorid&$filter=msdyn_vendoraccountnumber eq 'V24-1'

Если какие-то строки в таблице поставщика имеют значения в столбцах PrimaryContactPersonId и InvoiceVendorAccountNumber, выполните следующие шаги, чтобы завершить начальную синхронизацию.

  1. В приложении для управления финансами и операциями удалите столбцы PrimaryContactPersonId и InvoiceVendorAccountNumber из сопоставления, затем сохраните сопоставление.

    1. На странице сопоставление двойной записи для Поставщики V2 (msdyn_vendors) на вкладке Сопоставления таблиц в левом фильтре выберите Приложения для управления финансами и операциями.Поставщики V2. В правом фильтре выберите Sales.Vendor.

    2. Выполните поиск primarycontactperson, чтобы найти столбец источника PrimaryContactPersonId.

    3. Выберите Действия, затем выберите Удалить.

      Удаление столбца PrimaryContactPersonId.

    4. Повторите эти шаги для удаления столбца InvoiceVendorAccountNumber.

      Удаление столбца InvoiceVendorAccountNumber.

    5. Сохраните изменения в сопоставлении.

  2. Выключите отслеживание изменений для таблицы Поставщики V2.

    1. В рабочей области Управление данными выберите плитку Таблицы данных.

    2. Выберите таблицу Vendors V2.

    3. На панели операций выберите Параметры, затем выберите Отслеживание изменений.

      Выбор параметра отслеживания изменений.

    4. Выберите Отключить отслеживание изменений.

      Выбор

  3. Выполните начальную синхронизацию для сопоставления Поставщики V2 (msdyn_vendors). Начальная синхронизация должна успешно работать без ошибок.

  4. Выполните начальную синхронизацию для составления Контакты CDS V2 (контакты). Необходимо синхронизировать это сопоставление, если следует синхронизировать столбце основного контакта в таблице "поставщики", так как начальная синхронизация также должна быть выполнена для строк контактов.

  5. Добавьте столбцы PrimaryContactPersonId и InvoiceVendorAccountNumber обратно в сопоставление Поставщики V2 (msdyn_vendors), затем сохраните сопоставление.

  6. Выполните начальную синхронизацию еще раз для сопоставления Поставщики V2 (msdyn_vendors). Так как отслеживание изменений отключено, все строки будут синхронизированы.

  7. Снова включите отслеживание изменений для таблицы Поставщики V2.

Устранение ошибок в сопоставлениях таблиц "Клиенты V3" с "Организации"

Возможны ошибки первоначальной синхронизации для составления Клиенты V3 с Организации, если у этих таблиц есть существующие строки, где есть значения в столбцах ContactPersonID и InvoiceAccount. Эти ошибки возникают, так как что InvoiceAccount — это столбец ссылки на себя, а ContactPersonID — это циклическая ссылка в сопоставлении поставщиков.

Полученные сообщения об ошибках будет иметь следующую форму.

Не удалось разрешить GUID для поля: <поле>. Подстановка не найдена: <значение>. Попробуйте использовать этот URL-адрес для проверки наличия ссылочных данных: https://focdsdevtest2.crm.dynamics.com/api/data/v9.0/<entity>?$select=<field>&$filter=<field> eq <value>

Далее приводятся некоторые примеры.

  • Не удалось разрешить GUID для поля: primarycontactid.msdyn_contactpersonid. Подстановка не найдена: 000056. Попробуйте использовать этот URL-адрес для проверки наличия ссылочных данных: https://focdsdevtest2.crm.dynamics.com/api/data/v9.0/contacts?$select=msdyn_contactpersonid.contactid&$filter=msdyn_contactpersonid eq '000056'
  • Не удалось разрешить GUID для поля: msdyn_billingaccount.accountnumber. Подстановка не найдена: 1206-1. Попробуйте использовать этот URL-адрес для проверки наличия ссылочных данных: https://focdsdevtest2.crm.dynamics.com/api/data/v9.0/accounts?$select=accountnumber.account&$filter=accountnumber eq '1206-1'

Если какие-то строки в таблице клиента имеют значения в столбцах ContactPersonID и InvoiceAccount, выполните следующие шаги, чтобы завершить начальную синхронизацию. Этот подход можно использовать для всех готовых таблиц, таких как Организации и Контакты.

  1. В приложении для управления финансами и операциями удалите столбцы ContactPersonID и InvoiceAccount из сопоставления Клиенты V3 (организации), затем сохраните сопоставление.

    1. Перейдите на страницу сопоставление двойной записи для Клиенты V3 (организации) и перейдите на вкладку Сопоставления таблиц, в левом фильтре выберите Приложение для управления финансами и операциями.Клиенты V3. В правом фильтре выберите Dataverse.Account.

    2. Выполните поиск contactperson, чтобы найти столбец источника ContactPersonID.

    3. Выберите Действия, затем выберите Удалить.

      Удаление столбца ContactPersonID.

    4. Повторите эти шаги для удаления столбца InvoiceAccount.

      Удаление столбца InvoiceAccount.

    5. Сохраните изменения в сопоставлении.

  2. Выключите отслеживание изменений для таблицы Клиенты V3.

    1. В рабочей области Управление данными выберите плитку Таблицы данных.

    2. Выберите таблицу Клиенты V3.

    3. На панели операций выберите Параметры, затем выберите Отслеживание изменений.

      Выбор параметра отслеживания изменений.

    4. Выберите Отключить отслеживание изменений.

      Выбор

  3. Выполните начальную синхронизацию для составления Клиенты V3 (Организации). Начальная синхронизация должна успешно работать без ошибок.

  4. Выполните начальную синхронизацию для составления Контакты CDS V2 (контакты).

    Примечание

    Существуют два сопоставления с одинаковым именем. Обязательно выберите сопоставление со следующим описанием на вкладке Сведения: Шаблон двойной записи для синхронизации между FO.CDS Vendor Contacts V2 для CDS.Contacts. Требуется новый пакет [Dynamics365SupplyChainExtended].

  5. Добавьте столбцы InvoiceAccount и ContactPersonId обратно в сопоставление Клиенты V3 (Организации), затем сохраните сопоставление. Оба столбца InvoiceAccount и ContactPersonId теперь будут снова учитываться в режиме синхронизации в реальном времени. На следующем шаге вы выполните начальную синхронизацию для этих столбцов.

  6. Снова выполните начальную синхронизацию для составления Клиенты V3 (Организации). Поскольку отслеживание изменений отключено, данные для InvoiceAccount и ContactPersonId будут синхронизированы из приложения для управления финансами и операциями в Dataverse.

  7. Для синхронизации данных для InvoiceAccount и ContactPersonId из Dataverse в приложение для управления финансами и операциями необходимо использовать проект интеграции данных.

    1. В Power Apps создайте проект интеграции данных между таблицами Sales.Account и Приложения для управления финансами и операциями.Клиенты V3. Направление данных должно быть из Dataverse в приложение для управления финансами и операциями. Поскольку InvoiceAccount является новым атрибутом в двойной записи, можно пропустить начальную синхронизацию для него. Дополнительные сведения см. в разделе Интеграция данных в Dataverse.

      На следующей иллюстрации показан проект, который обновляет CustomerAccount и ContactPersonId.

      Проект интеграции данных для обновления CustomerAccount и ContactPersonId.

    2. Добавьте критерии компании в фильтр со стороны Dataverse, так что в приложении для управления финансами и операциями будут обновляться только строки, отвечающие условиям фильтра. Чтобы добавить фильтр, выберите кнопку фильтра. Затем, в диалоговом окне Изменение запроса можно добавить запрос фильтра, например _msdyn_company_value eq '<guid>'.

      [ПРИМЕЧАНИЕ] Если кнопка фильтра отсутствует, создайте запрос на поддержку, чтобы попросить у группы интеграции данных включить функцию фильтра в вашем клиенте.

      Если не ввести запрос фильтра для _msdyn_company_value, то все строки будут синхронизированы.

      Добавление запроса фильтра.

    Исходная синхронизация строк теперь завершена.

  8. В приложении для управления финансами и операциями снова включите отслеживание изменений для таблицы Клиенты V3.

Сбои первоначальной синхронизации на картах с более чем 10 полями поиска

При попытке выполнить начальную синхронизации для сопоставлений Клиенты V3 (Организации), Заказы на продажу или любую карту с более чем 10 полями подстановок, может появиться следующее сообщение об ошибке:

CRMExport: выполнение пакета завершено. Описание ошибки 5 попыток получить данные из https://xxxxx//datasets/yyyyy/tables/accounts/items?$select=accountnumber, address2_city, address2_country, ... (msdyn_company/cdm_companyid eq 'id')&$orderby=accountnumber asc завершились ошибкой.

Из-за ограничения поиска в запросе выполнение первоначальной синхронизации завершилось ошибкой, если сопоставление сущностей содержит более 10 поисков. Дополнительные сведения см. в разделе Извлечение связанных записей таблицы с запросом.

Чтобы устранить эту проблему, выполните следующие действия:

  1. Удалите из карты сущностей с двойной записью необязательные поля поиска, чтобы число поисков было равно 10 или меньше.
  2. Сохраните карту и выполните начальную синхронизацию.
  3. После успешного выполнения первоначальной синхронизации для первого шага необходимо добавить оставшиеся поля поиска и удалить поля поиска, которые были синхронизированы на первом шаге. Убедитесь, что число полей поиска равно 10 или меньше. Сохраните карту и выполните начальную синхронизацию.
  4. Повторяйте эти шаги, пока не будут синхронизированы все поля поиска.
  5. Добавьте все поля поиска обратно в сопоставление, сохраните карту и выполните сопоставление с пропуском начальной синхронизации.

Этот процесс включает сопоставление для режима реальной синхронизации.

Известная проблема во время первоначальной синхронизации почтового адреса стороны и электронных адресов стороны

При попытке выполнить начальную синхронизацию почтовых адресов стороны и электронных адресов стороны может появиться следующее сообщение об ошибке:

Не удалось найти номер субъекта в Dataverse.

Имеется диапазон, установленный в DirPartyCDSEntity в приложениях для управления финансами и операциями с целью фильтрации субъектов типа Физическое лицо и Организация. В результате первоначальной синхронизации сопоставления Стороны CDS – msdyn_parties стороны не будут синхронизироваться с другими типами, в том числе юридическим лицом и операционной единицей. Если начальная синхронизация выполняется для почтовых адресов стороны CDS (msdyn_partypostaladdresses) или Контакты субъекта V3 (msdyn_partyelectronicaddresses), может появиться сообщение об ошибке.

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

Возникают ли какие-либо проблемы со снижением производительности при выполнении первоначальной синхронизации с данными о клиентах или контактах?

Если выполняется начальная синхронизация для данных Клиент и выполняется сопоставление Клиент, а затем выполняется начальная синхронизация для данных Контакт, могут возникнуть трудности с производительностью во время операций вставки и обновления таблиц LogisticsPostalAddress и LogisticsElectronicAddress для адресов Контакт. Будут отслеживаться те же таблицы глобальных почтовых адресов и электронных адресов для CustCustomerV3Entity и VendVendorV2Entity, и двойная запись попытается создавать дополнительные запросы для записи данных с другой стороны. Если начальная синхронизация для Клиент уже выполнена, то при выполнении первоначальной синхронизации для данных Контакты остановите соответствующее сопоставление. Выполните то же самое для данных Поставщик. После завершения первоначальной синхронизации можно выполнить все сопоставления, пропуская начальную синхронизацию.

Невозможно синхронизировать тип данных Float с нулевым значением

При первоначальной синхронизации могут возникнуть сбои для записей, имеющих нулевое значение для поля цены, например Сумма фиксированной оплаты или Сумма в валюте проводки. В этом случае будет выведено сообщение об ошибке, подобное следующему примеру:

Произошла ошибка при проверке входных параметров: Microsoft.OData.ODataException: невозможно преобразовать литерал '000000' в ожидаемый тип 'Edm.Decimal',...

Проблема заключается в значении Языковой стандарт в разделе Форматы исходных данных в модуле Управление данными. Измените значение поля Языковой стандарт на en-us и повторите попытку.