Прочитайте мой постинг до конца и попробуйте повторить.
1. Создайте в базе SQL Server буферную (а не временную) таблицу, вот скрипт:
CREATE TABLE Ax_InventSum (Ax_ItemId VARCHAR(20), Ax_PhysicalInvent FLOAT)
2. В Аксапте создайте класс, у которого есть вот такой статический метод:
PHP код:
static void ExportInventSum()
{
SAP_DB sAP_DB = new SAP_DB();
InventSum inventSum;
InventTable inventTable;
;
sAP_DB.executeUpdate("DELETE FROM Ax_InventSum");
ttsbegin;
SAP_DB.beginTrans();
while select * from inventSum
join inventTable
where inventSum.ItemId == inventTable.ItemId
&& (inventTable.ItemGroupId == "Журналы" || inventTable.ItemGroupId == "Реклама")
{
sAP_DB.executeUpdate("INSERT INTO Ax_InventSum (Ax_ItemId, Ax_PhysicalInvent)" +
" VALUES ('" + inventTable.ItemId + "', " + strreplace(num2str(inventSum.physicalInvent(),10,2,2,0) + ")", ",", "."));
}
SAP_DB.commitTrans();
ttscommit;
}
3. Создайте класс, аналогичный моему классу SAP_DB. Этот класс должен:
а) коннектиться к той базе данных, в которой находится таблица Ax_InventSum
б) содержать методы, позволяющие выполнять нормальные (не-аксаптовские) SQL-запросы к базе данных. Для этого можно использовать аксаптовские классы ODBCConnection, либо CCADOConnection.
Описанный мною статический метод далее вызывается из сторонней программы через Axapta Com Connector. Этот метод пишет в буферную таблицу Ax_InventSum результат своей работы.
Считать остатки из буферной таблицы можно затем таким образом:
SELECT Ax_ItemId, SUM(Ax_PhysicalInvent) FROM Ax_InventSum GROUP BY Ax_ItemId