Вот
X++:
static void ODBCConnection2Excel(Args _args)
{
LoginProperty LP = new LoginProperty();
OdbcConnection myConnection;
Statement myStatement;
ResultSet myResult;
DictTable dictTable = new DictTable(tableNum(InventTable));
ComExcelDocument_Ru Excel = new ComExcelDocument_Ru();
Com Doc;
Com App;
Com Worksheet;
Com Range;
int i = 1;
;
Excel.newFile("", false);
doc = Excel.getComDocument();
App = doc.Application();
Worksheet = App.ActiveSheet();
LP.setDSN("Axapta");
/* LP.setUsername(""); // Если необходимо - устанавливаем имя и пароль для подключения
LP.setPassword("");*/
try
{
myConnection = new OdbcConnection(LP);
}
catch
{
info("Check username/password.");
return;
}
myStatement = myConnection.createStatement();
myResult = myStatement.executeQuery(
strfmt("SELECT %3, %4 FROM %1 WHERE DataAreaId = '%2'",
dictTable.name(DBBackend::Sql), curext(),
dictTable.fieldName(fieldnum(InventTable, ItemId), DBBackend::Sql),
dictTable.fieldName(fieldnum(InventTable, ItemName), DBBackend::Sql)));
Range = Worksheet.Range("A1");
Range.NumberFormat("@");
Range.Value2(dictTable.fieldObject(fieldnum(InventTable, ItemId)).label());
Range = Worksheet.Range("B1");
Range.NumberFormat("@");
Range.Value2(dictTable.fieldObject(fieldnum(InventTable, ItemName)).label());
while (myResult.next())
{
Range = Worksheet.Range(ComExcelDocument_Ru::numToNameCell(1, i+1));
Range.NumberFormat("@");
Range.Value2(myResult.getString(1));
Range = Worksheet.Range(ComExcelDocument_Ru::numToNameCell(2, i+1));
Range.NumberFormat("@");
Range.Value2(myResult.getString(2));
if (i > 100) break;
i++;
}
Range = Worksheet.Range("A1", "B1");
Range = Range.EntireColumn();
Range.AutoFit();
Excel.visible(true);
}