|
Самоокругление при присвоении числового значения переменной | ☑ | ||
---|---|---|---|---|
0
PiotrLoginov
19.03.15
✎
12:21
|
Всем привет.
ВысотаУпаковкиИзТекстовогоПоляВСантиметрах = "4"; Попытка ВысотаВМетрахДляПодстановкиВРеквизит = Число(ВысотаУпаковкиИзТекстовогоПоляВСантиметрах ) / 100; КонецПопытки; В итоге ВысотаВМетрахДляПодстановкиВРеквизит становится равна нулю. Так и подставляется в реквизит 0, хотя должно быть 0,04. ЧЯДНТ? |
|||
1
hhhh
19.03.15
✎
12:22
|
ВысотаВМетрахДляПодстановкиВРеквизит это переменная или реквизит?
|
|||
2
PiotrLoginov
19.03.15
✎
12:26
|
переменная
|
|||
3
Михаил Козлов
19.03.15
✎
12:27
|
Попробуйте присвоить 4.0
|
|||
4
kosts
19.03.15
✎
12:30
|
Проверь, что бы не было реквизита с таким именем.
|
|||
5
DirecTwiX
19.03.15
✎
12:31
|
(2) Реквизит, может? С точностью 0
|
|||
6
kosts
19.03.15
✎
12:33
|
(0) А попытка без исключения допустима?
|
|||
7
PiotrLoginov
19.03.15
✎
12:40
|
Странная ситуация. Код, данный выше - сильно упрощен. На самом деле изначально "4" переменной ВысотаУпаковкиИзТекстовогоПоляВСантиметрах не присваивается. Это значение ячейки в таблице значений. Код такой:
//есть строка СтрокаТЗ, в которой хранятся разные данные. ТЗ заполнялась из файла excel. при создании ТЗ тип ячеек не уточнялся. Попытка Высота = Число(СтрокаТЗ.ВысотаУпаковки) / 100; Ширина = Число(СтрокаТЗ.ШиринаУпаковки) / 100; Глубина = Число(СтрокаТЗ.ДлинаУпаковки) / 100; РазмерыКонвертированы = Истина; Исключение //здесь сообщение, что что-то пошло не так КонецПопытки; В итоге Высота, Ширина и Глубина округлены до одной десятой. Где значение - несколько сотых, там в итоге имеем ноль. |
|||
8
PiotrLoginov
19.03.15
✎
12:41
|
(3) если просто присваиваю обрабатываемой переменной перед засовыванием в функцию Число "4" или "4.0", то самоокругления не происходит.
|
|||
9
silent person
19.03.15
✎
12:43
|
а вот такой код
Высота = 0.04; что в результате дает ? |
|||
10
kosts
19.03.15
✎
12:44
|
Высота и ширина это реквизиты формы.
|
|||
11
PiotrLoginov
19.03.15
✎
12:44
|
(4) (5) Реквизиты с такими именами будут позже, когда будет создаваться новая упаковка, и у нее будут реквизиты Высота, Ширина и Глубина ,в которые будут подставляться значения из соответствующих переменных
(9) если после попытки получения чисел из значений ячеек ТЗ (см. (7) ) , то дает Ложь |
|||
12
silent person
19.03.15
✎
12:44
|
+10 угу с вероятностью 95%, и с одним знаком после запятой
|
|||
13
PiotrLoginov
19.03.15
✎
12:45
|
(10) у формы, в модуле которой все это происходит, нет реквизитов с такими именами
|
|||
14
silent person
19.03.15
✎
12:46
|
(11) какая ложь в переменной "Высота" что будет. после кода
Высота = 0.04; |
|||
15
kosts
19.03.15
✎
12:46
|
(13) Открой свойства формы и глянь, может затесались.
|
|||
16
hhhh
19.03.15
✎
12:55
|
(13) посмотрите в Ексель самая верхняя строка, там сколько знаков?
|
|||
17
PiotrLoginov
19.03.15
✎
13:02
|
Реквизиты упаковки (элемента справочника) имеют тип число с тремя знаками после запятой
(14) попробовал так: //СтрокаТЗ.ВысотаУпаковки равно 4 //СтрокаТЗ.ШиринаУпаковки равно 141 Тест = "4"; Тест2 = "4.0"; Попытка Т = Число(Тест) / 100; Т2 = Число(Тест2) / 100; Высота = Число(СтрокаТЗ.ВысотаУпаковки) / 100; Ширина = Число(СтрокаТЗ.ШиринаУпаковки) / 100; Тест3 = 0.04; ВысотаВсм = Число(СтрокаТЗ.ВысотаУпаковки); ... В итоге имею T, равное 0,04; T2, равное 0,04; Высота, равное 0 ; Ширина, равное 1; Test3, равное 0,04 ; ВысотаВсм, равное 4. Таким образом, если в попытке конвертировать текстовое значение, полученное из ячейки ТЗ (не типизирована, текстовое значение взято из ячейки таблицы excel), а затем делить его для получения дробного числа, то результат округлится до целых. |
|||
18
PiotrLoginov
19.03.15
✎
13:05
|
приму это как данность и не буду впредь превращать в числа дробные текстовые значения
P.S. "дробные текстовые значения" - это, конечно, звучит сильно (16) не понял вопроса. Содержимое обрабатываемых ячеек уже озвучил |
|||
19
PiotrLoginov
19.03.15
✎
13:06
|
платформа 8.3.5.1482
|
|||
20
kosts
19.03.15
✎
13:07
|
(18) Чего-то накрутил. Программа работает согласно заложенному алгоритму и поступившим данным. Никакой магии там нет. И всему есть объяснение. Проверяй входные данные и программу.
|
|||
21
hhhh
19.03.15
✎
13:12
|
(18) тебя же просили проверить Ширина = 0.04;
|
|||
22
kosts
19.03.15
✎
13:12
|
И убери пока попытку. И добавить:
Перем Высота, Ширина; |
|||
23
DirecTwiX
19.03.15
✎
13:13
|
ТС перекрытый какой-то))
Ответ в (10) |
|||
24
PiotrLoginov
19.03.15
✎
13:14
|
(21) ну я же сделал в попытке Тест3 = 0.04; и отписался: в итоге Тест3 стало равным 0,04
|
|||
25
hhhh
19.03.15
✎
13:15
|
(24) тебя просили проверить Ширина, Высота и т.д. Какой нахер Тест3? Кому он может понадобиться?
|
|||
26
PiotrLoginov
19.03.15
✎
13:20
|
(25) в попытке присваивать или до нее?
|
|||
27
hhhh
19.03.15
✎
13:21
|
без разницы
|
|||
28
PiotrLoginov
19.03.15
✎
13:21
|
Блин. Проверил контекст в самом начале создания формы. В контексте уже есть некое свойство Ширина.
|
|||
29
PiotrLoginov
19.03.15
✎
13:22
|
наверняка это свойство самой формы. И оно не дробное.
|
|||
30
palpetrovich
19.03.15
✎
13:22
|
(20) + 1 ждем сообщения "пацаны я не прав, все работает правильно, трабл был в... " :)
|
|||
31
silent person
19.03.15
✎
13:22
|
ха-ха-ха
|
|||
32
PiotrLoginov
19.03.15
✎
13:23
|
Тему можно считать закрытой, думаю.
|
|||
33
palpetrovich
19.03.15
✎
13:23
|
+(30) о, уже :)
|
|||
34
PiotrLoginov
19.03.15
✎
13:25
|
(30) А в чем неправ? Вопросы был изначально - "у меня в переменной цифра округляется, что я делаю не так?" Ответ оказался "не надо использовать зарезервированные имена свойств формы".
Если бы кто-то так ответил, а я стал спорить, тогда был бы неправ. |
|||
35
DirecTwiX
19.03.15
✎
13:29
|
(34) Ответили же уже давно) (10), не?
|
|||
36
kosts
19.03.15
✎
13:31
|
Как обычно правильный ответ в первом комментарии. Остальные, что бы убедить ТС.
(34) Мы не могли так ответить, т.к. это телепатия, нам не известно ничего про твою проблему, только-то что сообщил. Ни место ни контекст ни какие входные данные... |
|||
37
silent person
19.03.15
✎
13:31
|
(35) неа, формулировка ответа в 10 не соответствует формулировке ответа автора.
|
|||
38
PiotrLoginov
19.03.15
✎
13:35
|
(35) да, согласен. ответив в (13), что таких реквизитов нет, я не проверил свойства.
И потом, "Высота и ширина это реквизиты формы." - неверное утверждение. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |