Имя: Пароль:
1C
1C 7.7
v7: Автопересчет формул
0 Генетический мусор
 
09.10.12
09:23
Работаю с компонентой SpreadSheet.dll, смысл в "нормальном" виде, с группировками и прочее из 7.7. сохранить файл в эксель, в одной из строк таблицы формула - к примеру такая =37,6/100*(100-E16), выгружает в эксель не формулой, а строкой, как победить, причем я по этой ячейке в сформированном файле просто щелкаю и получается формула. В SpreadSheet.dll есть метод АвтопересчетФормул(), но почему то он у меня не работает, разработчику писал, может кто сталкивался. Заранее благодарю
1 dk
 
09.10.12
09:33
юзай Excel по OLE )
2 Генетический мусор
 
09.10.12
09:37
да уже столько написано((((
3 АЛьФ
 
09.10.12
09:39
Формулу в Эксель не выгрузить. Об этом подробно написано на форуме разработчика.
4 Генетический мусор
 
09.10.12
10:53
3) никакими средствами? или через оле можно, погуглил, тоже чего-то не очень нашел
5 dk
 
09.10.12
11:02
по OLE можно почти все
6 Генетический мусор
 
09.10.12
13:37
ну туплю(((

   Для Сч = 16 По КоличествоСтрок Цикл
       НомерСтроки    = Формат(Сч, "ЧГ=0");
       НомерКолонки    = 5;
       //Если формула > 0 Тогда
       //Иначе
       //    Формула  = Число(Excel.Cells(Сч,5).Value);
       //КонецЕсли;
       Выборка  = Excel.Cells(Сч,4).Value;
       Если Число(Выборка) > 0 Тогда
            //Excel.Cells(Сч,5).Formula = " = Выборка / 100"// * 100-формула"; //Excel.Cells(16,5).Value);
            // проставим формулу для пересчета количества в количество упаковок
            Попытка
               Лист.Cells(НомерСтроки,НомерКолонки).Formula = "=RC[-НомерКолонки]/100";///ну хоть такую =9,35/100*(100-E16)
            Исключение
            КонецПопытки;
       КонецЕсли;
   КонецЦикла;
   Excel.Visible = 0;
   Книга.Save();
   Книга.Close();
7 Тьма
 
09.10.12
13:41
Лист.Cells(Т2.НомерСтроки+3,Т1.НомерСтроки*3+3).FormulaR1C1 = "=RC[-2]*RC[-1]";
8 Генетический мусор
 
10.10.12
07:39
спасибо други, засунул формулу, как мне теперь ее отформатировать программно что там формат этой ячейки денежный и там два знака после запятой:). Заранее благодарю
9 dk
 
10.10.12
08:09
Лист.Cells(Т2.НомерСтроки+3,Т1.НомерСтроки*3+3).NumberFormat = "0.00";
научись пользоваться макросами
10 Тьма
 
10.10.12
08:12
Лист.Cells(Т2.НомерСтроки+3,3).NumberFormat="0"+Экс.decimalseparator+"00";
кроме того, эксель любит воспринимать числа как текст и не проводит над ними затем операции сложения-вычитания. Типа "число сохранено как текст". Недавно боролся с этим, нашел такой не очень красивый, но работающий метод:
Лист.Cells(Т2.НомерСтроки+3,Т1.НомерСтроки*3+2).Value="@"+сокрлп(формат(Цена,"Ч012.2,"));
...
Лист.Cells.Replace("@", "");
Программист всегда исправляет последнюю ошибку.