Цитата:
Сообщение от
S.Kuskov
Скорее всего имелся в виду самый обычный 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 ;