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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.03.2005, 10:40   #1  
Azat
Гость
 
n/a
SysRecordInfo
Подскажите пожалуйста как вызывается эта форма SysRecordInfo?
где указываются параметры вызова?
Старый 03.07.2006, 13:57   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2480 (88) +++++++++
Регистрация: 20.08.2005
X++:
switch (common.tableId)
{
    case tableNum(PurchTable):
        // таблица закупок
        break;
    case tableNum(PurchLine):
        // строки закупок
        break;
    default:    
        break;
}
__________________
Axapta v.3.0 sp5 kr2
Старый 03.07.2006, 14:11   #3  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
Наверное неправильно выразился.
Если открывать паспорт записи через контекстное меню, то оно правильно выводит информацию о записи, на которой у нас стоит курсор. Если сделать вызов паспорта записи через обычный пункт меню, то даже если у нас курсор будет стоять на строке закупки, информация выведется по самой закупке.
Старый 03.07.2006, 15:00   #4  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
Кажется дело в методе docCursor(). Если форма вызывается из контекстного меню, то этот метод возвращает нужную запись, а если форма вызывается по кнопке, тогда берется запись первого источника данных. Почему так?
Старый 03.07.2006, 15:06   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Возможно на MenuItem не указано свойство dataSource?
Именно эта строка (которая указана), будет передана как вызывающая
Старый 03.07.2006, 15:08   #6  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
На MenuItem dataSource не указывается, потому как их может быть два, и надо чтобы запись бралась именно текущего.
Старый 03.07.2006, 15:09   #7  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2480 (88) +++++++++
Регистрация: 20.08.2005
А "обычный пункт меню" - это МЕНЮ->КОМАНДА->ПАСПОРТ ЗАПИСИ? У меня в нем все работает нормально
__________________
Axapta v.3.0 sp5 kr2
Старый 03.07.2006, 15:09   #8  
itfs is offline
itfs
Участник
 
277 / 43 (2) +++
Регистрация: 18.07.2005
Адрес: Moscow
Почти у каждого элемента на форме есть свойство DataSource, а если оно пусто, то работает некое соглашение об умолчании ...

C уважением, itfs.
Старый 03.07.2006, 15:14   #9  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Ну а что вы тогда хотите, по умолчанию подставляется главный датасорс
Попробуйте по clicked MenuItem - закоментить супер и вызывать этот же MenuItem программно с указанием того датасорса который вам нужен в главный момент

И что значит из текущего - текущий есть и в том и в том гриде (active)
Старый 03.07.2006, 15:26   #10  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2480 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от kashperuk
Ну а что вы тогда хотите, по умолчанию подставляется главный датасорс
Попробуйте по clicked MenuItem - закоментить супер и вызывать этот же MenuItem программно с указанием того датасорса который вам нужен в главный момент
Не поможет. Ядро устанавливает датасоурс до вызова Clicked()
__________________
Axapta v.3.0 sp5 kr2
Старый 03.07.2006, 15:28   #11  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от AndyD
Не поможет. Ядро устанавливает датасоурс до вызова Clicked()
Поэтому я и говорю закоментить super() и создавать новый MenuFunction() с передачей в него Args, которые нужно.

А заодно и вопрос:
Цитата:
Сообщение от AndyD
Не поможет. Ядро устанавливает датасоурс до вызова Clicked()
А откуда ты это знаешь? В смысле, как определил?
Старый 03.07.2006, 15:16   #12  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
Обычный пункт меню, это просто меню добавленное в форму. Или можно просто кнопку добавить.
Старый 03.07.2006, 15:18   #13  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
2 Kashperuk: текущий, грубо говоря куда мы последний раз мышью тыкнули
2 itfs: соглашение не нужно, нужно чтобы текущий

При этом надо обойтись без программирования в форме. Т.е. просто кнопку вызова добавить и все. На крайний случай можно на методах кнопки попрограммировать. Но чтобы эти методы были общими.

Последний раз редактировалось vasiliy; 03.07.2006 в 15:24.
Старый 03.07.2006, 15:26   #14  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Пока в голову приходит только одно решение, как определить именно тот датасорс, по кторому кликнули последним - по переходу к контролу (onEnter) - какую-то переменную (boolean firstDataSource) делать true или false, в зависимости от того, какой датасорс кликнули. А потом по clicked кнопки вызывать MenuItem с тем, который последний кликнули.

(можно попробовать это на active datasource повесить - но не уверен что сработает)
Старый 03.07.2006, 15:30   #15  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
Цитата:
Сообщение от kashperuk
Пока в голову приходит только одно решение, как определить именно тот датасорс, по кторому кликнули последним - по переходу к контролу (onEnter) - какую-то переменную (boolean firstDataSource) делать true или false, в зависимости от того, какой датасорс кликнули. А потом по clicked кнопки вызывать MenuItem с тем, который последний кликнули.

(можно попробовать это на active datasource повесить - но не уверен что сработает)
Это опять же для каждого случая надо программировать, а хотелось бы общий механизм на все формы.
Старый 03.07.2006, 15:37   #16  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от vasiliy
Это опять же для каждого случая надо программировать, а хотелось бы общий механизм на все формы.
Общий механизм для всех форм есть и вызвыается через контекстное меню на любой записи Зачем еще один общий механизм?
Старый 03.07.2006, 15:40   #17  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
Цитата:
Сообщение от db
Общий механизм для всех форм есть и вызвыается через контекстное меню на любой записи Зачем еще один общий механизм?
Для кнопки
Старый 03.07.2006, 16:06   #18  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
X++:

public void mouseEnter(int _x, int _y, int _button, boolean _Ctrl, boolean _Shift)
{
formDataSource fds;
;
fds = element.docCursor().dataSource();

super(_x, _y, _button, _Ctrl, _Shift);

this.dataSource(fds.id());
}



Пока сделал так. На методе самой кнопки
Старый 03.07.2006, 16:30   #19  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2480 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от kashperuk
А откуда ты это знаешь? В смысле, как определил?
Проверить не сложно. Нажми мышкой на кнопку и, удерживая LMB, сдвинь с кнопки и отпусти
Или закоментарить super() в clicked() и подставить
X++:
info(element.objectSet().name());
Цитата:
Сообщение от vasiliy
Пока сделал так. На методе самой кнопки
А если пользователь зловредный окажется и будет пользоваться клавиатурой?
__________________
Axapta v.3.0 sp5 kr2
Старый 04.07.2006, 07:22   #20  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
Цитата:
Сообщение от AndyD

А если пользователь зловредный окажется и будет пользоваться клавиатурой?
Мда, надо подумать...
 


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

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

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