|  14.10.2008, 11:40 | #1 | 
| Участник |  Опять про lookup 
			
			Здравствуйте, как передать запись выбранную в лукапе в вызывающую форму и в каком методе это делать. Или наверно правильней, как получить курсор выбраной записи из выпадающего списка в вызывающей форме.  Спасибо заранее. | 
|  | 
|  14.10.2008, 11:58 | #2 | 
| Участник | 
			
			Не очень понял вопрос и зачем это нужно. Можно предположить, что это требуется когда лукап идёт по таблице, в которой в качестве ключа используется не одно поле, а комбинация полей. В этом случае, в переопределенном методе lookup, сформировав свой лукап вызывать его примерно так: X++: sysTableLookup.parmQuery(query); lookupForm = sysTableLookup.formRun(); _lookupCtrl.performFormLookup(lookupForm); if (sysTableLookup.waitAndSearch(lookupForm}) { table1 = lookupForm.dataSource(tableNum(Table1)).cursor(); myVar = table1.field1; ... } | 
|  | |
| За это сообщение автора поблагодарили: kashperuk (5). | |
|  14.10.2008, 12:24 | #3 | 
| Участник | 
			
			Я использую собственную лукап форму. На пример на вызывающей форме есть 3 поля на 1 перекрыт метод lookup, так вот при выборке из выпадающего списка на 1-м поле, во 2 и 3 поля должны заносится значения полей строки записи выбраной в 1-ом поле. Например в лукапе выбираем строку "1,а,б" так на форме в 1-поле попадет [1], и надо чтоб во 2-е и 3-е записались соответственно значения "а" и "б" | 
|  | 
|  14.10.2008, 12:34 | #4 | 
| Участник | 
			
			Вопрос был поставлен следующий: а и б напрямую зависят от 1? Или они тоже являются частью ключа? (используются для уникального определения сущности)
		 | 
|  | 
|  14.10.2008, 12:40 | #5 | 
| Участник | 
			
			а и б напрямую зависят от 1
		 | 
|  | 
|  14.10.2008, 12:43 | #6 | 
| Участник | 
			
			а и б и 1 это все значения одной записи в таблице
		 | 
|  | 
|  14.10.2008, 12:45 | #7 | 
| Участник | 
			
			Так какое из утверждений ближе к истине? Цитата: 
		
			Я использую собственную лукап форму
		
	 Цитата: 
		
			на 1 перекрыт метод lookup
		
	 | 
|  | 
|  14.10.2008, 13:01 | #8 | 
| Участник | 
			
			По значению 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 | 
| Участник | 
			
			Если можно точно определить по значению 1 то, на мой взгляд, нужно перенести код определения значений a и b в метод modified. Значение 1 там уже будет, нужно только найти запись и заполнить нужные поля.
		 | 
|  | 
|  14.10.2008, 13:32 | #10 | 
| Участник | |
|  | 
|  14.10.2008, 13:34 | #11 | 
| Участник | 
			
			Нет, не лишние. Не забывай, что пользователь может не только выбрать значение из лукапа, но и ввести вручную, скопировать из буфера и т.п. | 
|  | 
|  14.10.2008, 13:41 | #12 | 
| Участник | Цитата: Можно еще вопрос? В методе modified к текущему элементу я обращаюсь this, а как другим элементам присвоить значение. что то типа X++: element.design()...[  ?] = "Результат select'a" | 
|  | 
|  14.10.2008, 14:17 | #13 | 
| Участник | 
			
			Достаточно просто. В самом элементе, в который нужно записывать значение, устанавливаем флаг AutoDeclaration в значение Yes. Из кода просто пишем: ИмяЭлемента.text(тут то что нужно). Если значение не текстовое, то вместо text берем соответствующий метод (например, value, selection). В принципе, вместо объявления AutoDeclaration можно обращаться к элементу примерно в таком виде: Цитата: 
		
			element.design().control(control::ИмяЭлемента)
		
	 | 
|  | |
| За это сообщение автора поблагодарили: kalex_a (1). | |
|  14.10.2008, 14:28 | #14 | 
| Участник | 
			
			и куда присваивать значение? X++: element.design().control(Control::DocumentDate).(DateValue   ) = "Значение"; | 
|  | 
|  14.10.2008, 14:39 | #15 | 
| Участник | 
			
			Это же метод, а не свойство, ему ничего не присвоишь. В него можно только передать параметр или получить возвращаемое значение, то есть нужно не 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 | 
| Участник | 
			
			А это у вас отдельные unbound controls? Или все же данные из таблицы? (которые в modified собираетесь менять)
		 | 
|  | 
|  14.10.2008, 15:00 | #17 | 
| Участник | 
			
			так не работает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 | 
| Участник | |
|  | 
|  14.10.2008, 15:12 | #19 | 
| Участник | 
			
			Все разобрался, спасибо Raven Melancholic
		 | 
|  | 
|  | 
|  Похожие темы | ||||
| Тема | Ответов | |||
| gatesasbait: How to define a custom lookup form for an extended datatype | 0 | |||
| Опять LookUp | 11 | |||
| Создание Lookup формы | 9 | |||
| Нагло глючит lookup | 1 | |||
| Динамические Lookup формы. | 0 | |||
| 
 |