| 
    
            
         
         | 
    
  | 
Как выгрузить формулу из 1С в excel | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        СантаМарина    
     25.07.14 
            ✎
    19:54 
 | 
         
        Всем доброго ночера!
 
        Пишу такое: xl = Новый COMОбъект ("Excel.Application"); xl.Workbooks.Add(); //Добавляем новый документ xl.Visible=1; //Делаем его видимым .......... xl.Cells(НомерСтроки,25).Value = "=RC[-13]/RC[-17]*100"; //промежуточный расчет xl.Cells(НомерСтроки,26).Value = "ЕСЛИ(1=1;1;0)"; //промежуточный расчет Там, где +,-,/,* - нормально выгружается и пересчитывается, как только доходит до именованной функции - ЕСЛИ, ОКРУГЛ - всё, вылетает с ошибкой. Пробовала всякие варианты - вместо Value - Formula, FormulaRC, FormulaR1C1, вместо ЕСЛИ - IF. Ничего не помогает. Может, коллективный разум что подскажет?  | 
|||
| 
    1
    
        probably    
     25.07.14 
            ✎
    20:00 
 | 
         
        = перед функцией стоит? или это только здесь опечатка?     
         | 
|||
| 
    2
    
        СантаМарина    
     25.07.14 
            ✎
    20:07 
 | 
         
        Стоит, это здесь опечатка.     
         | 
|||
| 
    3
    
        bolder    
     25.07.14 
            ✎
    20:20 
 | 
         
        (2) Фотки нет, непорядок)).     
         | 
|||
| 
    4
    
        q10n1k    
     25.07.14 
            ✎
    20:28 
 | 
         
        ExcelПриложение = Новый COMОбъект("Excel.Application");
 
        Книга = ExcelПриложение.WorkBooks.Add(); Лист = Книга.WorkSheets(1); Лист.Cells(1,1).Formula = "=IF(0<=R2C2,1,0)"; Странно, такой вот овнокод работает нормально...  | 
|||
| 
    5
    
        GreatOne    
     26.07.14 
            ✎
    02:47 
 | 
         
        Кто вылетает с ошибкой? 1С или ексель?
 
        может попробовать Param_if = "Если"; Строкаxl.Cells(НомерСтроки,26).Value = Param_if+"(1=1;1;0)";?     | 
|||
| 
    6
    
        DiMel_77    
     26.07.14 
            ✎
    03:20 
 | 
         
        (0) Для того чтобы использовать "рускоязычные" синонимы тебе нужно писать примерно так:
 
        Range.FormulaR1C1Local = ...  | 
|||
| 
    7
    
        СантаМарина    
     26.07.14 
            ✎
    13:46 
 | 
         
        (5)
 
        У нас excel установлен каким-то таким хитрым образом, что англоязычные формулы он не понимает вообще. В экселе пишу if - и он не отрабатывает её. Поэтому смысла как-то "if" ему передавать нет. Ошибка такая: {ВнешняяОбработка.Обработка.МодульОбъекта(153)}: Ошибка при установке значения атрибута контекста (FormulaR1C1Local) Лист.Cells(НомерСтроки,26).FormulaR1C1Local = "=ЕСЛИ(RC[-1]<0.1;25;1)"; //промежуточный расчет по причине: Произошла исключительная ситуация (0x800a03ec) в 1С-не.  | 
|||
| 
    8
    
        GreatOne    
     26.07.14 
            ✎
    14:15 
 | 
         
        если - зарезервированное слово, может поэтому ругается. Формулы никогда не использовался конечно, так что могу тупить. Я пример описал как раз передачу рарезервированного слова через переменную. Что мешает попробовать?     
         | 
|||
| 
    9
    
        СантаМарина    
     26.07.14 
            ✎
    14:26 
 | 
         
        А ведь заработало!
 
        Вот так: Лист.Cells(НомерСтроки,26).FormulaR1C1Local = "=ЕСЛИ(RC[-1]<0,1;25;1)" То есть я поменяла 0.1 на 0,1. Ну и FormulaR1C1Local конечно, потому что в других вариациях excel "ЕСЛИ" не хотел понимать. Хотя очень странно, всё же. Перед этим я пишу Лист.Cells(НомерСтроки,24).Value = "=0.2037*RC[-13]" - и там не стало ошибок, когда я вместо запятой поставила разделителем точку. А тут - наоборот - вместо точки - запятую.  | 
|||
| 
    10
    
        СантаМарина    
     26.07.14 
            ✎
    14:30 
 | 
         
        (8) Для 1С то, что я передаю в ячейку - просто строка и он не анализирует, что там внутри. А excel как раз и должен понять, что это его зарезервированное под формулы слово. КМК.     
         | 
|||
| 
    11
    
        bolder    
     26.07.14 
            ✎
    14:31 
 | 
         
        (9) Как раз все правильно.Нужно понимать , что региональный стандарт требует запятой , а RCLocal - это региональный стандарт.     
         | 
|||
| 
    12
    
        СантаМарина    
     26.07.14 
            ✎
    14:48 
 | 
         
        (11) О, теперь понятно, спасибо!     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |