|
v7: Приведение данных к целому числу | ☑ | ||
---|---|---|---|---|
0
Flint2000
18.11.21
✎
12:25
|
Всем привет. Правлю конект и обработку к удаленной БД интернет магазина для получения заказов и формирования расходных накладных. А так как в БД цены и общая стоимость храниться в float (1000.0000), то затрял на одном моменте. В цикле формируется список товара из заказа:
Пока НаборЗаписей.Eof()=0 Цикл Стр=0; Если ТЗ.НайтиЗначение(НаборЗаписей.Fields(0).Value,Стр,"id")=1 Тогда ТЗ.ПолучитьСтрокуПоНомеру(Стр); ТекТЗ=ТЗ.ТЗ; ТекТЗ.НоваяСтрока(); ТекТЗ.Код=НаборЗаписей.Fields(3).Value; ТекТЗ.Название=НаборЗаписей.Fields(4).Value; ТекТЗ.Кво=НаборЗаписей.Fields(1).Value; ТекТЗ.Сумма=НаборЗаписей.Fields(2).Value; //ТекТЗ.Бонус=НаборЗаписей.Fields(5).Value; ТЗ.ТЗ=ТекТЗ; Иначе rjd=0; КонецЕсли; НаборЗаписей.MoveNext(); КонецЦикла; И в ТекТЗ.Сумма=НаборЗаписей.Fields(2).Value; попадает значение float. Я знаю, что для приведения к int нужно использовать Число("ваше_значение"), но в данном случае у меня не работает. Пробовал так ТекТЗ.Сумма=Число("НаборЗаписей.Fields(2).Value"); Цена товара пустая. Подскажите пожалуйста как решить данную проблему |
|||
1
acht
18.11.21
✎
12:26
|
Опять нашествие твинков...
|
|||
2
ДенисЧ
18.11.21
✎
12:30
|
"Число("НаборЗаписей.Fields(2).Value");"
У меня где-то метла завалялась... Поискать? |
|||
3
Базис
naïve
18.11.21
✎
12:31
|
Округляй количество до целого, цену и сумму до копеек, добавь проверку на СуммаИздалека = СуммаПосчитанаяЛокально.
Функция Окр() задокументирована. |
|||
4
Flint2000
18.11.21
✎
13:02
|
(1) Не угадали ))
(2) Не совсем вас понял (3) С количеством проблем нету, да и цены в магазине округлены до целого, т.е. копеек нету вообще, просто в БД цена и сумма имеет тип данных decimal, поэтому ругается даже на сумму 1000.00 |
|||
5
acht
18.11.21
✎
13:05
|
(0) > в БД цены и общая стоимость храниться в float
(4) > просто в БД цена и сумма имеет тип данных decimal Ты б опредилился? |
|||
6
Ryzeman
18.11.21
✎
13:07
|
(0) (2) у тебя аргумент Число() в коде в кавычках?..
|
|||
7
Flint2000
18.11.21
✎
13:13
|
(5) Да, я ошибся, т.к. привык, что в коде число с плавающей запятой это флоат, в БД тип данных decimal. Но это сути это не меняет
|
|||
8
Flint2000
18.11.21
✎
13:14
|
(6) Туда приходит число с плавающей запятой
|
|||
9
Flint2000
18.11.21
✎
13:24
|
Из за этого получаю ошибку
ТекТЗ.Сумма=НаборЗаписей.Fields(2).Value; {C:\USERS\____\DESKTOP\TEST.ERT(362)}: Тип переменой не поддерживается |
|||
10
trad
18.11.21
✎
13:27
|
77 не умеет получать decimal через COM
|
|||
11
Базис
naïve
18.11.21
✎
13:30
|
А
ТекТЗ.Сумма=НаборЗаписей.Fields(2).Text; вместо .Value? |
|||
12
МихаилМ
18.11.21
✎
13:36
|
(0) приведите в запросе к нужному типу
|
|||
13
Flint2000
18.11.21
✎
13:53
|
(11) Поле агрегатного объекта не обнаружено (Text)
(12) Пробовал уже и cast и convert, ошибка |
|||
14
МихаилМ
18.11.21
✎
13:54
|
(13 Какая судб ? (с тосностью до версии и вендора)
|
|||
15
trad
18.11.21
✎
13:57
|
(13) к строке надо приводить, на стороне 1с обратно в число
|
|||
16
trad
18.11.21
✎
13:59
|
Или освоить 1с++ и его объекты работы с БД
|
|||
17
Flint2000
18.11.21
✎
15:22
|
(14) mysql Ver 14.14 Distrib 5.5.62, for debian-linux-gnu (x86_64) using readline 6.3
(15) Вы имеете ввиду в цикле цену приводить в строку, а потом опять в число? |
|||
18
Базис
naïve
18.11.21
✎
15:25
|
Что получаешь из НаборЗаписей.Fields(2).Value ?
|
|||
19
Ryzeman
18.11.21
✎
15:28
|
Для начала неплохо было бы понимать что 1с получает в НаборЗаписей.Fields(2).Value вообще. Exception? Число? Строку?
|
|||
20
Flint2000
18.11.21
✎
15:42
|
(18) (19) Должна получать число ТекТЗ.НоваяКолонка("Сумма","Число");
Но так как в mysql тип поля decimal(15,4), то ничего не получаю, т.к. пробовал в таблице значение изменить ТекТЗ.НоваяКолонка("Сумма","Строка"); Но туда ничего не приходит. Подозреваю что на уровне выборки не получаю значение СтрокаЗапроса = "SELECT |order_id, |quantity as kvo, |price as summa, |sku as articul, |name as name |FROM silael_order_product |WHERE order_id IN ("+Строкаid+")"; |
|||
21
ДенисЧ
18.11.21
✎
15:43
|
(20) А что подозревать? Взял отладчиком и посмотрел значения полей...
|
|||
22
Salimbek
18.11.21
✎
15:45
|
в (15) имеют ввиду, что price as summa поменяй на CAST(price AS CHAR) as summa
|
|||
23
Salimbek
18.11.21
✎
15:49
|
+(22) Я бы еще попробовал CAST(price*10000 AS DECIMAL) as summa
|
|||
24
Flint2000
18.11.21
✎
15:57
|
(22) Супер. Спасибо. Заработало
|
|||
25
Злопчинский
18.11.21
✎
20:23
|
а нахрена в (0) перед Иначе влобешный оператор
ТЗ.ТЗ=ТекТЗ; . что этим хотел сказать автор? о чем этот фильм? |
|||
26
Flint2000
19.11.21
✎
10:20
|
(25) В первом сообщении я же написал - "правлю" Т.е. мопед не мой
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |