Имя: Пароль:
1C
1С v8
Вывод в шаблон excel c сохранением формул
0 EarthsSoul
 
07.06.12
13:24
Здравствуйте

В общем я хочу печатную форму выводить в Excel, нашел строчки кода которые обычную печатную форму выведут в Excel файл а мне надо что бы в Excel файле, где могут быть формулы, что бы они там были, т. е. вместо числа суммы должна быть формула произведения цены на количество, в ячейке под суммой должна быть формула суммы. И выводятся табличные части документа, где количество строк соответственно разное, значит нужны шаблоны в Excel...

Дак вот вопрос как сделать вывод в Excel по шаблону?
1 Администратор 1С
 
07.06.12
13:30
Пример вывода формул:
Excel     = Новый COMОбъект("Excel.Application");
WB         = Excel.Workbooks.Open(имяФайла);
WS         = WB.Worksheets(НомерЛиста);


   WS.Cells(НомерСтроки,КолонкаСумма).FormulaR1C1="=SUM(R[1]C:R["+Формат((i-ПерваяСтрока+1),"ЧГ=0")+"]C)";
2 EarthsSoul
 
07.06.12
13:47
(1) спасибо, но тогда

Вот вывожу Заказ поставщику в Excel, сколько будет строк в табличной части товары не известно, но ясно что таблица в Excel естественно нужна. Как быть?

1) Может быть можно (или даже нужно) у ячейки задавать свойства из 1с, типа грница такая то....
2) Или можно применить как механизм в 1с, использовать одну и туже строчку в виде шаблона, но только как тогда строки рас копировать?
3 Fish
 
07.06.12
13:56
(2) Например так:
Скопировать строку
Excel.Rows(НомерСтроки1+":"+НомерСтроки2).Select();
Excel.Selection.Copy();
       
Вставить строку
Excel.Rows(НомерСтроки1+":"+НомерСтроки2).Select();
Excel.Selection.Insert();
4 Undefined
 
07.06.12
13:56
(2)плохо понял в чем проблема. Может подойдет вот это. В макете в 1С вставляешь формулу Excel как текст. Потом в файле  эксель обходишь строки и если он находищь текст формулы (по ключевым словам например) выполняешь команду из (1), где вместо формулы указываешь текст из этой ячейки. Я так вывод прайса в ексель с поддержкой формул делал
5 EarthsSoul
 
07.06.12
14:03
Думаю (1) и (3) разрешат задачу, приступлю к реализации)), вернусь как только буду в тупике или решу задачу)), всем спасибо ))
6 Ant1773
 
07.06.12
14:41
(2)Я делал подобное на делфи:

 BufferGrid := VarArrayCreate([0,(QueryRpt.RecordCount),0,12],varVariant);
...
 Sheet.Rows['9'].Select;                                       //выделяем "идеальную строку"
 Exl.Selection.Copy;                                            //копируем строку
 Sheet.Rows['9:'+IntToStr(QueryRpt.RecordCount+6)].Select;  //выделяем необходимый диапазон
 Exl.Selection.Insert;                                       //добавляем строки
 Sheet.Range['A8',sheet.Cells.Item[QueryRpt.RecordCount+7,12]].Value2:=BufferGrid; //заполняем данными
Закон Брукера: Даже маленькая практика стоит большой теории.