Показать сообщение отдельно
Старый 15.01.2012, 03:14   #1  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
AX2012: импорт в inventTable из Excel
вот такая задача.

мне нужно сделать загрузку из эксельного файла в ах2012 в таблицу MyTable, которую я сам добавил и связал с inventTable по itemId

EcoResProduct.RecId == InventTable.Product
InventTable.ItemId == MyTable.ItemId (1:1 relation like that in ItemGroup for example)
BOMVersion.ItemId == MyTable.ItemId
BOM.ItemId == MyTable.ItemId

MyTable содержит информацию о пищевой ценности товаров, поскольку там очень много полей, то решено её хранить в виде отдельной таблицы, а не добавлять поля в InventTable

теперь проблемный момент.
как известно, в новой версии можно изменять код товара, и мы собираемся этим пользоваться. идея заключается в том, что itemId будет меняться, а ключом для внешней базы, из которой мы собираемся загружать допинфу в мою таблицу, является InventTable.Product

проще говоря, в загружаемом эксель файле есть поле product, которое является ключом во внешней базе и через которое, по идее, можно найти запись в моей таблице, но нет поля ItemId, которое является ключевым и требуется для создания (обновления) записи в моей таблице при загрузке из экселя.

например, для загрузки самой таблицы InventTable из экселя, требуется два заполненных ключевых поля: ItemId и Product.

менять ключевое поле в моей таблице я не могу, потому что по нему идёт привязка к версиям БОМ и строкам БОМ. а вот как извернуться при импорте так, чтобы находить нужную запись или создавать её -- это и есть вопрос.

то есть, при загрузке строки из экселя берём код Product, находим в InventTable нужный товар, и если он существует, создаём запись в моей таблице с данными из файла и кодом товара из InventTable:

MyTable.ItemId = InventTable::findByProduct().ItemId
MyTable.Field1 = Excel.Field1
...
MyTable.Insert() / update()

как говорится, помогите!

мерси!
__________________
Felix nihil admirari