Имя: Пароль:
1C
1С v8
Отсекаются нужные нули
0 buketovav
 
24.09.19
12:06
Добрый день, Дорогие Форумчане!
Такой вопрос:
есть у меня ТЧ, в ней указано значение 0,20
Когда я обращаюсь к ней, чтобы выполнить математические действия, то система мне показывает, что там значение 0,2
Скажите, как мне сделать так, чтобы система при обращении к ТЧ видела так же 0,20?
Я разбиваю число по разделителю и мне важно, чтобы было именно 20 после запятой, а не 2.
Заранее благодарю.
32 buketovav
 
24.09.19
13:27
вот вы народ то веселый
смотрите, мне надо сделать так:
например у меня в поле ТЧ значение 12,20
далее я разделяю это значение на два на 12 и 20, и далее произвожу с каждым из них разные действия. не важно какие, гдавное, что мне нужно получить именно 20, а не 2
Теперь то понятно или все еще нет?
Что странного в моем вопросе?
Все такие грамотные на словах, а ответить так ни кто и не смог )))
33 palsergeich
 
24.09.19
13:29
(32) просто с нашим опытом - задача выглядит как минимум странно.
34 piter3
 
24.09.19
13:30
Нет.
35 Случайный прохожий
 
24.09.19
13:30
(32) ЗАЧЕМ??? Что ты потом с этими числами делаешь? Я сегодня ночью спать не буду если не узнаю!!!
36 ДенисЧ
 
24.09.19
13:30
(32) Тогда это у тебя не число, а строка. Вот и работай с ним как со строкой.
Какого овоща ты его в число пихаешь?
37 ДенисЧ
 
24.09.19
13:31
(35) см (20) ))))
38 palsergeich
 
24.09.19
13:31
В упаковке наверняка хранится множитель, путем простейшей операции то что ты хочешь - можно сделать.
Поведение для типа число - незначащие 0 отбрасываются
39 Креатив
 
24.09.19
13:32
(32)Ну можешь, если число меньше 10, то умножить на 10.
40 Случайный прохожий
 
24.09.19
13:32
Храни числа просто в разных реквизитах, а в таблицу записывай строку из конкатенации этих реквизитов
41 Креатив
 
24.09.19
13:32
(39)-не стоит вообще-то. Работай со строкой.
42 Vadim_37
 
24.09.19
13:33
только не говорите, что 12,20<>12,20000
43 Жан Пердежон
 
24.09.19
13:34
(32) а почему 20, а не 200 или 2000?

само число и его представление - немного разные вещи,
а на тупые вопросы ответы обычно соответствующие
44 buketovav
 
24.09.19
13:35
(36) я его не пихаю
когда-то кто-то сделал таким образом преобразование времени в число, а мне теперь надо его обратно конвертировать

                МассивЧасыМинутыВыезда = СтрРазделить(ЭтотОбъект.ВремяВДвижении, ",");
        ЧасыВыезда   = МассивЧасыМинутыВыезда[0];

        Если МассивЧасыМинутыВыезда.Количество() > 1 Тогда
            МинутыВыезда = МассивЧасыМинутыВыезда[1];
            ЧасыВыездаВСекундах   = ЧасыВыезда * 60 * 60;
            МинутыВыездаВСекундах = Формат(МинутыВыезда, "ЧДЦ=2") * 60 / 100;
            НовоеВремяВыездаВСекундах = ЧасыВыездаВСекундах + МинутыВыездаВСекундах;
            Дней  = Цел(НовоеВремяВыездаВСекундах / 86400);
            Часов = Цел((НовоеВремяВыездаВСекундах - (Дней * 86400))/60/60);
            Минут = Окр(МинутыВыезда * 60 / 100);
            ВремяПрописью = Строка(Дней) + " дн. " + Строка(Часов) + " ч. " + Строка(Минут) + " м.";
            ВремяВДвиженииПрописью = ВремяПрописью;
                КонецЕсли;
45 palsergeich
 
24.09.19
13:36
Добавь к дате число секунд и получишь что надо
46 Креатив
 
24.09.19
13:37
Если числа положительные, то вычитаешь из исходного целую часть и умножаешь на 100. И будут тебе нули.
47 palsergeich
 
24.09.19
13:37
Просто храни целочисленное количество секунд и не мучься
48 Fish
 
24.09.19
13:41
(44) т.е 1,2 - это 1 час 20 минут? Жесть какая.
49 buketovav
 
24.09.19
13:41
(45) это понятно все, но у меня получается так, что в время нужное мне сейчас в числовом формате, и там очень часто бывает более 24 часов, а система мне не показывает более 23:59:59, а порой может быть и 118 часов 40 минут
50 3achem
 
24.09.19
13:42
(44) Бо-же-мой
51 Случайный прохожий
 
24.09.19
13:43
(48) Может быть 1 час и 2-е минуты?
52 buketovav
 
24.09.19
13:43
(48) не, не правильно вы считаете
1,2 это будет не 1 час и 20 минут, читайте правильно код
60 * 0.20 /100 - вот так будет рассчитываться время, которое у нас в данном случае является 0.20 от часа
53 Lama12
 
24.09.19
13:43
(44) А это зачем так?

Формат(МинутыВыезда, "ЧДЦ=2") * 60 / 100;

Точнее Формат тут зачем?
54 buketovav
 
24.09.19
13:43
(53) это была попытка выудить нолик )
55 Случайный прохожий
 
24.09.19
13:43
(51) Хотя не, все правильно 1ч 20 мин
56 buketovav
 
24.09.19
13:44
(55)
нет не правильно
57 Lama12
 
24.09.19
13:45
Печаль... :-(
58 Случайный прохожий
 
24.09.19
13:45
(56) Простите нам неграмотных)))
59 buketovav
 
24.09.19
13:47
(58) вы реально не знаете как десятичное число перевести в часы и минуты?
60 Случайный прохожий
 
24.09.19
13:47
Храни в строке, перед записью пользуйся функцией "Формат", а для математических действий разбирай на числа.
61 Случайный прохожий
 
24.09.19
13:49
(59) Переводов может быть целая куча. Вопрос в том - каким переводом пользуешься ты. Например 0,5 можно расценивать как пол часа или 0 часов 5 минут или 0 часов 50 минут.
62 Случайный прохожий
 
24.09.19
13:49
(61) А алкаш совсем по-другому 0,5 переведет :)
63 buketovav
 
24.09.19
13:50
(61) 0.5 часа в любом случае это 1/2 часа, какие здесь еще могу быть переводы?
64 Скиурус
 
24.09.19
13:50
Часы = Цел(КодированноеЧисло);
Минуты = (КодированноеЧисло - Цел(КодированноеЧисло)) * 60;
65 Случайный прохожий
 
24.09.19
13:51
(61) Например как в (61). Или я немогу так перевести?
66 Скиурус
 
24.09.19
13:52
(63) Если 0.5 часа это в любом случае 30 минут, то 0.2 часа это в любом случае 12 минут. И 0.20 тоже 12 минут. И 0.2000000000000000000000000000000000000000000 тоже 12 минут.
67 buketovav
 
24.09.19
13:54
(65) конечно, нет. Так как одна десятая часа равна 6 минутам. а Вы написали что-то не то. Как может быть 0.5 часа = 50 минут? Где логика?
68 buketovav
 
24.09.19
13:55
(66) согалсен, подскажите тогда формулу, как правильно перевести 0,2 часа в 12 минут, у меня не получается ))
69 Скиурус
 
24.09.19
13:56
(68) в (64) подсказал
70 palsergeich
 
24.09.19
13:57
2/10=12/60
Дальше школьные пропорции
71 Йохохо
 
24.09.19
14:02
МинутыВыездаВДесятичныхДоляхЧасаОуМайГадабле = Число("0," + МинутыВыезда)
72 dmpl
 
24.09.19
14:12
(32) Вам нужны комплексные числа: у них есть действительная часть и мнимая.
73 dka80
 
24.09.19
14:16
https://www.youtube.com/watch?v=IYtVFNhDdVo

Извините, не удержался
74 buketovav
 
24.09.19
14:20
(73) кто же знает, зачем Вас выпустили ))
75 ZDenis
 
24.09.19
14:23
(68) 60 * 0,2 - не?
76 Chum
 
24.09.19
14:49
Уй блин.... Это УАТ штоле?
77 piter3
 
24.09.19
14:50
(76) видимо
78 buketovav
 
24.09.19
14:52
(76) не, самописная конфа
79 Fish
 
24.09.19
14:57
(78) Так а в чём проблема? Перевести 1,2 часа в тип дата? Так это вроде элементарно - сначала переводим в минуты, ну а потом в дни, часы и минуты.
80 Chum
 
24.09.19
15:05
(79) не, там с математикой туго.
81 buketovav
 
24.09.19
15:06
(80) а у Вас не туго?
82 Serg_1960
 
24.09.19
15:08
(79) Проблема в том, что автору не задали правильный вопрос :)
И у него может быть "своя" логика и может быть так (или не так):
1,20 ==> 1,2 ==> 1 час 20 минут;
1,02 ==> 1,2 ==> 1 час две минуты.
:))
83 Вафель
 
24.09.19
15:10
нужно делить не строкой, а числами.
Целая часть и Дробная часть
84 buketovav
 
24.09.19
15:13
(82) нет же, минута часа это же 1/60, а не 1/100. как Вы написали
85 buketovav
 
24.09.19
15:13
(83) что на что делить? поясните Вашу мысль, пожалуйста
86 Serg_1960
 
24.09.19
15:14
Автор, давай для особо одаренных... и тормозных:), всё заново:
ЭтотОбъект.ВремяВДвижении - это число от 0,0 до 24,59? Или как?
87 Вафель
 
24.09.19
15:15
х = 1.2;
х_цел = Цел(х);
х_дроб = 100* (х - х_цел);
88 RomanYS
 
24.09.19
15:15
(83) в такой ситуации еще проще оперировать не числами, а датами. И просто использовать формат() для вывода
89 buketovav
 
24.09.19
15:16
(88) ну на данный момент есть уже числа, которые надо перевести в часы и минуты
90 ZDenis
 
24.09.19
15:17
(85) что надо то? как из 0.2 получить 12 минут я написал в (75)
91 buketovav
 
24.09.19
15:18
(90) а если будет 0,21, то как тогда считать?
92 Fish
 
24.09.19
15:18
(89) Какие? Можешь написать внятно, что у тебя есть, и что надо получить. Или мы из тебя будем по капле выдавливать?
93 ZDenis
 
24.09.19
15:19
(91) 60 * 0,21 - очевидно же
94 Fish
 
24.09.19
15:19
(91) 0,21 - это 0,21 часа?
95 RomanYS
 
24.09.19
15:19
(89) Формат('00010101' + ВремяВЧасах*3600,"ДФ=чч:мм")
96 Fish
 
24.09.19
15:20
(93) Правильнее будет сразу в секунды переводить, чтобы не получать дробных минут.
97 buketovav
 
24.09.19
15:20
(95) бывает больше чем 23.59.59 , может быть 100 часов. а может быть и 200
98 buketovav
 
24.09.19
15:21
(96)                 ЧасыВыездаВСекундах   = ЧасыВыезда * 60 * 60;
                МинутыВыездаВСекундах = МинутыВыезда * 60;
99 buketovav
 
24.09.19
15:21
(96) ВремяВыездаВСекундах = ЧасыВыездаВСекундах + МинутыВыездаВСекундах;
100 buketovav
 
24.09.19
15:21
Дней  = Цел(НовоеВремяВыездаВСекундах / 86400);
Часов = Цел((НовоеВремяВыездаВСекундах - (Дней * 86400))/60/60);
МинВСекундах = НовоеВремяВыездаВСекундах - (Дней * 86400) - (Часов * 3600);
101 Fish
 
24.09.19
15:23
(98) Если ты про твой код в (44) то там всё начало с бредом раздожения по разделителю нужно выкинуть.
Что у тебя в поле "ЭтотОбъект.ВремяВДвижении" - время в часах с десятыми и сотыми?
102 RomanYS
 
24.09.19
15:23
(97) так добавь дни в формат. Какой результат нужен?
103 buketovav
 
24.09.19
15:23
(101) число
104 Fish
 
24.09.19
15:24
(103) Пля. Что это число означает? Что такое в твоём случае 1,2. А что 345,67?
105 Fish
 
24.09.19
15:25
+(104) И что -68458,56?
106 buketovav
 
24.09.19
15:25
(102) нужен результат типа:
значение - 1,2 | результат - 1 час 12 минут
107 Масянька
 
24.09.19
15:25
(98) Часы не имеют отношения ко времени (формат).
108 buketovav
 
24.09.19
15:26
(104) Пля. это число. которое когда-то было временем, читать же надо, уже устал повторять
109 buketovav
 
24.09.19
15:26
(107) не понял, это Вы к чему?
110 buketovav
 
24.09.19
15:27
(107) аа, да я знаю. это убрал уже
111 Вафель
 
24.09.19
15:27
(106)
х = 1.2;
х_цел = Цел(х);
х_дроб = 60* (х - х_цел);
112 Fish
 
24.09.19
15:27
(108) Тогда вместо бреда в начале (44) пишешь:

ВсегоСекунд = ТвоеЧисло*3600.

Ну а дальше оттуда выделяешь дни, часы, минуты и секунды, как и в (44)
113 Масянька
 
