|
![]() |
#1 |
Участник
|
Что делает метод SysQuery::isPackedOk()?
Здравствуйте.
Что делает метод SysQuery::isPackedOk()? НЕ нашел описания в мсдн и книгах. |
|
![]() |
#2 |
Участник
|
Откройте у себя в приложении его текст и посмотрите \Classes\SysQuery\isPackedOk
X++: /*MAN Method to test a packed queryrun container is legal. */ public static boolean isPackedOk(PackedQueryRun packed) { boolean ret; ret = packed && conlen(packed) > 0; return ret; } |
|
![]() |
#3 |
Участник
|
Во всяких RunBase'ах, если они предоставляют пользователю интерактивный QueryRun для выборки обрабатываемых данных (см. также showQueryValues()), принято паковать Query/QueryRun для маршаллинга между клиентом и сервером, а также сохранения в SysLastValue. Из-за изменений в упаковываемых параметрах по мере изменения класса может случиться так, что полученный из SysLastValue набор сохраненных параметров уже не содержит упакованный Query/QueryRun - вообще либо в ожидаемой позиции контейнера. Чтобы не словить из-за этого ошибку времени выполнения, в unpack() такого класса-наследника RunBase обычно проверяют, можно ли распаковать Query/QueryRun из параметров, для чего в первом приближении и предназначен указанный метод. Однако, у него есть один фатальный недостаток
![]() X++: ret = ret && typeOf(conPeek(packed, 1)) == Types::BLOB; |
|
![]() |
#4 |
Участник
|
спасибо.
|
|
|
|