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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.11.2010, 11:14   #11  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Если так, то почему бы просто ещё раз не открыть ту же форму с тем же Args?
Именно! Плюс скопировать текущие фильтры и сортировки первой формы, т.е. queryRun:
X++:
static void Job_CreateCopyForm(Args _args)
{
    Args            args;
    FormRun         formRun;
    FormRun         formRunCopy;
    FormDataSource  fds;
    FormDataSource  fdsCopy;
    QueryBuildRange qbr;
    RAssetTable     rassetTable;
    RecId           prevRecId = intMin(); // -2 147 483 648;
    Set             setRecId = new Set(Types::Integer);
    int             i;
    ;

    // генерируем строку критерия по RecId (10 первых значений из таблицы)
    for (i=1;i<=10;i++)
    {
        select firstonly rassetTable order by RecId where rassetTable.RecId > prevRecId;
        prevRecId = rassetTable.RecId;
        setRecId.add(prevRecId);
    }

    // запускаем первую форму - основную
    args = new Args(formstr(RAssetTable));
    formRun = classFactory.formRunClass(args);
    formRun.init();
    formRun.design().caption(strFmt('ПЕРВАЯ ФОРМА: %1',formRun.design().caption()));
    formRun.design().visible(false);
    formRun.run();

    // фильтруем и сортируем записи
    fds = formRun.dataSource('RAssetTable');
    qbr = fds.queryRun().query().dataSourceNo(1).addRange(fieldNum(RAssetTable,RecId));
    qbr.value(strRem(setRecId.toString(),'{ }'));
    fds.queryRun().query().dataSourceNo(1).addSortField(fieldNum(RAssetTable,AccountNum),SortOrder::Descending);
    fds.research();

    // отображаем первую форму
    formRun.design().visible(true);
    
    // запускаем вторую форму - "копию первой"
    formRunCopy = classFactory.formRunClass(formRun.args());
    formRunCopy.init();
    formRunCopy.design().caption(strFmt('КОПИЯ - ВТОРАЯ ФОРМА: %1',formRunCopy.design().caption()));
    formRunCopy.design().visible(false);
    formRunCopy.run();

    // "копируем" текущий фильтр и сортировку первой формы во вторую
    fdsCopy = formRunCopy.dataSource('RAssetTable');
    fdsCopy.queryRun(fds.queryRun());
    fdsCopy.research();

    // отображаем вторую форму
    formRunCopy.design().visible(true);

    formRunCopy.wait();
    formRun.wait();
}
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
paruvella: Form browser for Dynamics Ax-Tables Blog bot DAX Blogs 0 26.06.2010 01:09
kamalblogs: Setting up Form size during runtime in Dynamics Ax Blog bot DAX Blogs 0 07.04.2010 20:05
Kashperuk Ivan: Lookup form returning more than one value Blog bot DAX Blogs 0 29.01.2010 18:05
dax-lessons: Problem when creating a dynamic form with ActiveX control & Solution :) Blog bot DAX Blogs 0 30.04.2008 16:05
Axapta Lessons: Trapping keystrokes in a Form Blog bot DAX Blogs 13 01.11.2006 18:16

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

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

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