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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.02.2014, 09:00   #1  
Vasiliusis is offline
Vasiliusis
Участник
 
225 / 13 (1) ++
Регистрация: 30.01.2013
Использование args().record() в форме с временным DataSource
Добрый день!
Имеется форма, в которой выбирается строка в гриде, который подвязан к таблице Table1. Выбранная строка передается в другую форму через args().record();

Внутри этой самой другой формы имеется датасорс DataSource1, который также подвязан к таблице Table1. Этот датасорс делается временным в коде init-метода формы. DataSource1 выводится в грид.

Вопрос: как мне правильно вывести в этот грид переданную запись? Кода пока нету...
Старый 27.02.2014, 09:23   #2  
Vasiliusis is offline
Vasiliusis
Участник
 
225 / 13 (1) ++
Регистрация: 30.01.2013
Если к примеру, args().record() не использовать, а передавать в форму просто айдишник, а внутри потом запись по нему доставать, то все работает. Запись в датасорс добавляется таким кодом

X++:
    //Работает когда без record
    DataSource1.data(table1Record);
    DataSource1.insert();
    DataSource1_ds.executeQuery();
Но нужно именно, чтобы через args().record()...
Старый 27.02.2014, 10:32   #3  
Мартынов Дмитрий is offline
Мартынов Дмитрий
Участник
 
236 / 66 (3) ++++
Регистрация: 02.02.2004
Адрес: г. Москва
Post
А так не работает?

X++:
    DataSource1.data(  args().record()  );
    DataSource1.insert();
    DataSource1_ds.executeQuery();
Я бы даже делал так:

X++:
    if (args() && args().record() && args().record().TableId == DataSource1.TableId)
    {
        DataSource1.data(  args().record()  );
        DataSource1.insert();
        DataSource1_ds.executeQuery();
    }
    else
    {
         
    }
Старый 27.02.2014, 10:42   #4  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Может DataSource1.setTmpData() подойдёт? Или следует произвести копирование этой записи в новый источник данных второй формы?

Последний раз редактировалось Cardagant; 27.02.2014 в 10:57.
Старый 27.02.2014, 10:50   #5  
Vasiliusis is offline
Vasiliusis
Участник
 
225 / 13 (1) ++
Регистрация: 30.01.2013
все перепробовал уже. тут нужно наверно в корне по-другому делать. Либо это вообще невозможно, хотя я сомневаюсь
Старый 27.02.2014, 10:56   #6  
Мартынов Дмитрий is offline
Мартынов Дмитрий
Участник
 
236 / 66 (3) ++++
Регистрация: 02.02.2004
Адрес: г. Москва
Цитата:
Сообщение от Vasiliusis Посмотреть сообщение
все перепробовал уже. тут нужно наверно в корне по-другому делать. Либо это вообще невозможно, хотя я сомневаюсь
А попробуйте использовать функцию buf2buf()
Она не передает системные поля...
X++:
    if (args() && args().record() && args().record().TableId == DataSource1.TableId)
    {
        buf2buf(args().record(), DataSource1);
        DataSource1.insert();
        DataSource1_ds.executeQuery();
    }
    else
Старый 27.02.2014, 11:01   #7  
Vasiliusis is offline
Vasiliusis
Участник
 
225 / 13 (1) ++
Регистрация: 30.01.2013
Цитата:
Сообщение от Мартынов Дмитрий Посмотреть сообщение
А попробуйте использовать функцию buf2buf()
Она не передает системные поля...
X++:
    if (args() && args().record() && args().record().TableId == DataSource1.TableId)
    {
        buf2buf(args().record(), DataSource1);
        DataSource1.insert();
        DataSource1_ds.executeQuery();
    }
    else
нет, это тоже не помогает. Проблем с копированием, кажись нет. мешает именно факт того, что используется args().record()... может эту ситуацию как-то нужно подругому обрабатывать для временных курсоров
Старый 27.02.2014, 11:25   #8  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
А в args().record() точно передается нужная запись? И RecId и TableId там верные?
Старый 27.02.2014, 11:26   #9  
Vasiliusis is offline
Vasiliusis
Участник
 
