31.08.2019, 01:07 | #1 |
Участник
|
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." } } 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 } Последний раз редактировалось alicedr; 31.08.2019 в 01:26. |
|
31.08.2019, 02:52 | #2 |
Участник
|
Мы сейчас как раз работаем на кешем для DIAL Интеграции, но пока такого не видели.
Кстати удивлись, что можно целый буфер в кеш сохранять |
|
31.08.2019, 04:14 | #3 |
Участник
|
Может лучше Disposable context https://community.dynamics.com/365/f...hod-signatures ? Его хоть чистить ненадо и он более "типизированный"
|
|
|
За это сообщение автора поблагодарили: trud (2), alicedr (1). |
01.09.2019, 20:57 | #4 |
Участник
|
Это обёртка вокруг статических полей для передачи параметров. А случае кеширования она не нужна можно использовать статические поля напрямую. Только следует учесть что сами по себе статические поля в d365fo довольно медленная штука по сравнению с обращением к просто полями. Но быстрее чем лазить в базу
|
|
01.09.2019, 22:09 | #5 |
Участник
|
Ну да, автор вроде писал что он хочет переносить поля между евентхендлерами используя кеш. Обертка или просто статические поля, все лучше чем глобал кеш..
|
|
02.09.2019, 10:09 | #6 |
Участник
|
Цитата:
Просто в DAX2012 есть проверка на тип последующих значений, а до DAX2012 было добавление без проверок - в результата что-то добавлялось, какие-то совсем разные типы выдавали ошибку, даже если что-то добавлялось, не факт, что это потом можно было нормально считать. Последний раз редактировалось Raven Melancholic; 02.09.2019 в 10:12. |
|
02.09.2019, 18:51 | #7 |
Участник
|
Да, абсолютно логичное поведение для map - теперь это очевидно, хотя изначально отсутствие ошибки в 2012 сбило с толку.
Спасибо Skuull за подсказку про disposable context! |
|
|
|