AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.12.2010, 13:50   #1  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Скорее наоборот clear() оставляет в курсоре какой-то мусор, который мешает работе reread
Достаточно посмотреть в отладчик, чтобы понять, что 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;
}
__________________
Возможно сделать все. Вопрос времени
Старый 15.12.2010, 13:59   #2  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от 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(), а потом обнуляется переменная, поэтому все нормально отрабатывает
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 15.12.2010, 14:02   #3  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
вот так:
X++:
static void Job1(Args _args)
{
    InventTable inventTable;
    ;
    inventTable.clear();
    breakpoint;
    //inventTable = null;
    inventTable.(fieldnum(InventTable, dataAreaId)) = 'dat';
    inventTable.RecId = 5637147343;
    inventTable.reread();
    breakpoint;
}
уже не работает
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Research, refresh, reread шпаргалка Qaz Qwerty DAX: База знаний и проекты 7 03.05.2024 12:17
Kashperuk Ivan: Tutorial: refresh, reread, research, executeQuery - which one to use? Blog bot DAX Blogs 20 04.04.2017 13:23
conPeek() и common.dataareaID Logger DAX: Программирование 12 04.03.2011 00:19
Common.orig() Just_smile DAX: Программирование 2 19.07.2010 11:57
Inside Dynamics AX 4.0: Common Search Blog bot DAX Blogs 0 29.10.2007 10:50
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:37.