Позволяет разработчику создавать пользовательский конструктор формул.
//Внешняя компонента для вычисления математических выражений.
//Позволяет разработчику создавать пользовательский конструктор формул.
Функция глРазложить(Знач Стр, Разделитель = ",") Экспорт
СЗ = СоздатьОбъект("СписокЗначений");
Если Разделитель = " " Тогда
Стр = СокрЛП(Стр);
Пока 1=1 Цикл
Поз = Найти(Стр,Разделитель);
Если Поз=0 Тогда
СЗ.ДобавитьЗначение(Стр);
Возврат СЗ;
КонецЕсли;
СЗ.ДобавитьЗначение(Лев(Стр,Поз-1));
Стр = СокрЛ(Сред(Стр,Поз));
КонецЦикла;
Иначе
ДлинаРазделителя = СтрДлина(Разделитель);
Пока 1=1 Цикл
Поз = Найти(Стр,Разделитель);
Если Поз=0 Тогда
СЗ.ДобавитьЗначение(Стр);
Возврат СЗ;
КонецЕсли;
СЗ.ДобавитьЗначение(Лев(Стр,Поз-1));
Стр = Сред(Стр,Поз+ДлинаРазделителя);
КонецЦикла;
КонецЕсли;
КонецФункции // глРазложить
Процедура ПриНачалеРаботыСистемы()
Если ЗагрузитьВнешнююКомпоненту (каталогИб()+»Scpt1c.dll») <> 1 Тогда
Предупреждение(«Компонента Scpt1c.dll не найдена!»);
КонецЕсли;
ПересчетЛ = СоздатьОбъект(«Addin.srprun»);
xxx=0; // ххх, ууу и т.д — любые переменные , которые разработчик может взять из базы данных (оклад, ко-во дней, СКД() и т.д.)
yyy=0;
ВВестиЗначение(xxx,«Введите х»,«число»,10 );
ВВестиЗначение(yyy,«Введите y»,«число»,10 );
// разработчику требуется создать редактор формул — достаточно создать справочник с текстовым полем.
// дать пользователю инструкцию, список переменных, которыми пользователь может оперировать (xxx, ууу…..) .
// можно создать сервис «добавить» с предопределенными операторами (VBScript) и зарезервированными переменными,
// который облегчает пользователю разработку формул.
// Данный текст выражения пользователь вносит, самостоятельно используя дополнительный сервис, или не…. (в справочник с текстовым полем)
// Результат_Получ — зарезервировано
ФормулаТекстНов =» Результат_Получ=0
|if xxx|Результат_Получ=yyy-xxx
|else
|Результат_Получ=xxx-yyy/100
|end if «;
// разработчик подменяет синонимы переменных на реальные значения
ФормулаТекстНов=СтрЗаменить(ФормулаТекстНов,«xxx»,СокрЛП(xxx));
ФормулаТекстНов=СтрЗаменить(ФормулаТекстНов,«yyy»,СокрЛП(yyy));
// разработчик с использованием внешней компоненты вычисляет выражение (получает результат)
Получим=глРазложить(СтрЗаменить(ПересчетЛ.Выполнить(ФормулаТекстНов),«,«,«.»),«|»);
//Сообщает пользователю
Сообщить(получим.ПолучитьЗначение(1));
КонецПроцедуры //ПриНачалеРаботыСистемы()
Хотелось бы попробовать и поставить «+» , но нет возможности скачать 🙁
(1) amblik, Проверил – скачал
А что пишет?
(2)
Скачать можно пользователям, а у меня нету start money
не совсем понятна фишка. Какова скорость? Насколько сложные конструкции поддерживаются? Да и вообще какой-нибудь бы более боевой (более практически значимый) пример.
(4) ander_,
Дополнил описание,
про скорость не понял (расшифруйте)
Процессор 8086 был создан в 1978 году и мог выполнять целых 0.3-0.7 миллионов операций в секунду.:)
(VBScript ) для решения прикладных задач (расчет зарплаты и т.д.) пользователю достаточно +-*/><= если.
Боевой пример по итогам обсуждения, если потребуется.
(5)
количество операций выполняемых процессором в единицу времени — это конечно красивый показатель, но вы же пишете не на ассемблере, чтобы к нему аппелировать. И даже там чтобы сложить два числа нужна не одна операция (ибо нужно занести числа в регистры, возможно выставить какие-нибудь флаги, возможно выполнить еще какие-то проверки и т.п.) но не суть. В принципе, после того как уточнили описание, я уже свое любопытство по большей мере удовлетворил :).
ЗЫ: а возведение в степень и извлечение квадратного корня есть? 🙂
Операции xor поддерживаются ? Можно использовать для RC4 без использования MSScript для xor ?