13.07.2019, 03:38 | #1 |
Участник
|
D365 one-2-many and many-2-one DMF mapping
коллеги, что-то крыша едет уже... как можно захомутать, скажем, два поля в одно или одно поле использовать для mapping нескольких полей в DMF staging?
что нужно в итоге получить: на входе есть файл Excel с колонками companyId, transDate хочется получить поле JournalBatchNumber as companyId_transDate, чтоб в дальнейшем получить журналы для разноски в главной книге по всем компаниям сразу. раньше я бы просто нарисовал функцию для конвертации данных, а теперь не могу понять, с какого конца зацепиться
__________________
Felix nihil admirari |
|
13.07.2019, 12:03 | #2 |
Banned
|
Так не получится. Эти модификации придется делать в Excel, включая дублирование колонок. Даже отдельное вычисляемое поле не поможет, поскольку система все равно будет ругаться на формальное отсутствие ключевых полей.
|
|
13.07.2019, 15:20 | #3 |
Участник
|
Да этих файлов будут сотни! Не могу я влиять на их формирование за пределами аксы.
А вычисляемое поле же можно добавить не на staging таблице - оно, я так понимаю, вообще только для выгрузки, а не для импорта? А в каком месте заполняются поля auto-generated? Например, lineNum? Я так понимаю, staging при этом должен писаться line by line? Значит, можно где-то влезть
__________________
Felix nihil admirari |
|
15.07.2019, 08:47 | #4 |
Злыдни
|
Не знаю, как в 365, но в 12R3 для каждого загрузчика был класс-обертка, в котором были написаны методы автогенерации. Причем в этих методах могли вызываться общие классы для генерации, например, адресной информации, чтобы не рисовать ее заново.
Т.е. надо: в промежуточную таблицу добавить поля типа TempJournalId и TempDataAreaId; в классе импорта, который заполняет промежуточную таблицу, дописать заполнение полей; в классе преобразования промежуточных данных в итоговые вместо прописывания номера журнала непосредственно из поля вызывать свой метод нумерации. При этом, насколько я помню, нужно его дергать как для строк, так и для шапки. В 12-ке это можно было сделать в форме с маппингом.
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. |
|
15.07.2019, 12:25 | #5 |
Участник
|
Я бы посмотрел, как SiteId и WarehouseId превращаются в InventDimId в стандартных сущностях.
|
|
15.07.2019, 13:08 | #6 |
Участник
|
Запилите 2 виртуальных поля да склейте как вам надо. В документации они одно виртуальное поле расклеивают, а вам надо наоборот
|
|
|
За это сообщение автора поблагодарили: wojzeh (1). |
15.07.2019, 16:11 | #7 |
Участник
|
так это волшебство начинается на стадии move to target, а мне надо при заполнении staging
судя по дебаггеру, заполнение staging вообще происходит за пределами аксапты, и мы не можем повлиять на это. я вот только не могу поймать, где обрабатываются поля default и auto-generated.
__________________
Felix nihil admirari Последний раз редактировалось wojzeh; 15.07.2019 в 16:54. Причина: screenshot added |
|
15.07.2019, 16:56 | #8 |
Участник
|
да... раньше был романтизм! была закуска!
__________________
Felix nihil admirari |
|
15.07.2019, 16:59 | #9 |
Участник
|
Цитата:
мне нужно сгенерить номер журнала из двух входящих полей - компании и даты. поле Номер журнала является ключевым для staging, и заполняется автоматически , даже если я его не добавляю в mapping
__________________
Felix nihil admirari |
|
15.07.2019, 19:23 | #10 |
Banned
|
Именно. Свойство "ключевости" расширить не удастся, я полагаю. Поэтому решением будет продублировать entity по другим именем и модифицировать ее. Это стало нормальным подходом в D365FO : )
|
|
15.07.2019, 19:51 | #11 |
Участник
|
Да никто и не говорит о расширении - работаем на собственной вьюхе!
Пока всё, до чего дошел, это изменение номеров журналов по связано компания+дата в методе postGetStagingData или как он там называется.
__________________
Felix nihil admirari |
|
15.07.2019, 22:09 | #12 |
Участник
|
Если это ваша ентити, то зачем оно вам в стеджинге ? там может быть что угодно, а потом клейте поля как хотите при копировании в таргет.
|
|
15.07.2019, 22:14 | #13 |
Участник
|
моё в том смысле, что это копия LedgerJournalEntity, с помощью которого я хочу загрузить огромный эксельный файл с кучей транзакций для журналов ГК по сотне разных компаний.
на этапе импорта стейджинговая таблица сразу создаётся с номерами журналов, специфичным для каждой компании, а потом на этапе move to target создаются эти журналы insert_recordset, чтоб не лохматить бабушку
__________________
Felix nihil admirari |
|
15.07.2019, 23:46 | #14 |
MCTS
|
Суть staging в простом копировании данных в/из источника, оно не предназначено для преобразований.
__________________
I could tell you, but then I would have to bill you. |
|
15.07.2019, 23:52 | #15 |
Участник
|
Цитата:
загляни, например, в метод postGetStagingData - он как раз для того и вызывается, чтоб отрихтовать данные перед помещением в staging. но по факту это уже update того, что вставил SSIS package.
__________________
Felix nihil admirari |
|
16.07.2019, 11:50 | #16 |
NavAx
|
Можно поиграться с галочками в маппинге, или удалить поле из маппинга.
|
|
16.07.2019, 18:32 | #17 |
Участник
|
ну с того и начал, что никакими галочками это волшебство не осуществить. остаётся лишь старое доброе вуду.
как доделаю, опубликую решение
__________________
Felix nihil admirari |
|