225 / 13 (1) ++
Регистрация: 30.01.2013
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
А в args().record() точно передается нужная запись? И RecId и TableId там верные?
Так точно
Старый 27.02.2014, 11:56   #10  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Странно все это. Точно без record работает?
А так сработает?
X++:
    select table1Record where table1Record.RecId == args().record().RecId;

    //Работает когда без record
    DataSource1.data(table1Record);
    DataSource1.insert();
    DataSource1_ds.executeQuery();
Старый 27.02.2014, 11:58   #11  
_AV_ is offline
_AV_
Участник
 
29 / 19 (1) ++
Регистрация: 27.02.2008
Адрес: Санкт-Петербург
Vasiliusis, а может все таки просто Grid не привязали к DataSource1 ?

Последний раз редактировалось _AV_; 27.02.2014 в 12:00.
Старый 27.02.2014, 12:09   #12  
Vasiliusis is offline
Vasiliusis
Участник
 
225 / 13 (1) ++
Регистрация: 30.01.2013
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Странно все это. Точно без record работает?
А так сработает?
X++:
    select table1Record where table1Record.RecId == args().record().RecId;

    //Работает когда без record
    DataSource1.data(table1Record);
    DataSource1.insert();
    DataSource1_ds.executeQuery();
Не сработало.
точно без рекорд идет. проверил еще раз.
Старый 27.02.2014, 12:09   #13  
Vasiliusis is offline
Vasiliusis
Участник
 
225 / 13 (1) ++
Регистрация: 30.01.2013
Цитата:
Сообщение от _AV_ Посмотреть сообщение
Vasiliusis, а может все таки просто Grid не привязали к DataSource1 ?
хех, не, там все привязано
Старый 27.02.2014, 12:13   #14  
Vasiliusis is offline
Vasiliusis
Участник
 
225 / 13 (1) ++
Регистрация: 30.01.2013
Товарищи, хочу добавить, что даже если я не использую args().record() в вызываемой форме, но при вызове этой самой формы я его задаю - все равно не срабатывает! видимо при вызове args().record() запускается _что_то_, что ломает всю комедию
Старый 27.02.2014, 12:27   #15  
_AV_ is offline
_AV_
Участник
 
29 / 19 (1) ++
Регистрация: 27.02.2008
Адрес: Санкт-Петербург
Кстати, а вы dynalinks почистить пробовали?
За это сообщение автора поблагодарили: Мартынов Дмитрий (2), Vasiliusis (1).
Старый 27.02.2014, 12:30   #16  
Vasiliusis is offline
Vasiliusis
Участник
 
225 / 13 (1) ++
Регистрация: 30.01.2013
Цитата:
Сообщение от _AV_ Посмотреть сообщение
Кстати, а вы dynalinks почистить пробовали?
щас попробую...
Старый 27.02.2014, 12:35   #17  
Vasiliusis is offline
Vasiliusis
Участник
 
225 / 13 (1) ++
Регистрация: 30.01.2013
Цитата:
Сообщение от _AV_ Посмотреть сообщение
Кстати, а вы dynalinks почистить пробовали?
Добавил в инит датасорса сброс диналинков и все сработало! Спасибо! Припоминаю, уже была у меня такая проблема... только щас вспомнил
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
element.args().record() вопрос... Samuel DAX: Программирование 4 28.09.2012 15:13
Динамическое создание DataSource на форме, и добавление элементов дизайна. epack DAX: Программирование 12 24.11.2010 15:31
args.record - как заставить работать в форме PurchLine? Gustav DAX: Программирование 9 12.01.2010 16:53
Почему может не передаваться args().record() ? egorych DAX: Программирование 5 03.11.2009 13:43
Использование caller в args Zoe DAX: Программирование 3 23.04.2008 12:18

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

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

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