Показать сообщение отдельно
Старый 31.08.2019, 01:07   #1  
alicedr is offline
alicedr
Участник
 
173 / 43 (2) +++
Регистрация: 06.07.2012
Адрес: Канада
D365FO SysGlobalCache - expected type was int
Пытаюсь пронести значение переменных через 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 ошибки нет, однако значение не сохраняется.

Последний раз редактировалось alicedr; 31.08.2019 в 01:26.