Tuesday, March 31, 2015

Обмен с Excel

Для продактов часто приходиться выгружать данные в Excel.
Для этого формирую быструю выгрузку

СтрокаПодключения = "
|Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source="+ИмяФайлаЭксель+";
|Extended Properties=""Excel 12.0 XML;HDR=YES;"";";


// Создаем соединение
Connection = Новый COMОбъект("ADODB.Connection");
Connection.Open(СтрокаПодключения);
Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = Connection;
Command.CommandType = 1;
//создаем таблицу

Command.CommandText = "CREATE TABLE [Данные_ОтгрузкаБонусы]
|(Менеджер TEXT(100) WITH Compression
|,НаправленияДеятельности TEXT(100) WITH Compression
|,Месяц date
|,ВыручкаUSD Decimal(12,2)
|,ВыручкаUAH Decimal(12,2)
|,СебестоимостьUSD Decimal(12,2)
|,СебестоимостьUAH Decimal(12,2)
|,ВаловаяПрибыльUSD Decimal(12,2)
|,ВаловаяПрибыльUAH Decimal(12,2));";

//И заполняем ее
Command.CommandText = "INSERT INTO [Данные_ОтгрузкаБонусы] VALUES ("
+"'"+СтрЗаменить(СтрокаТабл.НоменклатураОсновнойМенеджер,"'","''") + "'" //Менеджер
+",'"+СтрЗаменить(СтрокаТабл.НоменклатураНаправленияДеятельности,"'","''")+"'" //НаправленияДеятельности
+","+Формат((МесяцыНачало+(2*60*60*24)-Дата(1900,1,1))/(60*60*24),"ЧГ=0")+"" //Месяц
+","+Формат(СтрокаТабл.Выручка,"ЧЦ=12; ЧДЦ=2; ЧРД=.; ЧН=0; ЧГ=0")+"" //ВыручкаUSD
+","+Формат(СтрокаТабл.ВыручкаУпр1,"ЧЦ=12; ЧДЦ=2; ЧРД=.; ЧН=0; ЧГ=0")+"" //ВыручкаUAH
+","+Формат(СтрокаТабл.ОбщаяСебестоимость,"ЧЦ=12; ЧДЦ=2; ЧРД=.; ЧН=0; ЧГ=0")+"" //СебестоимостьUSD
+","+Формат(СтрокаТабл.ОбщаяСебестоимостьUAH,"ЧЦ=12; ЧДЦ=2; ЧРД=.; ЧН=0; ЧГ=0")+"" //СебестоимостьUAH
+","+Формат(СтрокаТабл.ВаловаяПрибыль,"ЧЦ=12; ЧДЦ=2; ЧРД=.; ЧН=0; ЧГ=0")+"" //ВаловаяПрибыльUSD
+","+Формат(СтрокаТабл.ВаловаяПрибыльУпр1,"ЧЦ=12; ЧДЦ=2; ЧРД=.; ЧН=0; ЧГ=0")+"" //ВаловаяПрибыльUAH
+");"+Символы.ПС;
Command.Execute();

Вот принципе и все.
Для расчета даты для excel в 1с использую следующую формулу
(Необходима дата + два дня - 1/1/1900) / (Количество секунд в сутках)
(МесяцыНачало+(2*60*60*24)-Дата(1900,1,1))/(60*60*24)

No comments:

Post a Comment