gifts2017

7.7. Вычисляем формулы

Опубликовал Александр Рытов (Арчибальд) в раздел Программирование - Практика программирования

Это не статья, а маленькая заметочка для не очень крутых разработчиков.

Как вычислить выражение в контексте документа.

 

Если от Вас постоянно требуют поменять в неком документе расчетную формулу, можно завести в глобальном модуле пару функций.

 

//________________________________________________________________________

Функция глВычислить(Конт,п_Выражение,п_Результат) Экспорт

            п_Результат = п_Выражение;

            Возврат "";

КонецФункции

//________________________________________________________________________

Функция глВычислитьВыражение(Конт,п_Выражение,п_СписокЗамен="") Экспорт

            ЧислоЗамены="";

            л_Выражение=п_Выражение;

            Если ПустоеЗначение(п_СписокЗамен)=1 Тогда

                        л_СписокЗамен=СоздатьОбъект("СписокЗначений");

                        л_СписокЗамен.ДобавитьЗначение("$","Конт.");

                        л_СписокЗамен.ДобавитьЗначение("#","Константа.");

            Иначе

                        л_СписокЗамен=п_СписокЗамен;

            КонецЕсли;

            л_НаЧто="";

            Для й=1 По СписокЗамен.РазмерСписка() Цикл

                        л_Что=СписокЗамен.ПолучитьЗначение(й,л_НаЧто);

                        л_Выражение=СтрЗаменить(л_Выражение,л_Что,л_НаЧто);

            КонецЦикла;

            л_Рез = "";

            Шаблон("[глВычислить(Конт,"+СОКРЛП(л_Выражение)+",л_Рез)]");

            Возврат (л_Рез);

КонецФункции

//________________________________________________________________________

 

 

И, например, периодическую константу, Формула.

 

Записываем в Формулу некий текст, например

 

?(($Качество<#Предел)и($Контрагент<>#НашБосс),0.8,1)*$Количество

 

А в модуль документа

 

УчетноеКоличество=глВычислитьВыражение(Контекст,Константа.Формула.Получить(ДатаДок));

 

 

Использование метасимволов (по умолчанию $ для атрибутов документа и # для констант) позволяет научить писать формулы даже некоторых пользователей.

 

Прием известный, конечно. Но не всем.

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа