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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.01.2010, 14:28   #1  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
? args.record - как заставить работать в форме PurchLine?
Аксапта 3.0, SP4, приложение GMCS, СУБД - Oracle

Хочу, чтобы корректно работал нижеследующий джоб. Собственно до него мои представления об args.record позволяли это вполне законно ожидать.
X++:
static void Job243_1(Args _args)
{
    PurchIdBase purchId = 'ПЗ0050395';

    PurchTable  purchTable = PurchTable::find(purchId);
    PurchLine   purchLine  = PurchLine::find(purchId, 2);
    Args        args = new Args();
    FormRun     formRun;
    ;
    args.name(formstr(PurchLine));
    args.record(purchLine);

    formRun = classFactory.formRunClass(args);

    formRun.init();
    formRun.run();
    formRun.wait();
}
Не работает, вместо одной ожидаемой записи форма PurchLine открывается со всеми записями (все строки всех закупок) и с активной первой строкой.

С какого-то перепуга (?), ломая мои представления об args.record, работает другой джоб, отбирая только строки заданной закупки:
X++:
static void Job243_2(Args _args)
{
    PurchIdBase purchId = 'ПЗ0050395';

    PurchTable  purchTable = PurchTable::find(purchId);
    PurchLine   purchLine  = PurchLine::find(purchId, 2);
    Args        args = new Args();
    FormRun     formRun;
    ;
    args.name(formstr(PurchLine));
    args.record(purchTable); // ЗДЕСЬ ИЗМЕНИЛОСЬ

    formRun = classFactory.formRunClass(args);

    formRun.init();
    formRun.run();
    formRun.wait();
}
Законен ли такой эффект, когда датасорсу типа PurchLine через args.record передается "неродная" переменная типа PurchTable? Или это очередная недокументированная возможность?

Наконец, если во второй джоб добавить findRecord (он получается по небольшому кол-ву уже отобранных записей одной закупки, а потому вполне быстр), то курсор позиционируется на нужную запись:
X++:
static void Job243_3(Args _args)
{
    PurchIdBase purchId = 'ПЗ0050395';

    PurchTable  purchTable = PurchTable::find(purchId);
    PurchLine   purchLine  = PurchLine::find(purchId, 2);
    Args        args = new Args();
    FormRun     formRun;
    ;
    args.name(formstr(PurchLine));
    args.record(purchTable); // ЗДЕСЬ ИЗМЕНИЛОСЬ

    formRun = classFactory.formRunClass(args);

    formRun.init();
    formRun.run();
    formRun.dataSource(1).findRecord(purchLine); // ЗДЕСЬ ДОБАВИЛОСЬ
    formRun.wait();
}
Нажмите на изображение для увеличения
Название: PurchLine.JPG
Просмотров: 476
Размер:	38.3 Кб
ID:	5499
Но мне-то нужно, чтобы запись в гриде появлялась только одна, как если бы правильно отработал первый джоб.

Что думаете, коллеги? Всем откликнувшимся заранее большое спасибо.
Теги
args, dynalink, formdatasource, formrun

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Почему может не передаваться args().record() ? egorych DAX: Программирование 5 03.11.2009 13:43
Как заставить работать TopEdge? KingPeas DAX: Программирование 1 06.11.2007 17:19
args.dataset() и args.record().tableid - могут ли отличаться? gl00mie DAX: Программирование 5 06.08.2007 13:21
Как заставить работать hideToolbar() exceptor DAX: Программирование 3 13.02.2007 14:58
Как заставить работать xRecord.suppressWarnings() Logger DAX: Программирование 13 29.08.2005 16:22

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

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

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