Уважаемые коллеги! с Аксаптой мое знакомство началось недели 2 назад, а с X++ и того меньше. Начальство дало задание написать обработку для выгрузки данных SQL запроса в CSV файл. Была предпринята попытка сделать это таким образом:
Но успехом она не увенчалась, если не сложно поясните в чем моя ошибка.
Версия 2,5
X++:
static void da_Import_ItemId_To_CSV(Args _args)
{
Dimensions dimensions;
filepath templateFilePath;
m_TransportSalesPacking excel;
ComExcelDocument_RU excelDoc;
IO io;
FileName fileName, fileNameFrom;
AsciiIO IoFrom, IoClass;
IoClass = new AsciiIO(fileName, 'W');
IoFrom = new AsciiIO(fileNameFrom, "R");
if (! IoClass)
throw error(strFmt("@DIS100404",fileName));
if (! IoFrom)
throw error(strFmt("@DIS100404",fileNameFrom));
static str any2csvField(anyType _perem)
{
str csvField;
;
csvField = '"' + strReplace(_perem,'"',"'") + '"';
if (typeOf(_perem) == Types::STRING)
return '"' + strReplace(_perem,'"',"'") + '"';
return strFmt("%1",_perem);
}
static str con2csvStr(container _con)
{
counter i;
str resu;
;
for(i=1; i <= conLen(_con); i ++)
{
if (i > 1)
resu += ";";
resu += m_proc::any2csvField(conPeek(_con,i));
}
return resu;
}
// void csvReport()
// {
void Insert2CSV(anytype param1, anytype param2, anytype param3, anytype param4)
{
;
//??? ???? ?????????? ?????? ? CSV
io.write(m_proc::con2csvStr([
param1
, param2
, param3
, param4
]));
}
boolean atLeastOnePosted = false;
boolean allPosted = true;
;
this.Insert2CSV( "??????"
"???????",
"????????????",
"??.???",
);
// ??????? ???????? ?????? ??????
SELECT InventTable.ItemGroupId, InventTable.ItemId, InventTable.ItemName, InventTableModule.ModuleType,
InventTableModuleUnitId, InventTableModule.Price
FROM InventTable JOIN InventTableModule WHERE InventTable.ItemGroupId=="???"
{
this.Insert2CSV( InventTable.ItemGroupId,
InventTable.ItemId,
InventTable.ItemName,
InventTableModule.ModuleType,
InventTableModuleUnitId,
InventTableModule.Price
);
}
io.finalize();
al_FileUtils::reportSaveFile(Name_File);
}