Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Конкатенация символа арифметической операции в формуле.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
miha74
Дорогі друзі! Подскажите, есть ли какое-то написание для конкатенации символа арифметической операции в формуле. Для примера такая функция:
// Операция - строчное значение(+ или - или * или /)
Функция АрифметическаяОперация(Перем1,Перем2,Операция)
    Перем Результат;
    
    Результат = Перем1+Операция+Перем2;
    Возврат Результат;
КонецФункции

Символ операции передается в виде строки. При текущем написании при любой из 4-х операций переменные всегда суммируются. В Экселе к примеру символ конкатенации "&", а в 1С "+", он же и арифм.операция суммирования...
Vofka
Если я правильно понял вопрос, то через Выполнить() можно что-то такое сделать.
Flexy
В 7.7 это возможно только через ВК или или какой-то нативный COM-объект.
miha74
Спасибо. Я подозревал, что это невозможно стандартными средствами.
Flexy
miha74 @ Сегодня, 14:24 необходимо зарегистрироваться для просмотра ссылки ,
По памяти:
ScrCtrl = СоздатьОбъект("MSScriptControl.ScriptControl");   
ScrCtrl.Language="vbscript";

Знак = "*";

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

Как-то так...
nysysimara
стесняюсь спросить unsure.gif
а такой код слишком примитивен для вашего алгоритма?
Если СокрЛП(Операция)="+" Тогда
    Результат = Перем1+Перем2;
ИначеЕсли СокрЛП(Операция)="-" Тогда
    Результат = Перем1-Перем2;
ИначеЕсли СокрЛП(Операция)="*" Тогда
    Результат = Перем1*Перем2;
ИначеЕсли СокрЛП(Операция)="/" Тогда
    Результат = Перем1/Перем2;
КонецЕсли;
Flexy
nysysimara @ Сегодня, 14:59 необходимо зарегистрироваться для просмотра ссылки ,
А если изначально не известно количество этих самих "Перем1...ПеремN", и выражение формируется динамически из шаблонной строки? smile.gif
miha74
Именно такой код и остается применять. Согласитесь, было бы элегантней:
Результат = Перем1+Операция+Перем2;
Sanyk
Використовуйте "Шаблон()". Для Вашого прикладу це буде виглядати так:
// Операция - строчное значение(+ или - или * или /)
Функция АрифметическаяОперация(Перем1,Перем2,Операция)
    Перем Результат;
    
    //Результат = Перем1+Операция+Перем2;
     Результат = Шаблон("[Перем1 " + Операция + " Перем2]");
    Возврат Результат;
КонецФункции

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.