24.09.19
15:28
(108) Чтобы не повторять - переделывай.
Храниться должно число (целое, минуты). А при выводе на экран или печать (только в этом случае!) переводить в формат времени (ну, если надо). А вот все вычисления производятся с числом (целым).
114 Salimbek
 
24.09.19
15:28
(112) +100500
115 buketovav
 
24.09.19
15:28
(112) ок
116 Вафель
 
24.09.19
15:28
строка = СтрШаблон("%1 час %2 минут", х_цел, х_дроб)
117 RomanYS
 
24.09.19
15:28
(106) а если значение 100.0 то результат какой д.б.?
118 Масянька
 
24.09.19
15:28
(109) К тому. Переделывай.
Потомки не простят.
119 buketovav
 
24.09.19
15:29
(113) спасиб
120 Salimbek
 
24.09.19
15:29
(117) 100 часов, видимо.
121 buketovav
 
24.09.19
15:29
(117) это 100 целых часов, результат должен быть  - 4 дня сколько то часов и сколько то минут
122 _Дайвер_
 
24.09.19
15:36
ЕПАТЬ МОИ ГЛАЗА ЧУТЬ НЕ ВЫТЕКЛИ ПОКА ЧИТАЛ!

Год(<Дата>)
Месяц(<Дата>)
День(<Дата>)
Час(<Дата>)
Минута(<Дата>)
Секунда(<Дата>)

А дальше простое умножение на 60*60*24 = 86400, в зависимости от того что хочешь получить,  или деление. Из любой даты можно получить и кол-во лет, месяцев, дней, недель, часов, минут и секунд
123 dezss
 
24.09.19
15:36
ужос...
уже вторая страница...
ТС не дружит со временем))))
124 buketovav
 
24.09.19
15:37
Стр.ДлительностьЧМС = "";
Если ЗначениеЗаполнено(Стр.Длительность) Тогда
ВремяВСекундах = Стр.Длительность * 3600;
Дней  = Цел(ВремяВСекундах / 86400);
Часов = Цел((ВремяВСекундах - (Дней * 86400))/60/60);
МинВСекундах = ВремяВСекундах - (Дней * 86400) - (Часов * 3600);
Минут = Окр(МинВСекундах / 60);
ВремяПрописью = Строка(Дней) + " дн. " + Строка(Часов) + " ч. " + Строка(Минут) + " м.";
Стр.ДлительностьЧМС = ВремяПрописью;
КонецЕсли;
125 buketovav
 
24.09.19
15:37
(123) терпение и труд )
126 dezss
 
24.09.19
15:37
Вообще неплохо было бы хранить дату выезда и дату окончания движения. А дальше все очень просто считается)
127 buketovav
 
24.09.19
15:38
(123) ну бывает, как-то раньше не приходилось такого делать
теперь все получилось )
Всем огромное спасибо!
128 buketovav
 
24.09.19
15:39
(126) дело в том, что нет таких данных, все данные в программе образовались при помощи загрузки данных из внешнего файла, предыдущим не хотелось заморачиваться и они бахнули все время в число
129 RomanYS
 
24.09.19
15:42
(124)
Стр.ДлительностьЧМС = Формат('00010101' + Стр.Длительность*3600,"ДФ='д ''дн'' чч ''ч.'' мм ''м.'''");
130 RomanYS
 
24.09.19
15:45
*(129) отменяется. День лишний прибавляет, чуть длиннее правильный формат получится
131 Serg_1960
 
24.09.19
15:58
Ничего не понял, но... вариант (44) :)

    МассивЧасыМинутыВыезда = СтрРазделить(ЭтотОбъект.ВремяВДвижении, ",");
    Если МассивЧасыМинутыВыезда.Количество() > 1 Тогда
        ЧасыВыезда   = МассивЧасыМинутыВыезда[0];
        МинутыВыезда = МассивЧасыМинутыВыезда[1];
        МинутыВыезда = ?(СтрДлина(МинутыВыезда) = 1, МинутыВыезда + "0", МинутыВыезда);
        ВремяВыездаВСекундах = ЧасыВыезда * 60 * 60 + МинутыВыезда * 60;
        Дней  = Цел(ВремяВыездаВСекундах / 86400);
        Часов = Цел((ВремяВыездаВСекундах - (Дней * 86400)) / 3600);
        Минут = Окр(((ВремяВыездаВСекундах - (Дней * 86400)) - (Часов * 3600)) / 60);
        ВремяВДвиженииПрописью = Строка(Дней) + " дн. " + Строка(Часов) + " ч. " + Строка(Минут) + " м.";
    КонецЕсли;