Показать сообщение отдельно
Старый 18.03.2011, 14:22   #25  
in.dc is offline
in.dc
Участник
 
29 / 53 (2) ++++
Регистрация: 09.04.2009
? извлечение через FormRun?
Цитата:
Сообщение от 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 ;
__________________
Dynamics AX 4.0 SP2
За это сообщение автора поблагодарили: kitty (1), S.Kuskov (1), Player1 (2), Cardagant (1), SuperStar88 (1).