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

 
 
Thread Tools Search this Thread Display Modes
Old 14.10.2008, 11:40   #1  
kalex_a is offline
kalex_a
Участник
kalex_a's Avatar
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Join Date: 26.11.2007
Location: Казахстан
! Опять про lookup
Здравствуйте, как передать запись выбранную в лукапе в вызывающую форму и в каком методе это делать. Или наверно правильней, как получить курсор выбраной записи из выпадающего списка в вызывающей форме.
Спасибо заранее.
Old 14.10.2008, 11:58   #2  
Raven Melancholic is offline
Raven Melancholic
Участник
Raven Melancholic's Avatar
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Join Date: 21.03.2005
Location: Москва-Петушки
Не очень понял вопрос и зачем это нужно. Можно предположить, что это требуется когда лукап идёт по таблице, в которой в качестве ключа используется не одно поле, а комбинация полей. В этом случае, в переопределенном методе lookup, сформировав свой лукап вызывать его примерно так:

X++:
sysTableLookup.parmQuery(query);
lookupForm = sysTableLookup.formRun();
_lookupCtrl.performFormLookup(lookupForm);

if (sysTableLookup.waitAndSearch(lookupForm})
{
        table1 = lookupForm.dataSource(tableNum(Table1)).cursor();
        myVar = table1.field1;
...
}
PS: ненавижу сопровождать такой код, лучше искать другие пути.
This post has been rated by: kashperuk (5).
Old 14.10.2008, 12:24   #3  
kalex_a is offline
kalex_a
Участник
kalex_a's Avatar
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Join Date: 26.11.2007
Location: Казахстан
Я использую собственную лукап форму.
На пример на вызывающей форме есть 3 поля на 1 перекрыт метод lookup, так вот при выборке из выпадающего списка на 1-м поле, во 2 и 3 поля должны заносится значения полей строки записи выбраной в 1-ом поле.
Например в лукапе выбираем строку "1,а,б" так на форме в 1-поле попадет [1], и надо чтоб во 2-е и 3-е записались соответственно значения "а" и "б"
Old 14.10.2008, 12:34   #4  
kashperuk is offline
kashperuk
Участник
kashperuk's Avatar
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Join Date: 30.05.2004
Location: Atlanta, GA, USA
Вопрос был поставлен следующий: а и б напрямую зависят от 1? Или они тоже являются частью ключа? (используются для уникального определения сущности)
Old 14.10.2008, 12:40   #5  
kalex_a is offline
kalex_a
Участник
kalex_a's Avatar
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Join Date: 26.11.2007
Location: Казахстан
а и б напрямую зависят от 1
Old 14.10.2008, 12:43   #6  
kalex_a is offline
kalex_a
Участник
kalex_a's Avatar
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Join Date: 26.11.2007
Location: Казахстан
а и б и 1 это все значения одной записи в таблице
Old 14.10.2008, 12:45   #7  
Raven Melancholic is offline
Raven Melancholic
Участник
Raven Melancholic's Avatar
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Join Date: 21.03.2005
Location: Москва-Петушки
Так какое из утверждений ближе к истине?
Quote:
Я использую собственную лукап форму
или
Quote:
на 1 перекрыт метод lookup
И ещё вопрос: является ли значение 1 ключом таблицы, по которой строится лукап? То есть можно или нет по значению 1 однозначно определить запись в таблице?
Old 14.10.2008, 13:01   #8  
kalex_a is offline
kalex_a
Участник
kalex_a's Avatar
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Join Date: 26.11.2007
Location: Казахстан
По значению 1 можно однозначно определить запись в таблице, вот код метода перекрытого метода lookup
X++:
   RContractTable rContractTable;
    Args            args;
    FormRun             formRun;
    FormRun             ctrl_formRun;    
    FormDataSource      ctrl_ds;
    ;
        rContractTable = element.args().record();
        args = new Args();
        args.name(formstr(InvoicePaymLookup)); // InvoicePaymLookup моя лукап форма
        args.caller(this);
        ctrl_formRun = this.owner();
        ctrl_ds      = ctrl_formRun.dataSource();
        if (ctrl_ds)
        {
            args.record(rContractTable);
        }
        formRun = classfactory.formRunClass(args);
        formRun.init();
        this.performFormLookup(formRun);
Old 14.10.2008, 13:18   #9  
Raven Melancholic is offline
Raven Melancholic
Участник
Raven Melancholic's Avatar
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Join Date: 21.03.2005
Location: Москва-Петушки
Если можно точно определить по значению 1 то, на мой взгляд, нужно перенести код определения значений a и b в метод modified. Значение 1 там уже будет, нужно только найти запись и заполнить нужные поля.
Old 14.10.2008, 13:32   #10  
kalex_a is offline
kalex_a
Участник
kalex_a's Avatar
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Join Date: 26.11.2007
Location: Казахстан
Quote:
Originally Posted by Raven Melancholic View Post
Если можно точно определить по значению 1 то, на мой взгляд, нужно перенести код определения значений a и b в метод modified. Значение 1 там уже будет, нужно только найти запись и заполнить нужные поля.
я так делал, просто на мой взгляд это лишние select'ы
Old 14.10.2008, 13:34   #11  
Raven Melancholic is offline
Raven Melancholic
Участник
Raven Melancholic's Avatar
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Join Date: 21.03.2005
Location: Москва-Петушки
Нет, не лишние.
Не забывай, что пользователь может не только выбрать значение из лукапа, но и ввести вручную, скопировать из буфера и т.п.
Old 14.10.2008, 13:41   #12  
kalex_a is offline
kalex_a
Участник
kalex_a's Avatar
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Join Date: 26.11.2007
Location: Казахстан
Quote:
Originally Posted by Raven Melancholic View Post
Нет, не лишние.
Не забывай, что пользователь может не только выбрать значение из лукапа, но и ввести вручную, скопировать из буфера и т.п.
Да вы правы.

Можно еще вопрос? В методе modified к текущему элементу я обращаюсь this, а как другим элементам присвоить значение. что то типа
X++:
element.design()...[  ?] = "Результат select'a"
Old 14.10.2008, 14:17   #13  
Raven Melancholic is offline
Raven Melancholic
Участник
Raven Melancholic's Avatar
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Join Date: 21.03.2005
Location: Москва-Петушки
Достаточно просто. В самом элементе, в который нужно записывать значение, устанавливаем флаг AutoDeclaration в значение Yes. Из кода просто пишем:
ИмяЭлемента.text(тут то что нужно). Если значение не текстовое, то вместо text берем соответствующий метод (например, value, selection).
В принципе, вместо объявления AutoDeclaration можно обращаться к элементу примерно в таком виде:
Quote:
element.design().control(control::ИмяЭлемента)
или даже по имени, но это противоречит BP, в котором сказано, что если нужно обращение к элементу формы, то следует автодекларировать этот элемент.
This post has been rated by: kalex_a (1).
Old 14.10.2008, 14:28   #14  
kalex_a is offline
kalex_a
Участник
kalex_a's Avatar
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Join Date: 26.11.2007
Location: Казахстан
и куда присваивать значение?
X++:
element.design().control(Control::DocumentDate).(DateValue   ) = "Значение";
Old 14.10.2008, 14:39   #15  
Raven Melancholic is offline
Raven Melancholic
Участник
Raven Melancholic's Avatar
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Join Date: 21.03.2005
Location: Москва-Петушки
Это же метод, а не свойство, ему ничего не присвоишь. В него можно только передать параметр или получить возвращаемое значение, то есть нужно не
X++:
element.design().control(Control::DocumentDate).(DateValue   ) = 01\01\2008;
а
X++:
element.design().control(Control::DocumentDate).DateValue(01\01\2008) ;
ещё лучше:
X++:
DocumentDate.DateValue(01\01\2008);
Old 14.10.2008, 14:55   #16  
kashperuk is offline
kashperuk
Участник
kashperuk's Avatar
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Join Date: 30.05.2004
Location: Atlanta, GA, USA
А это у вас отдельные unbound controls? Или все же данные из таблицы? (которые в modified собираетесь менять)
Old 14.10.2008, 15:00   #17  
kalex_a is offline
kalex_a
Участник
kalex_a's Avatar
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Join Date: 26.11.2007
Location: Казахстан
так не работаетelement.design().control(Control:ocumentDate).DateValue(01\01\2008) ; оказывается вот так надо:
X++:
FormDateControl CtrlDocumentDate;
;
CtrlDocumentDate = element.design().control(Control::DocumentDate);
CtrlDocumentDate.dateValue("Значение");
Old 14.10.2008, 15:02   #18  
kalex_a is offline
kalex_a
Участник
kalex_a's Avatar
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Join Date: 26.11.2007
Location: Казахстан
Quote:
Originally Posted by kashperuk View Post
А это у вас отдельные unbound controls? Или все же данные из таблицы? (которые в modified собираетесь менять)
отдельные unbound controls
Old 14.10.2008, 15:12   #19  
kalex_a is offline
kalex_a
Участник
kalex_a's Avatar
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Join Date: 26.11.2007
Location: Казахстан
Все разобрался, спасибо Raven Melancholic
 

Similar Threads
Thread Thread Starter Forum Replies Last Post
gatesasbait: How to define a custom lookup form for an extended datatype Blog bot DAX Blogs 0 09.07.2008 22:05
Опять LookUp Eldar9x DAX: Программирование 11 28.09.2007 15:45
Создание Lookup формы Maxim Gorbunov DAX: База знаний и проекты 9 26.06.2007 16:44
Нагло глючит lookup Sada DAX: Программирование 1 08.06.2006 10:32
Динамические Lookup формы. Андрей Василюк DAX: База знаний и проекты 0 07.12.2001 07:07
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

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 10:20.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.