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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.07.2007, 17:16   #1  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Спозиционироваться на запись
В диалоге, у которого нет датасорса, есть стринговое контрол. Есть также LookUp для это контрола, который выбирает ItemId из InventTable. Установил для этого контрола свойство ExtendedDataType равным ItemId, но не тут то было, переход к основной таблице не работает. Перекрыл JumpRef этого контрола и написал в коде:
X++:
public void jumpRef()
{
    InventTable inventTable;
    Args args = New Args("InventTable");
    FormRun FR;
    ;
    inventTable = InventTable::find(this.valueStr());
    //args.lookupField(fieldNum(InventTable, ItemId));
    //args.lookupValue(SlatMaterial.valueStr());
    FR = new FormRun(args);
    super();
    FR.init();
    FR.dataSource( 1 ).findRecord(inventTable);
    Fr.run();
    Fr.wait();
}
Форма открывается нормально, но на запись не позиционируется. Почему то findRecord() не отрабатывает. Задача решается с помощью закоментаренных строк, но без findRecord(). Но почему вот это не работает?
Старый 02.07.2007, 17:27   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Перенесите вызов findRecord после вызова run()
super() не нужно вызывать, раз уж вы переписываете этот метод.
подход через lookupField и lookupvalue используется системой и, имхо, является предпочтительным.
почитайте на форуме просто скорость работы findRecord
За это сообщение автора поблагодарили: Eldar9x (1).
Старый 02.07.2007, 17:29   #3  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
А так:

X++:
public void jumpRef()
{
    InventTable inventTable;
    Args args = New Args("InventTable");
    FormRun FR;
    ;
    inventTable = InventTable::find(this.valueStr());
    FR = new FormRun(args);
    super();
    FR.init();
    Fr.run();
    FR.dataSource( 1 ).findRecord(inventTable);
    Fr.wait();
}
Форма открывается нормально, но на запись не позиционируется. Почему то findRecord() не отрабатывает. Задача решается с помощью закоментаренных строк, но без findRecord(). Но почему вот это не работает?[/QUOTE]
Старый 02.07.2007, 17:30   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
еще можно запихать ее в args,record
Старый 02.07.2007, 17:31   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
а у вас в форме сортировка по коду номенклатуры?
возможно просто что нет, в смысле, что findRecord он же ищет по сортированному массиву, типа.
где-то AndyD описывал, почему, в частности, не работает поиск записи по RecId
Старый 02.07.2007, 17:34   #6  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
блин, ну шикарно! Огромное спасибо! В форме нет сортировки, там просто контрол со строковым значением.
Старый 02.07.2007, 17:35   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от kashperuk Посмотреть сообщение
почитайте на форуме просто скорость работы findRecord
Кстати, специально только что проверил.
У нас номенклатуры 23000 где-то.
так вот, на запись, близкую от конца, через findRecord переходит за секунд 15.
через lookupValue - моментально (там же запрос посылается другой)
Старый 02.07.2007, 17:35   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
блин, ну шикарно! Огромное спасибо! В форме нет сортировки, там просто контрол со строковым значением.
Да нет, про сортировку - это в форме номенклатурного справочника. и вопрос был больше Максиму.
Старый 02.07.2007, 17:38   #9  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
про скорость работы читал, использовать не буду. Просто хотелось понять, почему не работает данный вариант. Если правильно понял, то, наверное, в методе run() формы происходит считывание записей из базы данных в датасорс....
Старый 02.07.2007, 17:40   #10  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
да. в super() метода run() вызывается executeQuery источника.
Старый 02.07.2007, 18:00   #11  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
кстати, если запихать в args().record, то спозиционируется, но откроется форма только с одной записью
Старый 02.07.2007, 18:03   #12  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
кстати, если запихать в args().record, то спозиционируется, но откроется форма только с одной записью
Ну, это уже не позиционирование,а dynalink - здесь запрос уже выбирает только одну запись эту
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Не корректно сохраняет запись в inventTable Starling DAX: Программирование 8 31.03.2008 15:30
Очень просто: создать новую запись в таблице Hobo DAX: Программирование 20 11.07.2006 13:02
Ошибка при импорте демоданных (Axapta 3.0 CIS SP1) KocDm DAX: Администрирование 2 11.08.2005 12:04
Исчезает запись в плане счетов zarik DAX: Прочие вопросы 6 03.05.2005 10:32
Как получить запись из связанного DataSource (InnerJoin) Berty Wooster DAX: Программирование 1 17.09.2003 20:04

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

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

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