Имя: Пароль:
1C
1С v8
1с.82. Выгрузить данные из 1с в excel
0 DoctorRoza
 
14.11.12
13:39
Коллеги, помогите пожалуйста! Видимо уже приелся код, поэтому не вижу ошибки. Нужно вставить формулу в ячейку. Гуглил, форумы читал, туташние и инфостаровские, но ответа не нашел.
Есть код

//
Попытка
   Эксель = Новый COMОбъект("Excel.Application");
Исключение        
   Возврат;
КонецПопытки;
   ///////////////
   //Эксель.Quit();
   ///////////////////////////////
ДиалогФыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогФыбораФайла.Фильтр                        = "Файл Excel (*.xls)|*.xls";
ДиалогФыбораФайла.Заголовок                        = "Выберите файл Excel";
   ДиалогФыбораФайла.ПредварительныйПросмотр        = Ложь;
ДиалогФыбораФайла.Расширение                    = "xls";
ДиалогФыбораФайла.ИндексФильтра                    = 0;
ДиалогФыбораФайла.ПроверятьСуществованиеФайла   = Ложь;
   
Если ДиалогФыбораФайла.Выбрать() Тогда
   Объект.Путь = ДиалогФыбораФайла.ПолноеИмяФайла;
КонецЕсли;
   
КаталогФайла = ДиалогФыбораФайла.Каталог;
ВыбФайл = Новый Файл(ДиалогФыбораФайла.ПолноеИмяФайла);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////        
Эксель.DisplayAlerts = False;
//////////////////////////////
Workbook = Эксель.Workbooks.Open(Объект.Путь);
Sheet = Workbook.Worksheets(1);
Workbook.ActiveSheet.UnProtect();
/////////////////////////////////
Выборка = ПолучитьВыборкуЦен(Истина,,,);
НомерСтроки = 8;
Для Каждого СтрокаТЧ Из Выборка Цикл
   Если ПустаяСтрока(СтрокаТЧ.Номенклатура) Тогда
       Sheet.Cells(НомерСтроки, 3).Value = Строка(СтрокаТЧ.Родитель);
   Иначе
       Sheet.Cells(НомерСтроки, 2).Value = СтрокаТЧ.Артикул;
       Sheet.Cells(НомерСтроки, 3).Value = Строка(СтрокаТЧ.Номенклатура);
       //
       Sheet.Cells(НомерСтроки, 5).Value = СтрокаТЧ.Цена;
   КонецЕсли;
   //////////////////////////////
   НомерСтроки = НомерСтроки + 1;
   ////////////////////////////////////////////
КонецЦикла;
//++++++++++++++++++
Формула = "=СУММПРОИЗВ(R[-"+Строка(НомерСтроки-10)+"]C:R[-1]C;R[-"+Строка(НомерСтроки-10)+"]C[1]:R[-1]C[1])";
   //Sheet.Cells(НомерСтроки, 5).FormulaR1C1 = Формула;
   //Sheet.Cells(НомерСтроки, 5).NumberFormat = "0,00;[Красный]-0,00";
//++++++++++++++++++++++    
////////////////////////////////////
Workbook.Save();
Workbook.Close();
Эксель.Application.Quit();
Эксель.Quit();
Эксель = 0;
//
Вообщем, видимо, что то не дописал и ни одной формулы вставить в нужную ячейку не могу, выдается критическая ошибка 1с. Стоит Excel 2007. 8.2.16.368. Ячейки из цикла заполняются, файл xls записывается. Вставляю Формулу непосредственно в ячейку файла xls, все работает. Кто может посмотрите свежим взглядом!
1 mzelensky
 
14.11.12
13:45
Что-то я не вижу страчку, где ты пытаешься формулу записать!?
2 DoctorRoza
 
14.11.12
13:46
поле ввода формулы закомментировал ..
3 mzelensky
 
14.11.12
13:49
(0) ну я так делал:

Лист.Cells(Счетчик,КолонкаКол).Formula = ...
4 DoctorRoza
 
14.11.12
13:53
вот то-то и оно, что не понятнопочему не работает :(
5 de Bug
 
14.11.12
13:54
(0) Сдается мне, что FormulaR1C1 не понимает русское название функции.
Пропиши формулу в Экселе и посмотри отладчиком, что стоит в FormulaR1C1.
6 DoctorRoza
 
14.11.12
13:57
тут все четко, формула взята из екселя непосредственно, русских букв нет, латиница.
7 DoctorRoza
 
14.11.12
13:57
формула, при вставке в сам ексель, работает нормально
8 dk
 
14.11.12
13:58
FormulaR1C1Local
9 DoctorRoza
 
14.11.12
14:00
хм .. сейчас проверю ..
10 mzelensky
 
14.11.12
14:00
(0) ну попробуй просте что-то туда вставить...не функцию, а что-то элементарное...там "2+5"..посмотри вообще вставится или нет.
11 DoctorRoza
 
14.11.12
14:01
нет .. не работает ..
12 DoctorRoza
 
14.11.12
14:02
да блим простешее даже не встает .. типа
"=R[-2]C*R[-2]C[1]"
13 dk
 
14.11.12
14:03
(11) значит дело в формуле (скобки, запятые, кавычки ...)
(10) +1
14 dk
 
14.11.12
14:04
либо адрес ячейки неверный
в отладчике погляди что Sheet.Cells(НомерСтроки, 5) возращает
15 DoctorRoza
 
14.11.12
14:07
так ведь
Sheet.Cells(НомерСтроки, 5) - comОбъект
16 Утконос
 
14.11.12
14:07
у тебя формула !!!
=СУММПРОИЗВ(R[--2]C:R[-1]C;R[--2]C[1]:R[-1]C[1])
17 DoctorRoza
 
14.11.12
14:09
и что?
18 dk
 
14.11.12
14:09
"--" косяк однако
19 DoctorRoza
 
14.11.12
14:10
двоного минуса нет!!
20 Утконос
 
14.11.12
14:10
(17) да ни ЧЁ !
R[--2] - исключительная ошибка при записи

Формула = "=СУММПРОИЗВ(R["+Строка(НомерСтроки-10)+"]C:R[-1]C;R["+Строка(НомерСтроки-10)+"]C[1]:R[-1]C[1])";
21 dk
 
14.11.12
14:10
хотя если "=R[-2]C*R[-2]C[1]" не пашет ..
22 DoctorRoza
 
14.11.12
14:11
=СУММПРОИЗВ(R[-91]C:R[-1]C;R[-91]C[1]:R[-1]C[1])
23 DoctorRoza
 
14.11.12
14:11
вот как есть
24 dk
 
14.11.12
14:12
а просто "=1*3" пашет?
25 dk
 
14.11.12
14:12
может рус/англ раскладка в формуле менялась
26 DoctorRoza
 
14.11.12
14:13
2+2 не вставляет .. :(
27 DoctorRoza
 
14.11.12
14:13
блин, ну что же ни так??
28 dk
 
14.11.12
14:16
поменяй ячейку на 1, 1
29 DoctorRoza
 
14.11.12
14:19
менял, явно указывал адреса, не помогает, что то видимо в файле. Это типа шаблон заполнения, а точнее, прайс с удаленными строками.
30 dk
 
14.11.12
14:20
может ячейка защищена или еще что
31 DoctorRoza
 
14.11.12
14:22
может быть .. :(
32 DoctorRoza
 
14.11.12
14:22
все равно спасибо за внимание .. :)