|
![]() |
#1 |
Administrator
|
Цитата:
Попробуйте выполнить такой код. В нем reread честно отработает (вспоминаем, что в БД индекс состоит из двух полей - RecID и dataareaid, т.о. выбрать запись просто по RecId система не может - ей нужен еще dataareaid): X++: static void Job1(Args _args) { InventTable inventTable; ; inventTable.clear(); breakpoint; inventTable = null; inventTable.(fieldnum(InventTable, dataAreaId)) = 'dat'; inventTable.RecId = 5637147343; inventTable.reread(); breakpoint; }
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#2 |
Ищущий знания...
|
Цитата:
Сообщение от sukhanchik
![]() Достаточно посмотреть в отладчик, чтобы понять, что clear() устанавливает все поля в их "нулевое" или "начальное" состояние. В частности, попутно устанавливаются и системные поля (например, код компании).
Попробуйте выполнить такой код. В нем reread честно отработает (вспоминаем, что в БД индекс состоит из двух полей - RecID и dataareaid, т.о. выбрать запись просто по RecId система не может - ей нужен еще dataareaid): X++: static void Job1(Args _args) { InventTable inventTable; ; inventTable.clear(); breakpoint; inventTable = null; inventTable.(fieldnum(InventTable, dataAreaId)) = 'dat'; inventTable.RecId = 5637147343; inventTable.reread(); breakpoint; } если посмотреть в отладчике, после выполнения метода clear() поле DataAreaId остается со значением компании (то значение, которое было в выбранном курсоре). Затем ещё присваивается значение полю RecId. Получается перед выполнением метода reread() у нас и так заполнены два нужных поля. кстати, тут уже писалось, что если обнулить память для таблицы (выполнить присвоение переменной NULL), то reread() нормально работает. а в Вашем примере в начале вызывается clear(), а потом обнуляется переменная, поэтому все нормально отрабатывает ![]()
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#3 |
Ищущий знания...
|
вот так:
X++: static void Job1(Args _args) { InventTable inventTable; ; inventTable.clear(); breakpoint; //inventTable = null; inventTable.(fieldnum(InventTable, dataAreaId)) = 'dat'; inventTable.RecId = 5637147343; inventTable.reread(); breakpoint; } ![]()
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|