|   |   | 
| 
 | Как выгрузить формулу из 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) О, теперь понятно, спасибо!     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |