В динамике 365 9.0 было довольно большое изменение о том, как получить доступ формы атрибутов и элементы управления - вместо Xrm.Page
имен, мы должны передать executionContext
функции и получить formContext
с помощью getFormContext()
функции. Это работает отлично, и я никогда не сталкивался с проблемой использования этого подхода.
Однако я еще не понял, как правильно обращаться к formContext
в функциях, вызываемых из ленты. В документации говорится, что это должно быть очень просто:
function myFunction(executionContext) {
var formContext = executionContext.getFormContext();
var focusFieldValue = formContext.ui.controls.get(PrimaryControlId).getAttribute().getValue();
}
Но это не говорит о том, как передать executionContext
к функции ленты. В обычных функциях есть флажок "Пропустить контекст выполнения в качестве первого параметра", но как насчет функций ленты? Есть параметры, которые мы можем передать этим функциям, но они просто GUID выбранных записей или тип выбранной записи или даже список объектов, но я не смог найти в документации, если есть параметр, равный executionContext
. Кто-нибудь уже решил эту проблему?
Также я знаю, что могу использовать Xrm.Page, и он будет работать (на данный момент по крайней мере...), но я хотел бы знать, как это можно сделать, используя последние рекомендации в версии 9.0
Обновление 1:
Согласно предложению Скотта и этой статье я передал PrimaryControl моей команде Ribbon, но, к сожалению, аргумент имеет тип Mscrm.FormControlLite
и у него нет функции getAttribute
или любой функции, которая позволила бы получить доступ к formContext (по крайней мере, я не вижу ничего полезного). Некоторые скриншоты из инструментов разработчика:
Таким образом, это похоже на какое-то представление формы, но, вероятно, не связано с formContext (я предполагаю, что если из списка записей будет вызываться лента, этот элемент может иметь тип сетки или что-то в этом роде)