Имя: Пароль:
1C
1С v8
Выгрузка в Exel
0 Alexperumov
 
28.12.11
15:23
Excel     = Новый COMОбъект("Excel.Application");
ЛистЭксель= Excel.Workbooks.Open("C:\Documents and Settings\Ктото\Рабочий стол\2011.xls");


j=4;  //номер колонки ЗП в екселе ; j-2 - Колонка Фио ; j-1 - дата рождения.
Для Каждого Строка из ТаблицаЙокселя цикл //ТЗ из которой кидаем данные
   i=25;  //номер строки в екселе с которого начинается таблица
   
   Пока  i <= 245 цикл       // 245 последняя строка
       
       i=i+1;
    Если   Строка.Колонка2 = ЛистЭксель.Application.Cells(i,(j-2)).Value Тогда
       //Если  Формат(Дата(строка.Колонка3), "ДФ=""дд.ММ.гг""") =  Формат(Дата(ЛистЭксель.Application.Cells(i,(j-1)).Value),"ДФ=""дд.ММ.гг""") Тогда
            ЛистЭксель.Application.Cells(i,j).Value = СтрЗаменить(Строка.Колонка4, ".", ",");
     //КонецЕсли;
    КонецЕсли;              
   КонецЦикла;              
КонецЦикла;
 ЛистЭксель.Application.save();
 Excel.quit();

Из Таблицы пытаюсь записать в ексель зп, если ФИО совпадают -
ексель от этого виснет.. через диспетчер только снимается
Подскажите как получше это сделать? и явно тут корявость)
а 1с 8.2
1 Шапокляк
 
28.12.11
15:30
ЛистЭксель.Application.DisplayAlerts=False;
           
           ЛистЭксель.Application.ActiveWorkBook.Close(True);
как-то так
2 Web00001
 
28.12.11
15:34
(0) он виснет всегда или только иногда?
эксель закрываешь как в (1) или Excel.Quit()?
если виснет только иногда, я бы заинтересовался что в j
3 Шапокляк
 
28.12.11
15:57
А то еще виснет, если файл при этом открыт каким-то пользователем.
4 Alexperumov
 
28.12.11
16:02
(1) спасибо добавлю
Всегда виснет, не может пройти цикл, кстати да, до этого места ексель еще раз используется стоит Excel.Quit() и после него в диспетчере ексель остается висеть.. Файловая база кстати.
5 Alexperumov
 
28.12.11
16:05
(3) я поглядел - кроме меня этот файл открыть некому
6 Alexperumov
 
28.12.11
16:42
Походу комп слабый если поставить 30 строк то все проходит а 245 не тянет)
7 Alexperumov
 
29.12.11
09:33
Господа никто не знает как это оптимизировать? а то на серьёзном даже компе медленновасто..
8 mikecool
 
29.12.11
09:45
Для Каждого Строка из ТаблицаЙокселя цикл //ТЗ из которой кидаем данные

   i=25;  //номер строки в екселе с которого начинается таблица

   
   Пока  i <= 245 цикл       // 245 последняя строка
WTF??
9 mikecool
 
29.12.11
09:46
ТаблицаЙокселя  что здесь?
10 Alexperumov
 
29.12.11
09:52
Таблица Значений выгруженная с Екселя в которой потом изменены цифры на нужные
11 Alexperumov
 
29.12.11
09:54
Excel     = Новый COMОбъект("Excel.Application");
ЛистЭксель= Excel.Workbooks.Open(ПутьКФайлу);
ЛистЭксель.Application.DisplayAlerts=False;

j=4;  //номер колонки в екселе
i=25;  //номер строки в екселе с которого начинается таблица
   
Пока  i <= ВсегоСтрокВЭкселе  цикл       // 245 последняя строка
     i=i+1;
Для Каждого Строка из ТаблицаЙокселя цикл
   
    Если   Строка.Колонка2 = ЛистЭксель.Application.Cells(i,2).Value Тогда
       //Если  Формат(Дата(строка.Колонка3), "ДФ=""дд.ММ.гг""") =  Формат(Дата(ЛистЭксель.Application.Cells(i,(j-1)).Value),"ДФ=""дд.ММ.гг""") Тогда
            ЛистЭксель.Application.Cells(i,4).Value = Строка.Колонка4;
            Если Строка.Колонка4<>0 Тогда
            Сообщить( ЛистЭксель.Application.Cells(i,2).Value + "    "  + Строка.Колонка4);
            КонецЕсли;
     //КонецЕсли;
    КонецЕсли;              
   КонецЦикла;              
КонецЦикла;
 //ЛистЭксель.Application.ActiveWorkBook.Close(True);
 ЛистЭксель.save();
 Excel.quit();