Для продактов часто приходиться выгружать данные в 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