Имя: Пароль:
1C
 
Перенести формулу в Excel при стандартном сохранении табличного документа 1с 8
0 DmitriyDI
 
24.05.18
15:36
Добрый день!
Есть табличный документ, в ячейке пишу: "=R6C2 - R10C2 - R12C2 - R14C2 - R17C2", сохраняю, таб. док сохраняю через Записать().

В сохраненном документе, отображается вместо моей формулы текст, если два раза по нему нажать, то появляется формула, как можно сделать, чтобы формула появлялась сразу при открытии эксель файла?
1 DmitriyDI
 
24.05.18
15:40
(0) Может какой скрипт после сохранения над файлом экселевским выполнить. Или может обойти его перебором и что-нибудь указать?
2 Масянька
 
24.05.18
15:42
(0) В настройках Excel - "показывать формулы, а не их значения".
3 bolobol
 
24.05.18
15:44
(2) Это как поможет?
4 DmitriyDI
 
24.05.18
15:47
(2) Это не то
5 DmitriyDI
 
24.05.18
15:51
(0) пока выход видится такой, после сохранения подключаться к файлу, пробегать перебором, если текст ячейки начинается с =, то писать что-то вроде Ехсел.Cells(1, 3).FormulaR1C1.FormulaR1C1 = "=R6C2 - R10C2 - R12C2 - R14C2 - R17C2";
6 Gantosha
 
24.05.18
15:54
FormulaR1C1 ты формулу куда пишешь - ее вот сюда надо писать .
7 DmitriyDI
 
24.05.18
15:55
(6) я формулу пишу в табличный документ 1Совский)) потом сохраняю как эксель
8 Gantosha
 
24.05.18
15:57
ну, ето я не знаю ..у мне есть формулы , но там сохраняется в лист .. правда механизм расчета куда что писать дикий.
Но видимо с формулами и записью в 1с отчет тоже не прокатило. Иначе бы не стал мучатся.
9 DmitriyDI
 
24.05.18
16:32
Есть еще варианты решения данной задачи? Пока пытаюсь заставить ком экселевский работать на сервере.
10 bolobol
 
24.05.18
16:38
Можно попробовать в Эксель.Аппликейшн открыть этот файл и Селект(); Селектион.Реплэйс("=", "="); сделать. Интерактивно срабатывает.
11 DmitriyDI
 
24.05.18
17:01
(10) Понял, спасибо! Буду пробовать.
12 DmitriyDI
 
24.05.18
17:33
(0) дописал так, работает, если кому нужно (Вложение - полное имя сохраненного файла эксель):

    Excel = Новый COMОбъект("Excel.Application");  
    Книга = Excel.WorkBooks.Open(Вложение);
    Excel.Visible = 0;
    Excel.ActiveWindow.DisplayWorkbookTabs = 1;
    Excel.ActiveWindow.TabRatio = 0.6;    
    
    Лист = Книга.WorkSheets(1);
    
    ВсегоСтрок = Лист.Cells.SpecialCells(11).Row; //-кол-во строк всего
    ВсегоКолонок = Лист.Cells.SpecialCells(11).Column; //-кол-во колонок всего
    
    Для а = 1 По ВсегоСтрок Цикл
        Для б = 1 по ВсегоКолонок Цикл
            Если Лев(Лист.Cells(а, б).FormulaR1C1, 1) = "=" Тогда
                Лист.Cells(а, б).FormulaR1C1 = Лист.Cells(а, б).FormulaR1C1;
            КонецЕсли;
        Конеццикла;
    Конеццикла;
    
    FullName = Excel.ActiveWorkbook.FullName;            
    Excel.DisplayAlerts = false;
    Excel.ActiveWorkbook.SaveAs(FullName, 51); // 18 - xls 97-2003; 51 - xlsx 2007-2013
    //Excel.Visible = 1;       // если нужно поработать дальше с книгой
    Excel.Application.Quit(); // если просто выходим
13 bolobol
 
25.05.18
09:15
А не проверял, случаем, с Селект(); Селектион.Реплэйс("=", "="); ? - не работает?
14 DmitriyDI
 
25.05.18
09:56
(13) нет, точно синтаксиса не знаю, поэтому не стал
15 bolobol
 
25.05.18
10:18
Для колонки "й", как взять именно колонку целиком, или от колонки до колонки, или весь лист - чтоб более просто - не скажу, а и почему именно так написано - тоже, Параметры - первый "на что меняем", а далее что за ,2,1,0,0 - тоже не вспомню, но, думаю, МСДН может пролить свет:
                                Эксель.Range(Эксель.Sheets(_ИспользуемаяСтраница).Cells(_НомерСтрокиЗаголовков+1,й),
                                    Эксель.Sheets(_ИспользуемаяСтраница).Cells(КонечнаяСтрокаДанных,й)).Select();
                                Эксель.Selection.Replace("Истина", 1, 2, 1, 0, 0);
                                Эксель.Selection.Replace("Да", 1, 2, 1, 0, 0);
                                Эксель.Selection.Replace("Нет", 0, 2, 1, 0, 0);
                                Эксель.Selection.Replace("Ложь", 0, 2, 1, 0, 0);
16 bolobol
 
25.05.18
10:19
Первый - "что меняем", в второй - "на что", и далее ",2,1,0,0"- непонятных
17 bolobol
 
25.05.18
10:20
Эксель = новый COMОбъект("Excel.Application");
18 DmitriyDI
 
30.10.18
17:56
(15)  работает, и быстрее чем мой вариант, этот вариант в итоге и оставил.