Пытаюсь пронести значение переменных через event handler используя SysGlobalCache в D365FO v10 PU24.
Столкнулась с забавной ситуацией: могу добавить в кеш несколько переменных, но только одного типа. Тип определяется первой добавленоой переменной, например, если в начале сессии я добавила в кеш переменную целого типа, то другие переменные целого типа, включая перечисления, добавляются, а вот, например, при попытке добавить строковую переменную выпадает ошибка "The expected type was int, but the encountered type was str."
Если первой добавить строку, то переменную целого типа добавить уже нельзя.
X++:
class SysGlobalCache365
{
/// <summary>
/// Runs the class with the specified arguments.
/// </summary>
/// <param name = "_args">The specified arguments.</param>
public static void main(Args _args)
{
SysGlobalCache sgc = classFactory.globalCache();
sgc.set(curUserId(), "ValueInt", 10);
sgc.set(curUserId(), "ValueInt2", 12);
sgc.set(curUserId(), "ValueEnum", NoYes::Yes);
sgc.set(curUserId(), "ValueStr","str"); //<--"The expected type was int, but the encountered type was str."
}
}
Это новое ограничение или баг? Аналогичная логика работает на ура в 2012:
X++:
static void SysGlobalCache2012(Args _args)
{
SysGlobalCache sgc = classFactory.globalCache();
sgc.set(curUserId(), "ValueInt", 10);
sgc.set(curUserId(), "ValueInt2", 12);
sgc.set(curUserId(), "ValueEnum", NoYes::Yes);
sgc.set(curUserId(), "ValueStr","str"); //<--"The expected type was int, but the encountered type was str." NO ERROR
}
Поправка: в 2012 ошибки нет, однако значение не сохраняется.