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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.09.2016, 23:57   #1  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Проверка проимпортированных строк во время импорта data entities в AX 7
Дано: CSV-файл с, допустим, 10 строками. Импортируем его в AX 7 через Data Management > Import.

Подскажите, каким образом (в каком методе) при импорте каждой строки можно проверить содержимое уже проимпортированных строк? К примеру, для третьей строки проверить значение полей в проимпортированных двух строках?

Интересует, как это сделать перед созданием записи в staging table.

Спасибо.
Старый 03.09.2016, 08:34   #2  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Скорее всего никак. Так как из файла в staging копирует SSIS, собственно в этом и фишка. Всю логику можно прикрутить только при staging -> target.
Старый 03.09.2016, 12:33   #3  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Но методы defaultRow и defaultFields ведь вызываются для каждой записи? В качестве эксперимента, в них можно кэшировать значения полей и потом использовать кэш при следующих вызовах этих методов. Но при этом неясно, как проверять, что это кэш конкретно для этого импорта, а не для других.
Старый 03.09.2016, 15:26   #4  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Hyper Посмотреть сообщение
Но методы defaultRow и defaultFields ведь вызываются для каждой записи? в них можно кэшировать значения полей и потом использовать кэш при следующих вызовах этих методов.
Можно и левой пяткой правое ухо чесать, но в целом методы defaultRow и defaultFields предназначены для заполнения значений по умолчанию для полей, значения которых в импорте не заданы явно. Если вы в этих методах будете делать что-то другое, то испортите карму себе и вашим последователям.
Старый 03.09.2016, 16:05   #5  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Сам подход использования этого фрейморка связан с тем, что импорт разделен на два этапа:
  • Закачиваем в staging все "Как есть" (ну, может быть, с простейшими проверками). На этом этапе, возможно выполняем какие-то технические преобразования, например XLST).
  • А уже при перегонке staging -> target используем все прелести Аксаптовской бизнес логики.
Для простого импорта это работает (кстати, не только в AX7, что-то похожее есть в SAP, часть реализована в DAX2012). Как это использовать для ежедневной интеграции между разными системами сказать не могу - недостаточно знаний и опыта.
Старый 03.09.2016, 21:06   #6  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Можно и левой пяткой правое ухо чесать
Пока не попробуешь, не ясно, можно или нет.
Цитата:
Сообщение от gl00mie Посмотреть сообщение
методы defaultRow и defaultFields предназначены для заполнения значений по умолчанию для полей, значения которых в импорте не заданы явно. Если вы в этих методах будете делать что-то другое,
Я ничего другого в них делать не собираюсь. Допустим, заполнение полей по умолчанию должно зависеть от значений, заполненных в предыдущих строках. Да и пример я привел только для того, чтобы показать, что дело не ограничивается SSIS. Если есть другие методы, которые можно использовать, отлично - именно это я и хочу выяснить.
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
  • Закачиваем в staging все "Как есть" (ну, может быть, с простейшими проверками). На этом этапе, возможно выполняем какие-то технические преобразования, например XLST).
  • А уже при перегонке staging -> target используем все прелести Аксаптовской бизнес логики.
Я согласен. При этом хочется в полной мере понять возможности системы. К примеру, когда закачиваем в staging "все как есть", мы вполне можем инициализировать некоторые поля из number sequences. Если это максимум, что позволяет фреймворк - что ж, это тоже полезное знание.
Старый 04.09.2016, 04:53   #7  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
А чем вам этот staging так впал ? Почему не сделать, как нормальные люди, всю логику при копировании из staging в target ? Там даже можно реализовать свой метод copyCustomStagingToTarget и написать свою логи для копирования, как сделано в некоторых энтити которые заливают журналы.

Последний раз редактировалось skuull; 04.09.2016 в 05:56.
Старый 04.09.2016, 12:37   #8  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Цитата:
Сообщение от skuull Посмотреть сообщение
так впал ? Почему не сделать, как нормальные люди
Ага, спасибо. Отвечая на содержательную часть поста:

К примеру, есть стандартная data entity для ledger journals. Уникальный индекс у staging table такой же, как и у LedgerJournalTrans: номер журнала и номер строки. Если номер журнала может инициализироваться по умолчанию, то для избежания ошибки при импорте номер строки необходимо указывать в отдельном поле в файле.

Если же не хочется указывать номер строки в файле импорта, то есть 2 варианта:
  1. Изменить уникальный индекс. Разрешить пустой номер строки. Изменить логику копирования из staging в target для генерирования номеров строк.
  2. Изменить логику импорта в staging для генерирования номеров строк.
Вариант 2, судя по всему, не возможен.
Старый 05.09.2016, 11:06   #9  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от Hyper Посмотреть сообщение
Изменить уникальный индекс. Разрешить пустой номер строки. Изменить логику копирования из staging в target для генерирования номеров строк.
В сходной задаче делал именно так.
Старый 05.09.2016, 11:11   #10  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Цитата:
Сообщение от EVGL Посмотреть сообщение
В сходной задаче делал именно так.
Я тоже определился уже так делать, спасибо.
Теги
ax7, data entity

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
kurthatlevik: Master data concepts Blog bot DAX Blogs 0 18.02.2016 12:11
axsa: Power BI and Dynamics AX: Part 5: PowerBI.com and On Premise Data (Preview) Blog bot DAX Blogs 0 27.02.2015 15:11
axsa: Power BI and Dynamics AX: Part 4: Data Refresh and Q&A Blog bot DAX Blogs 0 25.02.2015 20:12
emeadaxsupport: AX Performance Troubleshooting Checklist Part 2 Blog bot DAX Blogs 0 09.09.2014 16:11
daxserver: Master data management in Microsoft Dynamics AX 2012 R3 Blog bot DAX Blogs 0 04.03.2014 03:12
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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