Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Конкатенация символа арифметической операции в формуле.          
miha74 Подменю пользователя
сообщение 09.02.17, 13:43
Сообщение #1

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 153
Спасибо сказали: 81 раз
Рейтинг: 0

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

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

Vofka Подменю пользователя
сообщение 09.02.17, 13:51
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

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

Flexy Подменю пользователя
сообщение 09.02.17, 14:19
Сообщение #3

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

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

Спасибо сказали: miha74,

miha74 Подменю пользователя
сообщение 09.02.17, 14:24
Сообщение #4

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 153
Спасибо сказали: 81 раз
Рейтинг: 0

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

Flexy Подменю пользователя
сообщение 09.02.17, 14:35
Сообщение #5

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

miha74 @ Сегодня, 14:24 * ,
По памяти:
ScrCtrl = СоздатьОбъект("MSScriptControl.ScriptControl");   
ScrCtrl.Language="vbscript";

Знак = "*";

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

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

nysysimara Подменю пользователя
сообщение 09.02.17, 14:59
Сообщение #6

Оратор
Иконка группы
Группа: Местный
Сообщений: 312
Из: Бердянск
Спасибо сказали: 110 раз
Рейтинг: 0

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


Signature
1С Предприятие 7.7: Бух. учет для Украины (активно дописанная) + самописка (учет производства и ЗП)
1С Предприятие 8.3: Бух.предприятия 3.0 + самописка
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Кроме высшего образования, нужно иметь хотя бы среднее соображение

Flexy Подменю пользователя
сообщение 09.02.17, 15:05
Сообщение #7

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

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

Сообщение отредактировал Flexy - 09.02.17, 15:06

miha74 Подменю пользователя
сообщение 09.02.17, 15:08
Сообщение #8

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 153
Спасибо сказали: 81 раз
Рейтинг: 0

Именно такой код и остается применять. Согласитесь, было бы элегантней:
Результат = Перем1+Операция+Перем2;

Sanyk Подменю пользователя
сообщение 13.02.17, 14:18
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 52
Спасибо сказали: 16 раз
Рейтинг: 0

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


Спасибо сказали: miha74, nysysimara,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 05.05.24, 1:56
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!