07.09.2018, 08:58 | #1 |
Участник
|
Как получить поля из связанной таблицы 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) {} Заранее благодарю за ответ. |
|
07.09.2018, 09:29 | #2 |
Участник
|
Если я понимаю правильно, надо самостоятельно выбрать интересующие поля дополнительным запросом.
Еще есть navigation methods которые теоретически должны давать доступ к связаным записям если они входят в UnitOfWork - но я в таком виде ими не пользовался. |
|
|
За это сообщение автора поблагодарили: Fact (1). |
07.09.2018, 09:39 | #3 |
Участник
|
|
|
07.09.2018, 10:08 | #4 |
северный Будда
|
Ваш event handler привязан к конкретной таблице SMAServiceOrderTable. Поэтому и знает он по умолчанию только о ней. Все связанные таблицы надо выбирать кодом уже внутри него
__________________
С уважением, Вячеслав |
|
07.09.2018, 10:12 | #5 |
Участник
|
|
|
07.09.2018, 11:09 | #6 |
северный Будда
|
например так
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 |
Участник
|
Цитата:
Сообщение от 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); } |
|
|
|