AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 18.03.2011, 09:34   #21  
CDR is offline
CDR
MCTS
MCBMSS
 
236 / 175 (6) ++++++
Join Date: 27.11.2003
А чем так не устраивает отдельный запрос, что ради этого стоит переписывать кучу форм? Ну да, должностные лица - не самое удачное решение, но вы уверены, что в итоге переписывания у вас получится решение, лучше существующего?

На OfficialsTrans_RU есть специальный метод nameChanged(), который подставляет должность. Если тормозит выборка по EmplTable, создайте индекс по полю Name. И не насилуйте ни себя, ни Аксапту.

ПС: У нас в справочнике сотрудников около 20 тыс. записей, и работает практически мгновенно.
__________________
Dynamics AX Experience
Old 18.03.2011, 09:55   #22  
Ivanhoe is offline
Ivanhoe
Участник
Ivanhoe's Avatar
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Join Date: 29.09.2005
Location: Санкт-Петербург
Вы, может, проблему не поняли? Без доработки - никак.
Если есть два сотрудника с одинаковым ФИО, то nameChanged() подставит должность первого попавшегося сотрудника, что неверно.

Насчет переписывания - уверен. Стандартная функциональность - убогая. Как минимум, нужно добавлять разрез склада / сайта и ведение доверенностей на подпись. О чем, кстати, говорилось MS не раз, они даже обещали подумать про доверенности.
__________________
Ivanhoe as is..
Old 18.03.2011, 10:39   #23  
CDR is offline
CDR
MCTS
MCBMSS
 
236 / 175 (6) ++++++
Join Date: 27.11.2003
Quote:
Originally Posted by Ivanhoe View Post
Вы, может, проблему не поняли? Без доработки - никак.
Если есть два сотрудника с одинаковым ФИО, то nameChanged() подставит должность первого попавшегося сотрудника, что неверно.
Виноват, не заметил проблему в пылу дискуссии.
Тогда, пожалуй, соглашусь с вашим решением - отдельное поле в OfficialsTrans_RU. Поле вытащить на формы и обработать modified() - минимум модификаций.

Quote:
Originally Posted by Ivanhoe View Post
Насчет переписывания - уверен. Стандартная функциональность - убогая. Как минимум, нужно добавлять разрез склада / сайта и ведение доверенностей на подпись. О чем, кстати, говорилось MS не раз, они даже обещали подумать про доверенности.
Ну кто бы спорил, что MS'у надо бы переписать это барахло. Мой ответ был касательно конкретного клиента, использующего Аксапту, у которого, как правило, и без переписывания должностных лиц проблем с Аксаптой хватает.

И вроде как в OfficialsTable_RU есть связь со складом.
__________________
Dynamics AX Experience
Old 18.03.2011, 10:52   #24  
Ivanhoe is offline
Ivanhoe
Участник
Ivanhoe's Avatar
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Join Date: 29.09.2005
Location: Санкт-Петербург
В стандарте связь со складом только для складских документов. А зачастую и фактуры, и накладные подписываются на складе по доверенности - соответственно на разных складах это разные люди.
__________________
Ivanhoe as is..
Old 18.03.2011, 14:22   #25  
in.dc is offline
in.dc
Участник
 
29 / 53 (2) ++++
Join Date: 09.04.2009
? извлечение через FormRun?
Quote:
Originally Posted by S.Kuskov View Post
Скорее всего имелся в виду самый обычный lookup c гридом из нескольких полей. Если так то ответ нет, стандартно такое сделать не получиться. Стандартный механизм работы c lookup окнами не предаставляет доступ программисту к процессу получения значения из lookup формы. Можно запрограммировать передачу значения, но вот запрограммировать получение этого значения на основной форме не выйдет.
Позволю себе не согласиться с данным утверждением.
Если речь идет об обычном lookup - то получить значения курсора выбранной в lookup позиции в вызывающей форме в большинстве случаев все-же возможно, для этого нужно лишь получить экземпляр FormRun этой lookup формы, а дальше извлечь из него текущий курсор необходимого источника данных.

Попробую схематично набросать то что имелось в виду:
1. В classDeclaration определяется переменная для сохранения дескриптора lookup формы:
X++:
public class FormRun extends ObjectRun
{
    FormRun             lookupFormRun ;
}
2. Перекрывается метод performFormLookup нужного поля в котором сохраняем экземпляр вызываемой lookup' формы
X++:
public void performFormLookup(FormRun _form, FormControl _formControl)
{
    super(_form, _formControl);
    lookupFormRun = _form ;
}
3. в modified производится анализ:
X++:
    Common    lookupCursor ;
    ;
    ...
    super()   ;
    
    if( lookupFormRun &&
        lookupFormRun.closedOk() )
    {   // выбор из lookup формы
        lookupCursor = lookupFormRun .dataSource().cursor() ;
        ...
        // обработка данных извлеченного курсора
        ...
    }
    else { // 'ручной' ввод
    ...
    }
    ...
    lookupFormRun = null ;
__________________
Dynamics AX 4.0 SP2
This post has been rated by: kitty (1), S.Kuskov (1), Player1 (2), Cardagant (1), SuperStar88 (1).
Old 18.03.2011, 15:51   #26  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Join Date: 28.04.2007
Location: Калуга
Я, собственно, имел в виду, что механизм получения значения, зашит в недрах метода performFormLookup и к нему у программиста действительно нет доступа. Событие modified это последствие изменения значения, возникающее уже после того, как отработает механизм получения значения. В прочем как вы показали это не мешает в некоторых случаях реализовать задуманное. А можно ли назвать такой способ стандартным - это уже другой вопрос
Old 24.04.2013, 13:15   #27  
kitty is offline
kitty
Участник
 
383 / 30 (2) +++
Join Date: 24.05.2005
Спасибо за предложенное работающее решение.
Возник такой вопрос:
Метод performFormLookup() вызывается только если лукап перекрыт, тк это метод класса SysTableLookup.

Если же лукап стандартный(автоматически созданный аксаптой по relation на таблице), можно ли как-то добраться до выбранной в нем записи?
Old 05.07.2013, 15:22   #28  
anna413 is offline
anna413
Участник
 
1 / 11 (1) +
Join Date: 05.07.2013
Важное замечание при перекрытии performFormLookup()

в лукапе необходимо его правильно вызвать:

X++:
public void lookup(FormControl _formControl, str _filterStr)
{
SysTableLookup          sysTableLookup = SysTableLookup::newParameters(tablenum(EmplTable), _formControl);
;

<...>

this.performFormLookup(sysTableLookup.formRun(), _formControl);
}
сама сегодня напоролась - еле додумалась(
This post has been rated by: SuperStar88 (1).
 

Similar Threads
Thread Thread Starter Forum Replies Last Post
PatrickChua: Change the combobox options in RunbaseBatch class Blog bot DAX Blogs 0 04.05.2009 14:05
Самоблокировка ComboBox контролла Delfins DAX: Программирование 2 17.01.2008 00:17
PatrickChua: Change the combobox options in RunbaseBatch class Blog bot DAX Blogs 0 28.10.2006 18:14
Fred Shen: Change the combobox options in RunbaseBatch class Blog bot DAX Blogs 0 28.10.2006 16:40
ComboBox и Enum ArturK DAX: Программирование 1 01.03.2004 16:19

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 15:39.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.