Дорогі друзі! Подскажите, есть ли какое-то написание для конкатенации символа арифметической операции в формуле. Для примера такая функция:
// Операция - строчное значение(+ или - или * или /)
Функция АрифметическаяОперация(Перем1,Перем2,Операция)
Перем Результат;
Результат = Перем1+Операция+Перем2;
Возврат Результат;
КонецФункции
Если я правильно понял вопрос, то через Выполнить() можно что-то такое сделать.
В 7.7 это возможно только через ВК или или какой-то нативный COM-объект.
Спасибо. Я подозревал, что это невозможно стандартными средствами.
miha74 @ Сегодня, 14:24
,
По памяти:
ScrCtrl = СоздатьОбъект("MSScriptControl.ScriptControl");
ScrCtrl.Language="vbscript";
Знак = "*";
Сообщить(ScrCtrl.Eval("2"+Знак+ "2"));
стесняюсь спросить
а такой код слишком примитивен для вашего алгоритма?
Если СокрЛП(Операция)="+" Тогда
Результат = Перем1+Перем2;
ИначеЕсли СокрЛП(Операция)="-" Тогда
Результат = Перем1-Перем2;
ИначеЕсли СокрЛП(Операция)="*" Тогда
Результат = Перем1*Перем2;
ИначеЕсли СокрЛП(Операция)="/" Тогда
Результат = Перем1/Перем2;
КонецЕсли;
nysysimara @ Сегодня, 14:59
,
А если изначально не известно количество этих самих "Перем1...ПеремN", и выражение формируется динамически из шаблонной строки?
Именно такой код и остается применять. Согласитесь, было бы элегантней:
Результат = Перем1+Операция+Перем2;
Використовуйте "Шаблон()". Для Вашого прикладу це буде виглядати так:
// Операция - строчное значение(+ или - или * или /)
Функция АрифметическаяОперация(Перем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