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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.09.2018, 08:58   #1  
Fact is offline
Fact
Участник
 
47 / 10 (1) +
Регистрация: 27.08.2018
Post Как получить поля из связанной таблицы D365FO
Добрый день.

Имеется 2 таблицы - ServiceOrders и HcmWorker.
При заполнении ServiceOrders у нас есть возможность выбрать работников, которые достаются из HcmWorkers.
В самой таблице ServiceOrders есть 2 поля, которые связаны с таблицей HcmWorker по RecID:

WorkerPreferredTechnician
WorkerResponsible

(т.е - ServiceOrder.HcmWorkerResponsible==HcmWorkers.RecId и HcmWorker.PreferredTechnician==HcmWorkers.RecId):

Я пытаюсь получить значение поля ФИО из HcmWorker при следующих событиях (при создании и обновлении)
X++:
    [DataEventHandler(tableStr(SMAServiceOrderTable), DataEventType::FinalInsertValidation)]
    public static void SMAServiceOrderTable_onFinalInsertValidation(Common sender, DataEventArgs e)
    {}

 [DataEventHandler(tableStr(SMAServiceOrderTable), DataEventType::Updated)]
    public static void SMAServiceOrderTable_onUpdated(Common sender, DataEventArgs e)
    {}
Вопрос в следующем - почему само поле, которое связано с RecId я получить могу(WorkerResponsible и WorkerPreferredTechnician), а другие данные из связанной таблицы - нет.

Заранее благодарю за ответ.
Старый 07.09.2018, 09:29   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Если я понимаю правильно, надо самостоятельно выбрать интересующие поля дополнительным запросом.

Еще есть navigation methods которые теоретически должны давать доступ к связаным записям если они входят в UnitOfWork - но я в таком виде ими не пользовался.
За это сообщение автора поблагодарили: Fact (1).
Старый 07.09.2018, 09:39   #3  
Fact is offline
Fact
Участник
 
47 / 10 (1) +
Регистрация: 27.08.2018
Цитата:
Сообщение от belugin Посмотреть сообщение
Если я понимаю правильно, надо самостоятельно выбрать интересующие поля дополнительным запросом.
Спасибо большое, можете привести небольшой пример использования?
Старый 07.09.2018, 10:08   #4  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,510 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Цитата:
Сообщение от Fact Посмотреть сообщение
почему само поле, которое связано с RecId я получить могу(WorkerResponsible и WorkerPreferredTechnician), а другие данные из связанной таблицы - нет
Ваш event handler привязан к конкретной таблице SMAServiceOrderTable. Поэтому и знает он по умолчанию только о ней. Все связанные таблицы надо выбирать кодом уже внутри него
__________________
С уважением,
Вячеслав
Старый 07.09.2018, 10:12   #5  
Fact is offline
Fact
Участник
 
47 / 10 (1) +
Регистрация: 27.08.2018
Цитата:
Сообщение от pitersky Посмотреть сообщение
Ваш event handler привязан к конкретной таблице SMAServiceOrderTable. Поэтому и знает он по умолчанию только о ней. Все связанные таблицы надо выбирать кодом уже внутри него
В том то и вопрос.. Как?
Старый 07.09.2018, 11:09   #6  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,510 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
например так
X++:
[DataEventHandler(tableStr(SMAServiceOrderTable), DataEventType::FinalInsertValidation)]
    public static void SMAServiceOrderTable_onFinalInsertValidation(Common sender, DataEventArgs e)
{
    SMAServiceOrderTable table = sender as SMAServiceOrderTable;
    HcmWorker                    worker = HcmWorker::find(table.HcmWorkerResponsible);
}
__________________
С уважением,
Вячеслав
За это сообщение автора поблагодарили: Fact (1).
Старый 07.09.2018, 11:32   #7  
Fact is offline
Fact
Участник
 
47 / 10 (1) +
Регистрация: 27.08.2018
Цитата:
Сообщение от pitersky Посмотреть сообщение
например так
X++:
[DataEventHandler(tableStr(SMAServiceOrderTable), DataEventType::FinalInsertValidation)]
    public static void SMAServiceOrderTable_onFinalInsertValidation(Common sender, DataEventArgs e)
{
    SMAServiceOrderTable table = sender as SMAServiceOrderTable;
    HcmWorker                    worker = HcmWorker::find(table.HcmWorkerResponsible);
}
Спасибо, это помогло!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX 2012 R2: импорт данных через Excel Add-in и добавление поля в стандартную таблицу Kabardian DAX: Программирование 1 13.02.2014 22:40
wrapper для поля таблицы HorrR DAX: Программирование 2 10.08.2009 17:54
Некорректно отображается значение текстового поля их приджойненой таблицы в вэб-гриде... glibs DAX: Программирование 0 20.04.2009 19:13
Как по имени(ID) поля таблицы установить значение поля. AKit_3 DAX: Программирование 9 24.12.2004 19:03
Как получить записи двух таблиц в виде одной таблицы? chi DAX: Программирование 32 16.12.2004 11:44

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

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

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