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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.07.2008, 05:15   #1  
Qaz Qwerty is offline
Qaz Qwerty
китайский стажер
 
152 / 37 (2) +++
Регистрация: 12.05.2008
Research, refresh, reread шпаргалка
Хочу поделиться радостью.
Была простая и смешная проблема - надо было сделать чтобы строка закупки блокировалась если отправлена на одобрение и разблокировалась после одобрения, и одобрение могло быть выполнено автоматически или вручную.
Были страдания часа на два а может быть и три, как эту форму с закупками обновить так, чтобы курсор никуда не упрыгивал, строчки обновлялись и данные в строчках обновлялись тоже, ну и конечно чтобы блокировка-разблокировка строк все-таки работала. Плохо китайскому стажеру - не у кого спросить, пришлось тыкаться методом научного тыка, пока не нашлась статья вот здесь: http://www.mail-archive.com/axapta-k.../msg09550.html . Человек тоже поделился радостью понимания

Вот коротенько перевод надеюсь близко к тексту:
--
.refresh() не читает повторно данные из базы данных, а просто обновляет экран вместе со всем, что хранится в кешэ формы.

.reread() считает повторно из базы данных только ТЕКУЩУЮ запись, поэтому не нужно использовать это для того, чтобы обновить данные формы если вы добавили или удалили записи. Это часто используется если вы изменили какие-нибудь значения в текущей записи с помощью метода, и отправляете эти значения в бащу данных используя метод update() на таблице вместо того, чтобы работать с источником данных формы. В этом случае метод reread() отобращит эти изменения на форме.

.research() выполнит существующий запрос источника данных формы, обновляя информацию как о новых и удаленных записях, так и о существующих. Этот метод сохранит любые существующие фильтры и сортировки на форме.

.executeQuery() - еще один полезный метод. Его следует использовать если вы изменили запрос в методе (с помощью программирования) и желаете обновить форму. Этот метод похож на .research() , однако он берет в расчет изменения в запросе.

В общем случае, вам нужен только один из этих методов в разных обстоятельствах.
----

В общем у меня получился вот такой код для обновления:

X++:
void clicked()
{
    ;
    super();
    purchline::PLApprovalStatus(purchline);
    lines_ds.reread();
    lines_ds.research();
}
За это сообщение автора поблагодарили: macklakov (3), G.Menshikh (1), miklenew (2), dreamer (1), alex55 (1), jeky (1).
Старый 31.07.2008, 09:24   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Qaz Qwerty Посмотреть сообщение
X++:
void clicked()
{
    ;
    super();
    purchline::PLApprovalStatus(purchline);
    lines_ds.reread();
    lines_ds.research();
}
По моему reread можно опустить тут.

research повторно выполняет запрос.
executeQuery в отличие от research сносит пользовательский фильтр (который в queryRun.query). То есть если вы изменили query - вызывайте executeQuery, если вы изменили queryRun.query или просто хотите пречитать все записи, то надо вызывать research (после чего можно попытаться найти запись, которая была раньше актуальна - тут надо поискать findRecord по форуму и обсуждение с участием AndyD).

Если надо просто обновить текущую запись, то .reread .refresh[ex]
Старый 31.07.2008, 11:40   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
он, видимо, хотел написать Refresh Очепятался
Старый 31.07.2008, 12:21   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
а рефреш вроде тоже не нужен...
Старый 31.07.2008, 12:28   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Не, вот refresh после reread как раз нужен.
Иначе мы не увидим изменений текущей записи на форме (они будут только в буфере/кэше)
Старый 31.07.2008, 12:31   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
а... вместо ресерча а не рерида...
За это сообщение автора поблагодарили: Qaz Qwerty (1).
Старый 01.08.2008, 21:43   #7  
Qaz Qwerty is offline
Qaz Qwerty
китайский стажер
 
152 / 37 (2) +++
Регистрация: 12.05.2008
точно, refresh нужен, а reserch... Спасибо!
Теги
executequery, formdatasource, research, полезное, программно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX UK: Now the New VPC Refresh is here Blog bot DAX Blogs 4 27.02.2009 09:09
AX UK: Pre-Sales Demonstration Toolkit For Microsoft Dynamics AX 2009 - Refresh 1 - Available now Blog bot DAX Blogs 0 24.02.2009 18:05
Reread() на форме c View KpecT DAX: Программирование 8 11.11.2008 13:00
Dynamics AX: AMR Research: Awakening a Sleeping Giant - Inside Microsoft Business Solutions' ERP Strategy Blog bot DAX Blogs 0 22.09.2008 22:05
jinx: MultiSelect und die DataSource-Methode research(). Blog bot DAX auf Deutsch 0 14.08.2008 22:06

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:03.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.