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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.07.2019, 03:38   #1  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
568 / 360 (14) ++++++
Регистрация: 27.04.2006
Адрес: Montreal
D365 one-2-many and many-2-one DMF mapping
коллеги, что-то крыша едет уже... как можно захомутать, скажем, два поля в одно или одно поле использовать для mapping нескольких полей в DMF staging?

что нужно в итоге получить: на входе есть файл Excel с колонками companyId, transDate

хочется получить поле JournalBatchNumber as companyId_transDate, чтоб в дальнейшем получить журналы для разноски в главной книге по всем компаниям сразу.

раньше я бы просто нарисовал функцию для конвертации данных, а теперь не могу понять, с какого конца зацепиться
__________________
Felix nihil admirari
-----------------------------------------------------------------------------------------------
AX2012
Старый 13.07.2019, 12:03   #2  
EVGL is offline
EVGL
Moderator
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,832 / 2357 (86) +++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Так не получится. Эти модификации придется делать в Excel, включая дублирование колонок. Даже отдельное вычисляемое поле не поможет, поскольку система все равно будет ругаться на формальное отсутствие ключевых полей.
Старый 13.07.2019, 15:20   #3  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
568 / 360 (14) ++++++
Регистрация: 27.04.2006
Адрес: Montreal
Да этих файлов будут сотни! Не могу я влиять на их формирование за пределами аксы.

А вычисляемое поле же можно добавить не на staging таблице - оно, я так понимаю, вообще только для выгрузки, а не для импорта?

А в каком месте заполняются поля auto-generated? Например, lineNum? Я так понимаю, staging при этом должен писаться line by line? Значит, можно где-то влезть
__________________
Felix nihil admirari
-----------------------------------------------------------------------------------------------
AX2012
Старый 15.07.2019, 08:47   #4  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
957 / 325 (12) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Не знаю, как в 365, но в 12R3 для каждого загрузчика был класс-обертка, в котором были написаны методы автогенерации. Причем в этих методах могли вызываться общие классы для генерации, например, адресной информации, чтобы не рисовать ее заново.
Т.е. надо:
в промежуточную таблицу добавить поля типа TempJournalId и TempDataAreaId;
в классе импорта, который заполняет промежуточную таблицу, дописать заполнение полей;
в классе преобразования промежуточных данных в итоговые вместо прописывания номера журнала непосредственно из поля вызывать свой метод нумерации.
При этом, насколько я помню, нужно его дергать как для строк, так и для шапки.
В 12-ке это можно было сделать в форме с маппингом.
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 15.07.2019, 12:25   #5  
Stitch_MS is offline
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
299 / 288 (10) ++++++
Регистрация: 27.02.2006
Адрес: Дания
Я бы посмотрел, как SiteId и WarehouseId превращаются в InventDimId в стандартных сущностях.
Старый 15.07.2019, 13:08   #6  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
644 / 664 (24) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Запилите 2 виртуальных поля да склейте как вам надо. В документации они одно виртуальное поле расклеивают, а вам надо наоборот
За это сообщение автора поблагодарили: wojzeh (1).
Старый 15.07.2019, 16:11   #7  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
568 / 360 (14) ++++++
Регистрация: 27.04.2006
Адрес: Montreal
так это волшебство начинается на стадии move to target, а мне надо при заполнении staging

судя по дебаггеру, заполнение staging вообще происходит за пределами аксапты, и мы не можем повлиять на это. я вот только не могу поймать, где обрабатываются поля default и auto-generated.

Нажмите на изображение для увеличения
Название: DIXFStagingWrite.png
Просмотров: 60
Размер:	205.4 Кб
ID:	12348
__________________
Felix nihil admirari
-----------------------------------------------------------------------------------------------
AX2012

