AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen Alle Foren als gelesen markieren

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 20.04.2005, 10:55   #1  
Red Stranger ist offline
Red Stranger
Участник
 
102 / 19 (1) ++
Registriert seit: 01.04.2005
Не корректно отображаюстя данные
Доброго всем времени суток.

У меня следующая проблема:
Я создал ди сплей метод на ДС. Метод должен в каждой строке грида добавить поле в котором отображается наименование номенклатуры.

Вот код
PHP-Code:
display ItemName GetItemName()
{
    
ItemName ret;
    ;
    
ret InventTable::find(InventJournalTrans.ItemId).ItemName;
    return 
ret;

Собственно проблема в том, что при открытии формы у всех записей в гриде одно и тоже наименование номенклатуры. И если произвести щелчек на записи, то у записи в которую устанавливается курсор наименоваие корректно обновляется, а у которой курсор теряется наименование принимает значение наименования записи куда перешел курсор.

Всем заранее спасибо.
Alt 20.04.2005, 11:03   #2  
George Nordic ist offline
George Nordic
Модератор
Benutzerbild von George Nordic
Злыдни
 
4.480 / 1255 (50) ++++++++
Registriert seit: 17.12.2003
Ort: Moscow
Blog-Einträge: 9
1) find тащит целиком всю запись - посчитайте кол-во байт в курсоре InventTable и ужаснитесь
2) InventName - очень часть используемый display метод, так что напишите его на ТАБЛИЦЕ:
PHP-Code:
display ItemName itemName()
{
    return this.ItemName;

3) Не забудьде его закэшировать в форме.

С Уважением,
Георгий.
Alt 20.04.2005, 11:14   #3  
dn ist offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Registriert seit: 26.03.2003
Ort: Москва
Если дисплэй метод объявляется не на таблице, то в качестве параметра должен передоваться курсор.
PHP-Code:
display ItemName GetItemName(InventJournalTrans _inventJournalTrans
Alt 20.04.2005, 11:16   #4  
Maxim Gorbunov ist offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2.483 / 646 (26) +++++++
Registriert seit: 27.11.2001
Ort: Dubai, UAE
Эх. Читайте Developer's Guide что ли для начала.

mk:@MSITStore:C:\Program%20Files\Navision\Client\Bin\AxDvgFormsUs.chm::/Designing_forms/FORM_Using_display_and_edit_method_mo.htm

Zitat:
The exception to this is when you define display on a form data source method. If you choose to write a display method on a form data source, you must include the data source as parameter, for example
PHP-Code:
display InventQty Accumulated(InventBudgetInvent Budget
which is a method on the data source for the InventBudgetInvent form.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Alt 20.04.2005, 11:17   #5  
db ist offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Registriert seit: 01.04.2004
Ort: Москва
Ну зачем Вам эти дисплейные методы в случаях, когда можно замечательно и без них
Две таблицы соединить что-ли сложно? Поручите работу серверу БД, получите шустренькую форму, а в качестве бонуса возможность фильтровать по ItemName

1. Закинуть на форму датасорс по InventTable
2. Сделать ему InnerJoin на таблицу в которой есть ItemId
3. Поставить в свойствах датаорса AllowEdit, Create, Delete в No
4. Поставить в свойствах датасора OnlyFetchActive в Yes
5. Перекрыть на датасорсе методы след образом
public void delete()
{
}
public boolean validateWrite()
{
return true;
}
public void write()
{
}
public boolean validateDelete()
{
return true;
}
6. На write датасорса в котром есть ItemId написать где нито после super()

InventTable.data(InventTable::find(Моя_Таблица_C_ItemId.ItemId));
InventTable_DS.setCurrent();

7. Затащить из датасорса нужные поля в нужные места

все
Alt 20.04.2005, 11:21   #6  
Maxim Gorbunov ist offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2.483 / 646 (26) +++++++
Registriert seit: 27.11.2001
Ort: Dubai, UAE
Zitat:
Изначально опубликовано George Nordic
2) InventName - очень часть используемый display метод, так что напишите его на ТАБЛИЦЕ
Самое интересное, что на большинстве таблиц он уже есть. Проверьте
Zitat:
Изначально опубликовано George Nordic
3) Не забудьде его закэшировать в форме.
А вот к кэшированию я бы призвал Вас относиться осторожнее. Не кэшируйте методы, если Вы не уверены полностью в том, что Вы делаете. Если Вы все-таки кэшируете метод, предусматривайте возможность для пользователя сбросить кэш не закрывая форму (если это возможно, конечно). Тщательно тестируйте формы с кэшируемыми методами, так как кэширование широко не использовалось, и проблемы, которые могут быть вызваны кэшированием, до конца не изучены Например, кэшируемые методы иногда ведут себя не так, как хотелось бы, в случае, если для DataSource StartPosition = Last.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Alt 20.04.2005, 11:23   #7  
Maxim Gorbunov ist offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2.483 / 646 (26) +++++++
Registriert seit: 27.11.2001
Ort: Dubai, UAE
Zitat:
Изначально опубликовано db
Две таблицы соединить что-ли сложно?
Не всегда это просто. Хотя в целом согласен.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Alt 20.04.2005, 11:37   #8  
George Nordic ist offline
George Nordic
Модератор
Benutzerbild von George Nordic
Злыдни
 
4.480 / 1255 (50) ++++++++
Registriert seit: 17.12.2003
Ort: Moscow
Blog-Einträge: 9
Zitat:
Изначально опубликовано db
1. Закинуть на форму датасорс по InventTable
2. Сделать ему InnerJoin на таблицу в которой есть ItemId
... получите шустренькую форму
Уп-с!
Как ни странно, многоуважаемый db, в данном случае позволю себе с Вами не согласиться: я не думаю, что джойня иннерджоином InventTable, Вы получите "шустренькую" форму
Единственный плюс - сортировка по имени. Да и то, довольно сомнительный... Только если невозможно найти по коду...

С Уважением,
Георгий
Alt 20.04.2005, 11:41   #9  
db ist offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Registriert seit: 01.04.2004
Ort: Москва
А Вы не думайте, Вы попробуйте
Alt 20.04.2005, 11:42   #10  
Maxim Gorbunov ist offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2.483 / 646 (26) +++++++
Registriert seit: 27.11.2001
Ort: Dubai, UAE
Zitat:
Изначально опубликовано George Nordic
я не думаю, что джойня иннерджоином InventTable, Вы получите "шустренькую" форму
Теоритически, выполнение одного запроса, хоть и сложного, должно происходить быстрее, чем множества простых запросов. Хотя признаюсь, сравнительного тестирования я никогда не делал.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Alt 20.04.2005, 11:43   #11  
George Nordic ist offline
George Nordic
Модератор
Benutzerbild von George Nordic
Злыдни
 
4.480 / 1255 (50) ++++++++
Registriert seit: 17.12.2003
Ort: Moscow
Blog-Einträge: 9
Zitat:
Изначально опубликовано Maxim Gorbunov
А вот к кэшированию я бы призвал Вас относиться осторожнее. Не кэшируйте методы, если Вы не уверены полностью в том, что Вы делаете. Если Вы все-таки кэшируете метод, предусматривайте возможность для пользователя сбросить кэш не закрывая форму (если это возможно, конечно). Тщательно тестируйте формы с кэшируемыми методами, так как кэширование широко не использовалось, и проблемы, которые могут быть вызваны кэшированием, до конца не изучены Например, кэшируемые методы иногда ведут себя не так, как хотелось бы, в случае, если для DataSource StartPosition = Last.
Вах, шайтан! Если бы кто другой сказал...
Заронил ты в мою душу сомнения, Максим!
Пока глюков не было у нас.. хотя половина форм (большая) - StartPosition = Last.

С Уважением,
Георгий
Alt 20.04.2005, 11:45   #12  
db ist offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Registriert seit: 01.04.2004
Ort: Москва
А насчет поиска, юзерам сами как нибудь вразумительно объясните, почему по этому полю нельзя ничего найти. Если они вас после этого не порвут на части, то будут не правы
Alt 20.04.2005, 11:48   #13  
George Nordic ist offline
George Nordic
Модератор
Benutzerbild von George Nordic
Злыдни
 
4.480 / 1255 (50) ++++++++
Registriert seit: 17.12.2003
Ort: Moscow
Blog-Einträge: 9
Zitat:
Изначально опубликовано db
А Вы не думайте, Вы попробуйте
Я тут часть полей самопальных, очень больших (адреса доставки/грузополучателя/отправителя, примечания и прочую мишуру, которую только в отчетах нужна) вынес с SalesTable в новую таблицу - SalesTableNotes..
При innerJoine SalesTable (форма) умерла. При delayed - все ок. А так - очень долго загружается....
Хотя delayActive тоже вроде выставлял... Шайтан!

С Уважением,
Георгий.
Alt 20.04.2005, 11:51   #14  
Maxim Gorbunov ist offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2.483 / 646 (26) +++++++
Registriert seit: 27.11.2001
Ort: Dubai, UAE
Zitat:
Изначально опубликовано George Nordic
Пока глюков не было у нас.. хотя половина форм (большая) - StartPosition = Last
Там были проблемы, связанные с тем, что Аксапта кэшировала значения методов не только для тех записей, которые попадали в display-cache.

Просто посмотри, для каких записей реально происходит кэширование.
В целом: оно, конечно, работает, но с ним надо осторожней
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Alt 20.04.2005, 11:52   #15  
George Nordic ist offline
George Nordic
Модератор
Benutzerbild von George Nordic
Злыдни
 
4.480 / 1255 (50) ++++++++
Registriert seit: 17.12.2003
Ort: Moscow
Blog-Einträge: 9
Zitat:
Изначально опубликовано db
А насчет поиска, юзерам сами как нибудь вразумительно объясните, почему по этому полю нельзя ничего найти. Если они вас после этого не порвут на части, то будут не правы
Не, тут с Вами согласен на 100%
Жопа та еще. Если нет возможности закодировать номенклатуру, то поиск...
Еще один выход (убогий, крайний вариант) - хранить еще и itemName

С Уважением,
Георгий.
Alt 20.04.2005, 11:52   #16  
db ist offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Registriert seit: 01.04.2004
Ort: Москва
Zitat:
Изначально опубликовано George Nordic

Я тут часть полей самопальных, очень больших (адреса доставки/грузополучателя/отправителя, примечания и прочую мишуру, которую только в отчетах нужна) вынес с SalesTable в новую таблицу - SalesTableNotes..
При innerJoine SalesTable (форма) умерла. При delayed - все ок. А так - очень долго загружается....
Хотя delayActive тоже вроде выставлял... Шайтан!

С Уважением,
Георгий.
еще раз
4. Поставить в свойствах датасора OnlyFetchActive в Yes

в результате имеем не a join b
а
a join ItemName from b

то есть тащатся ттолько данные из полей, привязанных к контролам и никакие больше. В данном случае только ItemName
Alt 20.04.2005, 11:53   #17  
Maxim Gorbunov ist offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2.483 / 646 (26) +++++++
Registriert seit: 27.11.2001
Ort: Dubai, UAE
Zitat:
Изначально опубликовано George Nordic
При innerJoine SalesTable (форма) умерла. При delayed - все ок. А так - очень долго загружается....
Хотя delayActive тоже вроде выставлял... Шайтан!
Посмотри, на что расходуется время. Если на выполнение запроса на SQL, то надо смотреть, что там с индексами. Если клиент долго работает, значит Аксапта действительно криво join обрабатывает. Тогда надо смотреть запросы, которые генерит форма, и пытаться ее заставить генерировать правильные запросы (тут уже могут быть варианты, как говорится ).
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Alt 20.04.2005, 11:59   #18  
George Nordic ist offline
George Nordic
Модератор
Benutzerbild von George Nordic
Злыдни
 
4.480 / 1255 (50) ++++++++
Registriert seit: 17.12.2003
Ort: Moscow
Blog-Einträge: 9
Zitat:
Изначально опубликовано db
то есть тащатся ттолько данные из полей, привязанных к контролам и никакие больше. В данном случае только ItemName
Да-да, согласен!
Только вот они все нужны были, для заполнения

С Уважением,
Георгий.

2 Maxim Gorbunov: Да, от тюнинга никуда не уйти
Alt 20.04.2005, 12:39   #19  
Red Stranger ist offline
Red Stranger
Участник
 
102 / 19 (1) ++
Registriert seit: 01.04.2005
Всем спасибо за помощь, но мне мой начальник не разрешил использовать присоединение таблиц => пришлось все display - методом делать.
Alt 20.04.2005, 12:59   #20  
db ist offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Registriert seit: 01.04.2004
Ort: Москва
Zitat:
Изначально опубликовано Red Stranger
Всем спасибо за помощь, но мне мой начальник не разрешил использовать присоединение таблиц => пришлось все display - методом делать.
Начальнику конечно виднее
Станешь начальником, научись слушать подчиненных
Stichworte
display метод, ax3.0

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Бинарные данные в Axapta Lucky13 DAX: Программирование 4 07.04.2007 11:51
Данные из всех компаний zipo DAX: Программирование 18 16.05.2006 23:26
Демо-данные как начальные настройки Sharf2000 DAX: Функционал 12 29.06.2004 16:07
Неправильно выбираются данные через query Pegiy DAX: Программирование 2 11.06.2004 16:43
Данные из Tmp таблицы в QueryRun на форме Berty Wooster DAX: Программирование 1 23.09.2003 10:10
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 06:20 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.