Имя: Пароль:
1C
 
Выгрузка табличного документа в excel и преобразование формул
0 Dim_A_Z
 
28.11.21
11:26
Сохраняю табличный документ в Excel, в ячейках прописаны формы формата: "=-R[1]C+R[4]C"

Если после открыть Excel и пробежать по каждой ячейке с формулой, записав формулу в Ячейка.FormulaR1C1, то при открытии excel формулы считываются и происходит расчет значений.

По ссылке Перенести формулу в Excel при стандартном сохранении табличного документа 1с 8 нашел, что есть более быстрый метод (сообщение № 15), но не могу понять, как заставить его работать...

Пример моего кода (вместо закомментированного куска пришлось цикл по ячейкам сделать):

Excel = Новый COMОбъект("Excel.Application");

    Книга = Excel.WorkBooks.Open(Каталог+".xlsx");
    Excel.Visible = 0;
    Excel.ActiveWindow.DisplayWorkbookTabs = 1;
    Excel.ActiveWindow.TabRatio = 0.6;
    
    Лист = Книга.WorkSheets(1);
    
    ВсегоСтрок = Лист.Cells.SpecialCells(11).Row;//-кол-во строк всего

    ВсегоКолонок = Лист.Cells.SpecialCells(11).Column;//-кол-во колонок всего
    
    Для а = 1 По ВсегоСтрок Цикл
        Если Лев(Лист.Cells(а, 3).FormulaR1C1, 1) = "=" Тогда
            Лист.Cells(а, 3).FormulaR1C1 = Лист.Cells(а, 3).FormulaR1C1;
        КонецЕсли;
    Конеццикла;
    
    //Лист.Range(Лист.Cells(5,3),Лист.Cells(ТабДок.ВысотаТаблицы,3)).Select();
    //Excel.Selection.Replace("Истина", 1, 2, 1, 0, 0);
    //Excel.Selection.Replace("Да", 1, 2, 1, 0, 0);
    //Excel.Selection.Replace("Нет", 0, 2, 1, 0, 0);
    //Excel.Selection.Replace("Ложь", 0, 2, 1, 0, 0);
    
    Excel.DisplayAlerts = false;
    Excel.ActiveWorkbook.SaveAs(Каталог+".xlsx", 51);
    
    Excel.Application.Quit();
1 Михаил Козлов
 
28.11.21
12:05
Если честно, не понял: Лист.Cells(а, 3).FormulaR1C1 = Лист.Cells(а, 3).FormulaR1C1;
2 RomanYS
 
28.11.21
12:06
(0) может нужно всё-таки проверять Text и его писать в FormulaR1C1?
Что мешает включить отладчик?
3 Dim_A_Z
 
29.11.21
10:00
Еще раз. Код, который не закомментирован - работает, про него можно ничего не писать.

Интересует кусок кода, который закомментирован. Про него в другом посте писалось, что отрабатывает быстрее, чем перебор каждой ячейки. Но у меня он не отрабатывает, при открытии эксель нужно два раза тапнуть поле, чтобы оно в формулу преобразовалось. Поэтому пока оставил код, который с перебором.