Последний раз редактировалось wojzeh; 15.07.2019 в 16:54. Причина: screenshot added
Старый 15.07.2019, 16:56   #8  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
568 / 360 (14) ++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от KiselevSA Посмотреть сообщение
Не знаю, как в 365, но в 12R3 ...
да... раньше был романтизм! была закуска!
__________________
Felix nihil admirari
-----------------------------------------------------------------------------------------------
AX2012
Старый 15.07.2019, 16:59   #9  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
568 / 360 (14) ++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от Stitch_MS Посмотреть сообщение
Я бы посмотрел, как SiteId и WarehouseId превращаются в InventDimId в стандартных сущностях.
это превращение происходит на стадии move to target

мне нужно сгенерить номер журнала из двух входящих полей - компании и даты.
поле Номер журнала является ключевым для staging, и заполняется автоматически , даже если я его не добавляю в mapping
__________________
Felix nihil admirari
-----------------------------------------------------------------------------------------------
AX2012
Старый 15.07.2019, 19:23   #10  
EVGL is offline
EVGL
Moderator
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,832 / 2357 (86) +++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от wojzeh Посмотреть сообщение
мне нужно сгенерить номер журнала из двух входящих полей - компании и даты.
поле Номер журнала является ключевым для staging, и заполняется автоматически , даже если я его не добавляю в mapping
Именно. Свойство "ключевости" расширить не удастся, я полагаю. Поэтому решением будет продублировать entity по другим именем и модифицировать ее. Это стало нормальным подходом в D365FO : )
Старый 15.07.2019, 19:51   #11  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
568 / 360 (14) ++++++
Регистрация: 27.04.2006
Адрес: Montreal
Да никто и не говорит о расширении - работаем на собственной вьюхе!

Пока всё, до чего дошел, это изменение номеров журналов по связано компания+дата в методе postGetStagingData или как он там называется.
__________________
Felix nihil admirari
-----------------------------------------------------------------------------------------------
AX2012
Старый 15.07.2019, 22:09   #12  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
644 / 664 (24) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Если это ваша ентити, то зачем оно вам в стеджинге ? там может быть что угодно, а потом клейте поля как хотите при копировании в таргет.
Старый 15.07.2019, 22:14   #13  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
568 / 360 (14) ++++++
Регистрация: 27.04.2006
Адрес: Montreal
моё в том смысле, что это копия LedgerJournalEntity, с помощью которого я хочу загрузить огромный эксельный файл с кучей транзакций для журналов ГК по сотне разных компаний.

на этапе импорта стейджинговая таблица сразу создаётся с номерами журналов, специфичным для каждой компании, а потом на этапе move to target создаются эти журналы insert_recordset, чтоб не лохматить бабушку
__________________
Felix nihil admirari
-----------------------------------------------------------------------------------------------
AX2012
Старый 15.07.2019, 23:46   #14  
twilight is offline
twilight
MCTS
MCBMSS
 
724 / 141 (6) +++++
Регистрация: 17.10.2004
Адрес: Москва
Суть staging в простом копировании данных в/из источника, оно не предназначено для преобразований.
__________________
I could tell you, but then I would have to bill you.
Старый 15.07.2019, 23:52   #15  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
568 / 360 (14) ++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от twilight Посмотреть сообщение
Суть staging в простом копировании данных в/из источника, оно не предназначено для преобразований.
суть в том, чтоб решать поставленную задачу.

загляни, например, в метод postGetStagingData - он как раз для того и вызывается, чтоб отрихтовать данные перед помещением в staging. но по факту это уже update того, что вставил SSIS package.
__________________
Felix nihil admirari
-----------------------------------------------------------------------------------------------
AX2012
Старый 16.07.2019, 11:50   #16  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,395 / 922 (33) +++++++
Регистрация: 22.07.2003
Адрес: МО
Можно поиграться с галочками в маппинге, или удалить поле из маппинга.
Старый 16.07.2019, 18:32   #17  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
568 / 360 (14) ++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от raz Посмотреть сообщение
Можно поиграться с галочками в маппинге, или удалить поле из маппинга.
ну с того и начал, что никакими галочками это волшебство не осуществить. остаётся лишь старое доброе вуду.

как доделаю, опубликую решение
__________________
Felix nihil admirari
-----------------------------------------------------------------------------------------------
AX2012
Теги
d365, dmf, mapping, staging

 

Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:42.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.