Имя: Пароль:
IT
 
Как вычислить дробное число ?
0 vv2304
 
25.01.19
10:52
Производитель после продажи забил, приходится теперь самому расхлебывать.
В общем, из в штрихкоде (EAN128) содержится в определенных разрядах
310y и сразу после этого идут 6 знаков. "y" - это колич. знаков после запятой.
Например 3102000230
Это значит, что вес = 2.3 кг.
Сижу и никак не придумаю алгоритм. Дописывать не в 1С, т.е. простая математика.
1 mistеr
 
25.01.19
10:55
Не понял юмора. Нужен алгоритм как поделить 230 на 10 в степени 2 или что?
2 Натуральный Йог
 
25.01.19
10:56
(0) а 3104030250 это 3,025 кг?
3 Timon1405
 
25.01.19
10:56
интуиция подсказывает, что нужно использовать операции
%(он же остаток от деления) и Цел() или его аналог не в 1С
4 Strogg
 
25.01.19
10:57
да че сложного-то? У - количество знаков после запятой - сам же и написал. т.о. ты точно знаешь длину блока 310у. Таким образом, функцией деления на 10 в степени у-1(коллеги поправьте, если что) ты выделяешь дробную часть...
Ну, и ведущие нули убрать...
5 ДенисЧ
 
25.01.19
10:58
Если Лев(шк, 3) = "310" Тогда
  колЗнаков = Число(Сред(шк, 4, 1));
  Вес = Число(сред, шк, 5) * Pow(10, колЗнаков);
КонецЕсли;
6 vv2304
 
25.01.19
11:01
"3104030250 это 3,025 кг?"
нет, 310-это постоянно, далее У-это показывает колич. знаков после запятой.
Далее 6 знаков отводится под вес товара.

Это не в 1С, я даже не знаю какие функции там заложены поэтому могу оперировать только умножением, делением, сложением и вычитанием.
7 ДенисЧ
 
25.01.19
11:02
Если не на 1с, то на каком языке?
8 Strogg
 
25.01.19
11:08
(6) тебе в любом случае надо отсечь первые 4 символа, перевести оставшуюся строку в число и разделить его на 10 количество раз, равное у.
Вот и ищи такие методы в sql, или где ты там это делать будешь...
9 vv2304
 
25.01.19
11:10
Там где я могу подобраться
EAN128= global::Cleverence.Barcoding.Ean128.FormatAndParse(ScannedBarcode)
ГоденДо= EAN128.GetValue("15")
ВесУп = EAN128.WeightInKg

Объекта EAN128 нет, пишет ошибку.
Поэтому надо как-то из типа вот такого
01950123456789033103000123
получить вес
10 vv2304
 
25.01.19
11:12
(8) Уже лучше. Осталось узнать как у них там можно циклы писать.
11 Strogg
 
25.01.19
11:15
(9) блин, может тебе сначала посмотреть спецификации GS1?
блок 310х, обычно, идет после блока 01. Причем, 01 блок (GTIN) имеет фиксированное количество символов. Но это так, предположения, как у вас там сделано - хз. Если блок нефиксированной длины, то в конце блока идет символ FNC1, как окончание блока.
Тебе в любом случае необходимо парсить свой шк...
12 mikecool
 
25.01.19
11:17
(9) если это конфига клеверенса, то они поддерживают еан128 из коробки
13 mikecool
 
25.01.19
11:18
Поэтому надо как-то из типа вот такого
01950123456789033103000123
это точно еан 128?
14 Натуральный Йог
 
25.01.19
11:18
(6) 3104030250 это сколько кг?
15 mikecool
 
25.01.19
11:18
+12 только включить это надо в настройках, не знаю где, ищи
16 Вафель
 
25.01.19
11:19
взять строку - поставить точку в позиция "номер" с конца.
потом Число(НоваяСтрока)
17 vv2304
 
25.01.19
11:23
(11) Блок фиксированный, 310у я вытащил, оставшуюся часть тоже без проблем. Проблем в данном случае-это написание цикла
(14) 3.025 кг
(13) Точно.
"если это конфига клеверенса, то они поддерживают еан128 из коробки"
Нет !
Только под опред. список.
Они не поддерживают даже в приложении для ПК.
Если вводить
(01)09004699781890(10)0003768400009(15)191130(3103)032500(99)1
тогда да.
Если же
0109004699781890100003768400009151912303103032500991
тогда фиг.
18 mistеr
 
25.01.19
11:24
(16) На 1С каждый сможет. А вот на неизвестном языке на неизвестной платформе — слабо?
19 vv2304
 
25.01.19
11:27
Вот с ихнего сайта
"global::Cleverence.Barcoding.Ean128.FormatAndParse(штрихкод) - в качестве аргумента служит еще неотформатированный с помощью скобок штрихкод "
Вбиваю неотформатированный ШК в приложении для ПК, получаю ошибку.

Ладно, полез циклы пробовать.
20 Arbuz
 
25.01.19
11:39
(2) -> (6) -> (14) -> (17) Очень интересно! Как можно помочь, если на один и тот же однозначный вопрос - то да, то нет?
21 vv2304
 
25.01.19
11:52
(20) Ну очепятка в (6)