|  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 | 
|  |