Как убрать справа нули в поле ввода числового типа
По теме из базы знаний
Найденные решения
Процедура ТестОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
Если Окр(ЭлементыФормы.Тест.Значение) = ЭлементыФормы.Тест.Значение Тогда
ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=0";
ИначеЕсли Окр(ЭлементыФормы.Тест.Значение,1) = ЭлементыФормы.Тест.Значение Тогда
ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=1";
ИначеЕсли Окр(ЭлементыФормы.Тест.Значение,2) = ЭлементыФормы.Тест.Значение Тогда
ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=2";
КонецЕсли;
КонецПроцедуры
Процедура ТестАвтоПодборТекста(Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка)
Если ЭлементыФормы.Тест.Формат <> "ЧЦ=12; ЧДЦ=3" Тогда
ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=3";
КонецЕсли;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Как вариант
СтрокаПроверки = "12000123000000";
НомерПервойЦифры = СтрДлина(СтрокаПроверки);
Для а = 1 По СтрДлина(СтрокаПроверки) Цикл
КодСимвола = КодСимвола(Сред(СтрокаПроверки, НомерПервойЦифры, НомерПервойЦифры-1));
Если КодСимвола = 48 Тогда
СтрокаПроверки = ЛЕв(СтрокаПроверки, НомерПервойЦифры-1);
Иначе
Прервать;
КонецЕсли;
НомерПервойЦифры = НомерПервойЦифры - 1;
КонецЦикла;
Сообщить(Строкапроверки);
Показать
(19)АА, оо...уууу :) Не помню, хоть убей, есть у обычных форм условное оформление или нет. Если есть, можно попробовать через него замутить. Суть идеи в том, чтобы брать числа после запятой проверяем, умножаем на 1000, проверяем на равенство 0. Если число равно нулю. значит в условном оформлении ставим формат число 12,0. Если не равно нулю, делим на 10, проверяем, поделилось без остатка или нет, если нет, то формат ставим 12,3. Если остатка от деления нету, делим еще раз на 10, опять проверяем, есть ли остаток от деления. Если остатка нет, значит формат 12,1, если есть, формат 12,2. Ну и все это вешаем на процедуру приИзменении. Ну, я бы как-то так попробовал.
(1)
в любом случае Формат и Формат редактирования - надо убрать все флаги, тогда автоматом будет:
123,230 - 123,23
123,200 - 123,2
123,000 - 123
а если прям вот так надо длина 12 и точность 3 - то уже после ввода программно проверять корректность ;)
Поле ввода число (длина-12, точность -3)
в любом случае Формат и Формат редактирования - надо убрать все флаги, тогда автоматом будет:
123,230 - 123,23
123,200 - 123,2
123,000 - 123
а если прям вот так надо длина 12 и точность 3 - то уже после ввода программно проверять корректность ;)
Процедура ТестОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
Если Окр(ЭлементыФормы.Тест.Значение) = ЭлементыФормы.Тест.Значение Тогда
ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=0";
ИначеЕсли Окр(ЭлементыФормы.Тест.Значение,1) = ЭлементыФормы.Тест.Значение Тогда
ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=1";
ИначеЕсли Окр(ЭлементыФормы.Тест.Значение,2) = ЭлементыФормы.Тест.Значение Тогда
ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=2";
КонецЕсли;
КонецПроцедуры
Процедура ТестАвтоПодборТекста(Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка)
Если ЭлементыФормы.Тест.Формат <> "ЧЦ=12; ЧДЦ=3" Тогда
ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=3";
КонецЕсли;
КонецПроцедуры
Показать
(25)Можно слегка изменить
Процедура ТестОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
Ч = 0;
Пока Окр(ЭлементыФормы.Тест.Значение, Ч) <> ЭлементыФормы.Тест.Значение Цикл
Ч = Ч + 1;
КонецЦикла;
ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=" + Строка(Ч);
КонецПроцедуры
Процедура ТестОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
Ч = 0;
Пока Окр(ЭлементыФормы.Тест.Значение, Ч) <> ЭлементыФормы.Тест.Значение Цикл
Ч = Ч + 1;
КонецЦикла;
ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=" + Строка(Ч);
КонецПроцедуры
Если Реквизит Формы, тогда можно использовать свойство "ФиксДробнаяЧасть" = Ложь.
а вот с реквизитом объекта это не работает.
Может только у меня?
а вот с реквизитом объекта это не работает.
Может только у меня?
Прикрепленные файлы:
КоличествоРазрядов.epf
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот