|
помогите Разложить "Формулу" | ☑ | ||
---|---|---|---|---|
0
Apacher
21.05.16
✎
20:11
|
Всем доброго дня/вечера/ночи/утра!
Требуется ваша помощь, имеется формула, тип - Строка, выглядит "[П_01] + ([П_02] - [П_03])" [] - открывающий и закрывающий тег показателя, в теге сам показатель, сумма показателей находится в таблице значений, собственно в чем суть, как рассчитать формулу имея все данные....я предполагаю разложить строку, отсеять все лишнее и оставить показатели в массиве, найти в таблице по ним суммы, сцепить, как потом согласно формуле все это рассчитать? Чет головешка не варит, надеюсь на Вашу помощь....спасибо! |
|||
1
GreyK
21.05.16
✎
20:17
|
(0) А почему не [Ширина + ШиринаНаправляющих - 2]!?
|
|||
2
Apacher
21.05.16
✎
20:30
|
GreyK, не понял вопроса честно говоря?, если про показатели, то имена показателей могут быть произвольными...
|
|||
3
АнализДанных
21.05.16
✎
21:07
|
Результат = Вычислить(ТвояФормула)
|
|||
4
Vaflya
21.05.16
✎
21:14
|
(0) не понятен ваш вопрос, это "типовая" схема реализации экселя в 1с. Есть формула - ее аргумменты это колонки таблицы. Пишем [сумма] = [цена] * [количество], перебираем строки таблицы, находим значения по именам колонок и перемножаем, в чем проблема?
|
|||
5
breezee
21.05.16
✎
22:18
|
(0)
нстрока = СТРЗАМЕНИТЬ(твояформула,"[",Символы.ПС); нстрока = СТРЗАМЕНИТЬ(твояформула,"]",Символы.ПС); нстрока = СТРЗАМЕНИТЬ(твояформула,"+",Символы.ПС); нстрока = СТРЗАМЕНИТЬ(твояформула,"-",Символы.ПС); (может кто подскажет - можно это все одной функцией штатной как-то сделать?) //тут цикл по количеству строк - получаешь текущую строку, е помню как делать, гугли "раззложить строку в массив подстрок" Дальще смотри функцию "НайтиСтроки()" в СП Не забудь изменять знаки, в зависимости от скобок |
|||
6
Матиус III
21.05.16
✎
22:27
|
(0) 1. В цикле заменяешь показатели значениями
2. Попытка Результат = Вычислить(ТвояФормула) КонецПоптки |
|||
7
Apacher
21.05.16
✎
22:27
|
не совсем то....вообщем в строке содержатся имена показателей....мне нужно вместо имен подставить значения, уже из готовой таблицы, в которой есть имя и сумма....как вместо имени подставить сумму??? мне нужно что то типа...находим первый открывающийся тег, находим первй закрывающийся тег, [], берем содержимое в тегах, ищем в таблице и заменяем, далее, находи второй открывающийся тег....и так далее
|
|||
8
Матиус III
21.05.16
✎
22:29
|
(7) Это проверка на дебильность? Как написал так и делай.
|
|||
9
Apacher
21.05.16
✎
22:33
|
Матиус, я написал с вами одновременно и вашего сообщения не видел, во вторых как это реализовать???
[01] + [02] -[03] /[4] разложитьвмассив...ну хорошо обойду я несколько раз эти строки, отсею лишнее, соберу их в массив, найду и заменб на показатели....как потом их обратно разложить??? в соответствии с той формулой как было??? или как по тегам обойти первый, второй, третий??? |
|||
10
hhhh
21.05.16
✎
22:39
|
(7)написали же
Выполнить("П_01 + (П_02 - П_03)") чего вы чудите? |
|||
11
Apacher
21.05.16
✎
22:42
|
(10) П_01 и т.д это строка....заместо п_01 нужно подставить число...
|
|||
12
hhhh
21.05.16
✎
22:47
|
(11) этим и занимается функция Выполнить. Или Вычислить. Подставляет число.
|
|||
13
Apacher
21.05.16
✎
22:50
|
(12) оно вычисляет переданное выражение....если бы я их заменил бы....то да....я не знаю как их заменить
[П_01] + [П_02].... а должно выглядить так [100] + [100]... теги заменяем и вычисляем.....как показатели заменить на число???? сохраняя формулу.... |
|||
14
hhhh
21.05.16
✎
23:00
|
П_01 = 100;
П_02 = 100; Х = 0; Выполнить("Х = П_01 + П_02"); |
|||
15
Apacher
21.05.16
✎
23:02
|
(14) не подходит
|
|||
16
hhhh
21.05.16
✎
23:06
|
(15) ну не хочешь, как хочешь. Хозяин - барин. Ну делай тогда как хотел сначала, выделяй квадратные скобки и так далее.
|
|||
17
АнализДанных
21.05.16
✎
23:09
|
(15) Что именно не подходит в примере?
|
|||
18
АнализДанных
21.05.16
✎
23:15
|
(15)
ФормулаСТегами = "[П_01] + [П_02]"; СтрокаСЧислами = СтрЗаменить(ФормулаСТегами, "[П_01]", ЗначениеЧисла_01); СтрокаСЧислами = СтрЗаменить(ФормулаСТегами, "[П_02]", ЗначениеЧисла _02); Результат = Вычислить(СтрокаСЧислами); |
|||
19
Матиус III
21.05.16
✎
23:33
|
1.
Для Тэг из СписокТэгов Цикл СтрЗаменить(СтрокаСФурмулой, "["+Тэг.Ключ+"]", Тэг.Значение); КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |