Имя: Пароль:
1C
 
отчет в формате xls с формулами Excel ?
0 plant
 
08.02.10
09:11
Делается отчет в 1с ,сохраняется в xls с целью продолжить обработку в
Excel помимо данных хотелось бы и сохранять экселевские формулы (суммирования и прочие) поскольку потом их вводить весьма долго,
но если в ячейке записана формула при открытии в Excel она считается
константой хотя если дважды щелкнуть на этой ячейке мышью ,чтобы войти в редактирование а потом ничего не сделав выбрать другую ячейку
то формула становится формулой и считается ,но таких ячеек больше тысячи и дважды щелкать на каждой очень долго.
   Есть ли возможность решения проблемы ?
1 NikVars
 
08.02.10
09:14
(0) Хоть бы вместо философствований привел бы формулу что для не телепатов...
2 dk
 
08.02.10
09:19
конечно возможно
либо по OLE менять формулы
либо макросом в Excel
3 Seducer
 
08.02.10
09:19
4 plant
 
08.02.10
09:27
Простой пример ,отчет 1с содержит таблицу данных в правой колонке я помещаю например екселевскую формулу суммирования =СУММ(RC[-12]:RC[-1]), сохраняю в
формате xls , открываю в Excel формула не считает ,эксель воспринял что это
константа но если я двойным кликом выбираю эту ячейку для редактирования и ничего не сделав перехожу к другой то - все формула стала формулой и считает
5 NikVars
 
08.02.10
10:16
(4) "я помещаю например", как ты помещаешь например?
6 jbond
 
08.02.10
10:20
SpreadsheetML

только у 1С-ки нет подходящего шаблонизатора, а так очень быстро формируется (это текст) и не нужен Эксель

поддерживаются сводные таблицы
7 DrZombi
 
гуру
08.02.10
10:26
(4)Ексель лучше заполнять через АДО, а уж потом в оле его форматировать... получится быстрее ;)
8 plant
 
08.02.10
10:28
в конфигураторе записал в ячейку через буфер нужную формулу ,на мой взгляд проблема в том что Excel при открытии такого документа и не пытается обработать
эту ячейку как формулу но повторюсь если самому выбрать эту ячейку для редактирования и ничего не поменяв подтвердить то все сразу работает
9 Попытка1С
 
08.02.10
10:28
А в свойствах пересчитать весь лист не покатит? ф7 вроде
10 plant
 
08.02.10
10:42
извиняюсь если не могу понятно донести суть проблемы ,попробую еще раз :
  мне не нужен механизм OLE и прочие связи , мне нужно просто сохранить отчет
в формате xls ,в этом отчете наряду с данными хотелось бы и иметь ячейки с экселевскими формулами потому что потом их очень долго вставлять а при формировании отчета они сами располагаются в нужных местах ,а формулы мне эти нужны для анализа вариантов при изменении некоторых данных , Excel при открытии
такого документа считает эти формулы - константами , но при выборе и подтверждении этих ячеек все становится в порядке , но выбирать и подтверждать
каждую такую ячейку трудоемко их больше тысячи .

  Ф7 - проверка орфографии
11 1Сергей
 
08.02.10
10:45
ну там пункт меню Сервис > Параметры > Вычисления > Кнопка "Пересчет листа"
12 plant
 
08.02.10
10:50
судя по всему пересчет работает для опознанных формул , получается если я в экселе набираю знак = то он сразу понимает "будет формула" , а если ячейка записана не в экселе и начинается на знак = ему пофиг
13 FN
 
08.02.10
11:09
(12) сначала сохраняешь в xls, потом открываешь по ОЛЕ и во всех ячейках, значение которых начинается с "=" проставляешь Cells().FormulaLocal=Cells().Value.
14 plant
 
08.02.10
11:54
Это вариант (еще бы вспомнить свою практику работы с OLE) ,а при помощи макросов
возможно ?
15 dk
 
08.02.10
12:50
(14) ты (2) читал?
16 plant
 
08.02.10
12:54
(15) не совсем понял
17 plant
 
08.02.10
12:55
в (4) я приводил формулу или нужно что то еще
18 plant
 
08.02.10
13:01
dk извиняюсь неправильно посмотрел номера ,но VBA особо не знаю
получается что я могу в 1С записывать формулы ,но потом в экселе
нужно при помощи макроса находить эти ячейки и втолковывать
экселю что это формулы ?
19 NikVars
 
08.02.10
13:15
Процедура СоздатьНужныйФайл()
   Эксел= СоздатьОбъект("Excel.Application");
   ФайлЭксел = Эксел.Workbooks.Open(НужныйФайл); //Открываем нужнфй файл
   НашЛист = ФайлЭксел.Sheets(НужныйЛист); //Устанавливаем нужный лист        
   КолСтрокЭксел=Эксел.Cells(1,1).SpecialCells(11).Row;  //Так можно узнать количество строк в таблице Эксел!!!
   Если КонСтр=0 Тогда КонСтр=КолСтрокЭксел; КонецЕсли;
   //1.Добавляем  из файла
   Для Н = 1 По ТД.КоличествоСтрок() Цикл                            
       ТД.ПолучитьСтрокуПоНомеру(Н);
       //Если СокрЛП(ТД.Е)<>"" Тогда            
       //    НашЛист.Cells(ТД.НомСтр, 5).Value = Число(ТД.Е);
       //КонецЕсли;
       Если СокрЛП(ТД.Формула)<>"" Тогда        
           НашЛист.Cells(ТД.НомСтр, 5).FormulaLocal = СокрЛП(ТД.Формула); //FormulaLocal для русских формул!!!!
           //НашЛист.Cells(ТД.НомСтр, 5).Formula = СокрЛП(ТД.Формула);//Не работает нужно на формуле нажимать F2 для ее пересчета!!!!
       КонецЕсли;
       Состояние("Заполнение данных: "+Н+" из "+КонСтр);
       //Тест
       Если (Н>20) и (ТестД=1) Тогда Прервать; КонецЕсли;
   КонецЦикла;  //Н = НачСтр
   ФайлЭксел.SaveAs(СокрЛП(НужныйФайл));
   Эксел.WorkBooks.close();
   Эксел.Quit();        
КонецПроцедуры //СоздатьНужныйФайл()
20 dk
 
08.02.10
13:24
(18) да
перебирать всю область с данными, см. (13)
21 plant
 
08.02.10
14:10
NikVars cпасибо большое ,но более легкий для меня вариант все-таки
используя макрос перебрать таблицу .Если можно напишите как в VBA
написать цикл вида : от колонки № до колонки № цикл
                        от строки № до строки № цикл
                        конец цикла
                    конец цикла
22 Табуретко
 
08.02.10
14:16
А если создать пустую таблицу с забитыми формулами и заполнять по Оле данными из эски? (как вариант)
23 Табуретко
 
08.02.10
14:17
у меня пара отчетов для супервайзеров по понедельникам так выгружается...
24 plant
 
08.02.10
14:37
(22) придется затратить n-ное количество времени на доработку отчета и проблема
еще в том что в зависимости от галочек меняется формат таблицы ,что решается
если формулы прописываются тоже в 1С
25 plant
 
09.02.10
05:29
В общем то вопрос решен : после открытия отчета в Excel запускается макрос
который проходит все ячейки и в каждой выполняет ActiveCell.FormulaLocal=ActiveCell.Value после этого формулы оживают ,наверно
топорно ,зато быстро
  Спасибо всем кто откликнулся.
Ошибка? Это не ошибка, это системная функция.