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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.10.2008, 11:40   #1  
kalex_a is offline
kalex_a
Участник
Аватар для kalex_a
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Регистрация: 26.11.2007
Адрес: Казахстан
! Опять про lookup
Здравствуйте, как передать запись выбранную в лукапе в вызывающую форму и в каком методе это делать. Или наверно правильней, как получить курсор выбраной записи из выпадающего списка в вызывающей форме.
Спасибо заранее.
Старый 14.10.2008, 11:58   #2  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Не очень понял вопрос и зачем это нужно. Можно предположить, что это требуется когда лукап идёт по таблице, в которой в качестве ключа используется не одно поле, а комбинация полей. В этом случае, в переопределенном методе 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: ненавижу сопровождать такой код, лучше искать другие пути.
За это сообщение автора поблагодарили: kashperuk (5).
Старый 14.10.2008, 12:24   #3  
kalex_a is offline
kalex_a
Участник
Аватар для kalex_a
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Регистрация: 26.11.2007
Адрес: Казахстан
Я использую собственную лукап форму.
На пример на вызывающей форме есть 3 поля на 1 перекрыт метод lookup, так вот при выборке из выпадающего списка на 1-м поле, во 2 и 3 поля должны заносится значения полей строки записи выбраной в 1-ом поле.
Например в лукапе выбираем строку "1,а,б" так на форме в 1-поле попадет [1], и надо чтоб во 2-е и 3-е записались соответственно значения "а" и "б"
Старый 14.10.2008, 12:34   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Вопрос был поставлен следующий: а и б напрямую зависят от 1? Или они тоже являются частью ключа? (используются для уникального определения сущности)
Старый 14.10.2008, 12:40   #5  
kalex_a is offline
kalex_a
Участник
Аватар для kalex_a
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Регистрация: 26.11.2007
Адрес: Казахстан
а и б напрямую зависят от 1
Старый 14.10.2008, 12:43   #6  
kalex_a is offline
kalex_a
Участник
Аватар для kalex_a
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Регистрация: 26.11.2007
Адрес: Казахстан
а и б и 1 это все значения одной записи в таблице
Старый 14.10.2008, 12:45   #7  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Так какое из утверждений ближе к истине?
Цитата:
Я использую собственную лукап форму
или
Цитата:
на 1 перекрыт метод lookup
И ещё вопрос: является ли значение 1 ключом таблицы, по которой строится лукап? То есть можно или нет по значению 1 однозначно определить запись в таблице?
Старый 14.10.2008, 13:01   #8  
kalex_a is offline
kalex_a
Участник
Аватар для kalex_a
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Регистрация: 26.11.2007
Адрес: Казахстан
По значению 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);
Старый 14.10.2008, 13:18   #9  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Если можно точно определить по значению 1 то, на мой взгляд, нужно перенести код определения значений a и b в метод modified. Значение 1 там уже будет, нужно только найти запись и заполнить нужные поля.
Старый 14.10.2008, 13:32   #10  
kalex_a is offline
kalex_a
Участник
Аватар для kalex_a
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Регистрация: 26.11.2007
Адрес: Казахстан
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Если можно точно определить по значению 1 то, на мой взгляд, нужно перенести код определения значений a и b в метод modified. Значение 1 там уже будет, нужно только найти запись и заполнить нужные поля.
я так делал, просто на мой взгляд это лишние select'ы
Старый 14.10.2008, 13:34   #11  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Нет, не лишние.
Не забывай, что пользователь может не только выбрать значение из лукапа, но и ввести вручную, скопировать из буфера и т.п.
Старый 14.10.2008, 13:41   #12  
kalex_a is offline
kalex_a
Участник
Аватар для kalex_a
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Регистрация: 26.11.2007
Адрес: Казахстан
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Нет, не лишние.
Не забывай, что пользователь может не только выбрать значение из лукапа, но и ввести вручную, скопировать из буфера и т.п.
Да вы правы.

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

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
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
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 03:07.