0
FrostBite101
15.11.23
✎
18:08
|
Добрый день. Решил использовать типовой функционал конструктора формул для решения задачи.
Но с толкнулся с тем, что конструктор напрочь отказывается работать с операторами ИЛИ И и т.д.
Покопался в коде, при парсинге строки формулы он считает данные операторы функцией, но при вызове конструктора ставиться функция = ложь;
Кто сталкивался и как решали?
Код:
&НаКлиенте
Процедура ЗаполнитьФормулу(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ПриЗавершенииРедактированияФормулы", ЭтотОбъект);
КонструкторФормулКлиент.НачатьРедактированиеФормулы(ПараметрыФормулы(), ОписаниеОповещения);
КонецПроцедуры
&НаСервере
Функция ПараметрыФормулы()
ПараметрыФормулы = КонструкторФормул.ПараметрыРедактированияФормулы();
ПараметрыФормулы.Формула = Объект.Формула;
ПараметрыФормулы.СкобкиОперандов = Истина;
ПараметрыФормулы.Операнды = ОперандыФормулыРасчета(УникальныйИдентификатор);
ПараметрыФормулы.Операторы = ОператорыФормулыРасчета(УникальныйИдентификатор);
Возврат ПараметрыФормулы;
КонецФункции
&НаСервереБезКонтекста
Функция ОперандыФормулыРасчета(УникальныйИдентификатор)
Возврат ПоместитьВоВременноеХранилище(РасчетСтипендий.ТаблицаОперандов(), УникальныйИдентификатор);
КонецФункции
&НаСервереБезКонтекста
Функция ОператорыФормулыРасчета(УникальныйИдентификатор)
СписокОператоров = КонструкторФормул.СписокОператоров("Операторы, ЛогическиеОператорыИКонстанты, Разделители");
Возврат ПоместитьВоВременноеХранилище(СписокОператоров, УникальныйИдентификатор);
КонецФункции
|
|