Версия для печати темы (https://pro1c.org.ua/index.php?s=bd7a10b209124bf8690dac05a96455fe&showtopic=35165)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Конкатенация символа арифметической операции в формуле.

Автор: miha74 09.02.17, 13:43

Дорогі друзі! Подскажите, есть ли какое-то написание для конкатенации символа арифметической операции в формуле. Для примера такая функция:

// Операция - строчное значение(+ или - или * или /)
Функция АрифметическаяОперация(Перем1,Перем2,Операция)
    Перем Результат;
    
    Результат = Перем1+Операция+Перем2;
    Возврат Результат;
КонецФункции

Символ операции передается в виде строки. При текущем написании при любой из 4-х операций переменные всегда суммируются. В Экселе к примеру символ конкатенации "&", а в 1С "+", он же и арифм.операция суммирования...

Автор: Vofka 09.02.17, 13:51

Если я правильно понял вопрос, то через Выполнить() можно что-то такое сделать.

Автор: Flexy 09.02.17, 14:19

В 7.7 это возможно только через ВК или или какой-то нативный COM-объект.

Автор: miha74 09.02.17, 14:24

Спасибо. Я подозревал, что это невозможно стандартными средствами.

Автор: Flexy 09.02.17, 14:35

miha74 @ Сегодня, 14:24 * ,
По памяти:

ScrCtrl = СоздатьОбъект("MSScriptControl.ScriptControl");   
ScrCtrl.Language="vbscript";

Знак = "*";

Сообщить(ScrCtrl.Eval("2"+Знак+ "2"));

Как-то так...

Автор: nysysimara 09.02.17, 14:59

стесняюсь спросить unsure.gif
а такой код слишком примитивен для вашего алгоритма?

Если СокрЛП(Операция)="+" Тогда
    Результат = Перем1+Перем2;
ИначеЕсли СокрЛП(Операция)="-" Тогда
    Результат = Перем1-Перем2;
ИначеЕсли СокрЛП(Операция)="*" Тогда
    Результат = Перем1*Перем2;
ИначеЕсли СокрЛП(Операция)="/" Тогда
    Результат = Перем1/Перем2;
КонецЕсли;

Автор: Flexy 09.02.17, 15:05

nysysimara @ Сегодня, 14:59 * ,
А если изначально не известно количество этих самих "Перем1...ПеремN", и выражение формируется динамически из шаблонной строки? smile.gif

Автор: miha74 09.02.17, 15:08

Именно такой код и остается применять. Согласитесь, было бы элегантней:

Результат = Перем1+Операция+Перем2;

Автор: Sanyk 13.02.17, 14:18

Використовуйте "Шаблон()". Для Вашого прикладу це буде виглядати так:

// Операция - строчное значение(+ или - или * или /)
Функция АрифметическаяОперация(Перем1,Перем2,Операция)
    Перем Результат;
    
    //Результат = Перем1+Операция+Перем2;
     Результат = Шаблон("[Перем1 " + Операция + " Перем2]");
    Возврат Результат;
КонецФункции


Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua