![]() |
#1 |
Участник
|
Не корректно отображаюстя данные
Доброго всем времени суток.
У меня следующая проблема: Я создал ди сплей метод на ДС. Метод должен в каждой строке грида добавить поле в котором отображается наименование номенклатуры. Вот код PHP код:
Всем заранее спасибо. |
|
![]() |
#2 |
Модератор
|
1) find тащит целиком всю запись - посчитайте кол-во байт в курсоре InventTable и ужаснитесь
2) InventName - очень часть используемый display метод, так что напишите его на ТАБЛИЦЕ: PHP код:
С Уважением, Георгий. |
|
![]() |
#3 |
Участник
|
Если дисплэй метод объявляется не на таблице, то в качестве параметра должен передоваться курсор.
PHP код:
|
|
![]() |
#4 |
Administrator
|
Эх. Читайте Developer's Guide что ли для начала.
mk:@MSITStore:C:\Program%20Files\Navision\Client\Bin\AxDvgFormsUs.chm::/Designing_forms/FORM_Using_display_and_edit_method_mo.htm Цитата:
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 код:
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#5 |
Роман Долгополов (RDOL)
|
Ну зачем Вам эти дисплейные методы в случаях, когда можно замечательно и без них
Две таблицы соединить что-ли сложно? Поручите работу серверу БД, получите шустренькую форму, а в качестве бонуса возможность фильтровать по 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. Затащить из датасорса нужные поля в нужные места все |
|
![]() |
#6 |
Administrator
|
Цитата:
Изначально опубликовано George Nordic
2) InventName - очень часть используемый display метод, так что напишите его на ТАБЛИЦЕ ![]() Цитата:
Изначально опубликовано George Nordic
3) Не забудьде его закэшировать в форме. ![]()
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#7 |
Administrator
|
Цитата:
Изначально опубликовано db
Две таблицы соединить что-ли сложно?
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#8 |
Модератор
|
Цитата:
Изначально опубликовано db
1. Закинуть на форму датасорс по InventTable 2. Сделать ему InnerJoin на таблицу в которой есть ItemId ... получите шустренькую форму Как ни странно, многоуважаемый db, в данном случае позволю себе с Вами не согласиться: я не думаю, что джойня иннерджоином InventTable, Вы получите "шустренькую" форму ![]() Единственный плюс - сортировка по имени. Да и то, довольно сомнительный... Только если невозможно найти по коду... С Уважением, Георгий |
|
![]() |
#9 |
Роман Долгополов (RDOL)
|
А Вы не думайте, Вы попробуйте
![]() ![]() |
|
![]() |
#10 |
Administrator
|
Цитата:
Изначально опубликовано 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 |
|
![]() |
#11 |
Модератор
|
Цитата:
Изначально опубликовано Maxim Gorbunov
А вот к кэшированию я бы призвал Вас относиться осторожнее. Не кэшируйте методы, если Вы не уверены полностью в том, что Вы делаете. Если Вы все-таки кэшируете метод, предусматривайте возможность для пользователя сбросить кэш не закрывая форму (если это возможно, конечно). Тщательно тестируйте формы с кэшируемыми методами, так как кэширование широко не использовалось, и проблемы, которые могут быть вызваны кэшированием, до конца не изучены ![]() Заронил ты в мою душу сомнения, Максим! ![]() Пока глюков не было у нас.. хотя половина форм (большая) - StartPosition = Last. С Уважением, Георгий |
|
![]() |
#12 |
Роман Долгополов (RDOL)
|
А насчет поиска, юзерам сами как нибудь вразумительно объясните, почему по этому полю нельзя ничего найти. Если они вас после этого не порвут на части, то будут не правы
![]() |
|
![]() |
#13 |
Модератор
|
Цитата:
Изначально опубликовано db
А Вы не думайте, Вы попробуйте ![]() ![]() При innerJoine SalesTable (форма) умерла. При delayed - все ок. А так - очень долго загружается.... ![]() Хотя delayActive тоже вроде выставлял... Шайтан! ![]() С Уважением, Георгий. |
|
![]() |
#14 |
Administrator
|
Цитата:
Изначально опубликовано George Nordic
Пока глюков не было у нас.. хотя половина форм (большая) - 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 |
|
![]() |
#15 |
Модератор
|
Цитата:
Изначально опубликовано db
А насчет поиска, юзерам сами как нибудь вразумительно объясните, почему по этому полю нельзя ничего найти. Если они вас после этого не порвут на части, то будут не правы ![]() Жопа та еще. Если нет возможности закодировать номенклатуру, то поиск... Еще один выход (убогий, крайний вариант) - хранить еще и itemName ![]() С Уважением, Георгий. |
|
![]() |
#16 |
Роман Долгополов (RDOL)
|
Цитата:
Изначально опубликовано George Nordic
Я тут часть полей самопальных, очень больших (адреса доставки/грузополучателя/отправителя, примечания и прочую мишуру, которую только в отчетах нужна) вынес с SalesTable в новую таблицу - SalesTableNotes.. При innerJoine SalesTable (форма) умерла. При delayed - все ок. А так - очень долго загружается.... ![]() Хотя delayActive тоже вроде выставлял... Шайтан! ![]() С Уважением, Георгий. 4. Поставить в свойствах датасора OnlyFetchActive в Yes в результате имеем не a join b а a join ItemName from b то есть тащатся ттолько данные из полей, привязанных к контролам и никакие больше. В данном случае только ItemName |
|
![]() |
#17 |
Administrator
|
Цитата:
Изначально опубликовано George Nordic
При innerJoine SalesTable (форма) умерла. При delayed - все ок. А так - очень долго загружается.... ![]() Хотя delayActive тоже вроде выставлял... Шайтан! ![]()
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#18 |
Модератор
|
Цитата:
Изначально опубликовано db
то есть тащатся ттолько данные из полей, привязанных к контролам и никакие больше. В данном случае только ItemName Только вот они все нужны были, для заполнения ![]() С Уважением, Георгий. 2 Maxim Gorbunov: Да, от тюнинга никуда не уйти ![]() |
|
![]() |
#19 |
Участник
|
Всем спасибо за помощь, но мне мой начальник не разрешил использовать присоединение таблиц => пришлось все display - методом делать.
|
|
![]() |
#20 |
Роман Долгополов (RDOL)
|
Цитата:
Изначально опубликовано Red Stranger
Всем спасибо за помощь, но мне мой начальник не разрешил использовать присоединение таблиц => пришлось все display - методом делать. ![]() Станешь начальником, научись слушать подчиненных ![]() |
|
Теги |
display метод, ax3.0 |
|
![]() |
||||
Тема | Ответов | |||
Бинарные данные в Axapta | 4 | |||
Данные из всех компаний | 18 | |||
Демо-данные как начальные настройки | 12 | |||
Неправильно выбираются данные через query | 2 | |||
Данные из Tmp таблицы в QueryRun на форме | 1 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|