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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.11.2015, 21:16   #1  
Start is offline
Start
Участник
 
39 / 9 (1) +
Регистрация: 21.07.2015
Адрес: Москва
Передача нескольких датасорсов формы в класс обработчик
Здравствуйте.
Есть форма на нескольких датасорсах. и в вызывающемся на ней по кнопке классе надо получить все три значения датасорсов текущей записи.
как это сделать? когда один нужен - указываю в свойствах кнопки датасорс и беру в классе args.record().
А когда нужны 3 ?
Старый 02.11.2015, 22:42   #2  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Цитата:
Сообщение от Start Посмотреть сообщение
надо получить все три значения датасорсов текущей записи
Исходя из этого, предполагаю, что все три датасорса как-то связаны (a-la Header -> Line -> Subline)

Если это так - передавайте Subline (через args.record(), как обычно), затем по ней в обработчике находите все остальное.

А вообще - опишите подробнее задачу, вы, ИМХО, маловато информации дали пока.
__________________
Best Regards,
Roman

Последний раз редактировалось RVS; 02.11.2015 в 22:47.
Старый 02.11.2015, 23:16   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Согласен с RVS - вы хотите чего-то странного.
обычно все проще делается.

Цитата:
Сообщение от Start Посмотреть сообщение
... надо получить ...
типичный паттерн для случаев, когда надо получить что-то из вызывающего, это... использовать args.caller() в форме, которая открывается по нажатию на кнопку.

в init() сперва проверяете, что тип у caller - тот самый, что нужен вам,
затем присваиваете caller() переменной нужного вам типа
и, наконец, выполняете обращение к методам и датасорсам вызывающей формы уже через переменную.

поищите по перекрестным ссылкам где и как используется args.caller.

но повторюсь - вы хотите чего-то странного.
обычно все проще делается.

Последний раз редактировалось mazzy; 02.11.2015 в 23:18.
Старый 03.11.2015, 00:15   #4  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Цитата:
Сообщение от Start Посмотреть сообщение
Здравствуйте.
Есть форма на нескольких датасорсах. и в вызывающемся на ней по кнопке классе надо получить все три значения датасорсов текущей записи.
как это сделать? когда один нужен - указываю в свойствах кнопки датасорс и беру в классе args.record().
А когда нужны 3 ?
Берите joinChild или joinParent от курсора, в зависимости от ситуации.
Старый 06.11.2015, 16:56   #5  
Start is offline
Start
Участник
 
39 / 9 (1) +
Регистрация: 21.07.2015
Адрес: Москва
Цитата:
Сообщение от _scorp_ Посмотреть сообщение
Берите joinChild или joinParent от курсора, в зависимости от ситуации.
как с ними работать с joinChild и joinParent не дадите ссылку? сначала подумал, что имеете ввиду просто join с таблицами,потом нагуглил пост с таким оператором, но ничего не понял.
Старый 06.11.2015, 23:02   #6  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Цитата:
Сообщение от Start Посмотреть сообщение
как с ними работать с joinChild и joinParent не дадите ссылку? сначала подумал, что имеете ввиду просто join с таблицами,потом нагуглил пост с таким оператором, но ничего не понял.
Код в Ах лучше всяких ссылок
Вот, например, форма RetailStoreItemPriceList (AX 2012 R3)
X++:
public display Price getPrice(RetailAssortmentLookup _retailAssortmentLookup)
{
    RetailChannelTable  localChannelTable;
    InventTableModule   localInventTableModule;
    RetailChannelItemPriceAgreement localChannelItemPriceAgreement;

    localChannelTable = _retailAssortmentLookup.joinChild().joinChild();
    localInventTableModule = localChannelTable.joinChild().joinChild();
    localChannelItemPriceAgreement = localInventTableModule.joinChild();
    return localChannelItemPriceAgreement.Amount ? localChannelItemPriceAgreement.Amount : localInventTableModule.Price;
}
Т.е. просто, вызывая указанный метод на курсоре, получаете связанный курсор в ту или иную сторону.
__________________
Кононов Пётр
За это сообщение автора поблагодарили: Start (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Передача нескольких строк в класс smailik DAX: Программирование 4 30.08.2013 11:28
С Формы в Класс FridmanV DAX: Программирование 26 18.04.2012 16:46
Проблема с передачей контролов из формы в класс matew DAX: Программирование 0 28.04.2008 17:37
Передача datasource формы в класс Yprit DAX: Программирование 2 06.10.2004 14:00
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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