У вас нет следующих разрешений на CodeUnit... Выполнить

У меня есть расширение AL, развернутое в локальной системе BC V20 (версия: GB Business Central 20.0 (платформа 20.0.37114.38150 + приложение 20.0.37253.38230)). Все работало нормально, пока не установили новую лицензию. Он также работает в облачной песочнице. Краткое описание цели расширения — предоставить пользовательскую страницу с подчиненной формой и связанным с ней отчетом.

Я считаю, что у меня правильно настроены разрешения в моем блоке кода: -

      Permissions = TableData TrialBalByDimParams = rimd,
          TableData TrialBalanceByDim = rimd,
          TableData "G/L Account" = r,
          TableData "G/L Entry" = r,
          TableData "General Ledger Setup" = r,
          TableData "Dimension Value" = r,
          TableData "Accounting Period" = r;

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

      permissionset 50000 CustomFuncsYW
{
Assignable = true;
Permissions = tabledata TrialBalanceByDim=RIMD,
tabledata TrialBalByDimParams=RIMD,
table TrialBalanceByDim=X,
table TrialBalByDimParams=X,
report CustomTrialBalanceByDim=X,
codeunit CustomTrialBalancePopulator=X,
page TrialBalanceByDim=X,
page TrialBalByDimParams=X,
query GleDv1=X;
}

В столбце «Действующие разрешения» столбец «Разрешение на выполнение» не содержит «Да» для моего CodeUnit (см. ниже). Это неправильно?

С точки зрения универсального кода у меня нет параметра Target в моем файле app.json. Насколько я понимаю, это означает, что его значение по умолчанию — «Облако».

Есть ли что-нибудь еще с кодом, которое я могу проверить, что может привести к тому, что он будет работать под одной лицензией, а не под другой?

Значит ли это, что это связано с лицензией? Если да, что я могу найти в файле лицензии, чтобы выявить проблему?

1 ответ

Это действительно похоже на проблему с лицензией. Чтобы устранить неполадки и точно определить проблему, попробуйте выполнить то же действие под учетной записью пользователя с разрешениями SUPER. Если та же ошибка все еще возникает, это устранит возможность неправильной настройки набора разрешений. Чтобы проверить лицензию, прежде всего, вы можете открыть .flf или .bclicense (в зависимости от того, что вы используете) в Блокноте и посмотреть раздел сводки. Он должен содержать список купленных объектов, например:

      ****************************************************************************
Name                                                                  Amount
----------------------------------------------------------------- ----------
Country Code: Great Britain                                                1
Dyn365 Business Central Codeunits (100)                                  100
Dyn365 Business Central Codeunits (each)                                  23
Dyn365 Business Central Pages (100)                                      300
Dyn365 Business Central Pages (each)                                      34
Dyn365 Business Central Premium                                           50
Dyn365 Business Central Premium - Upgrade                                100
Dyn365 Business Central Queries (100)                                    100
Dyn365 Business Central Reports (100)                                    100
Dyn365 Business Central Tables (10)                                       60
Dyn365 Business Central Tables (each)                                      4
Dyn365 Business Central XML Ports (100)                                  100

****************************************************************************

Я предполагаю, что ошибка, с которой вы столкнулись, относится к пользовательскому codeunit CustomTrialBalancePopulator. Поэтому в этом списке должен присутствовать хотя бы один пользовательский codeunit. Если эта часть в порядке, проверьте назначенные идентификаторы в разрешениях лицензии. В GB версии BC 20 есть отчет License Permissions, который вы можете запустить или просто открыть таблицу License Permissions в браузере:

      <BC Service URL>?table=2000000043

В этой таблице проверьте, назначено ли вашему идентификатору codeunit разрешение на выполнение. Если нет - лицензию следует пересоздать с правильным разрешением.

Правильный список объектов с пользовательскими разрешениями codeunit должен быть таким:

По поводу универсального кода - правильно, если в app.json не указано целевое значение, по умолчанию стоит "Облако".

Обратите внимание, что это назначение идентификатора объекта применимо только к BC в локальной среде, при развертывании в облаке эта проблема не требуется, поэтому оно работает для вас в облачной песочнице.

Другие вопросы по тегам