Как убрать справа нули в поле ввода числового типа

1. user712426 04.09.19 08:28 Сейчас в теме
Здравствуйте!
Стоит задача: убирать справа нули в поле ввода числового типа на форме элемента.
Можно ли это сделать с помощью формата?
УПП обычные формы.
Поле ввода число (длина-12, точность -3)
По теме из базы знаний
Найденные решения
25. nvilku 04.09.19 10:15 Сейчас в теме
Процедура ТестОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
	Если Окр(ЭлементыФормы.Тест.Значение) = ЭлементыФормы.Тест.Значение Тогда
		ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=0";
	ИначеЕсли Окр(ЭлементыФормы.Тест.Значение,1) = ЭлементыФормы.Тест.Значение  Тогда
		ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=1";
	ИначеЕсли Окр(ЭлементыФормы.Тест.Значение,2) = ЭлементыФормы.Тест.Значение  Тогда
		ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=2";
	КонецЕсли;
КонецПроцедуры

Процедура ТестАвтоПодборТекста(Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка)
	Если ЭлементыФормы.Тест.Формат <> "ЧЦ=12; ЧДЦ=3" Тогда
		ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=3";
	КонецЕсли;
КонецПроцедуры
Показать
Михаська; user712426; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. Denis_CFO 49 04.09.19 08:39 Сейчас в теме
(1)
Поле ввода число (длина-12, точность -3)


при таком раскладе простого решения не будет.
9. user712426 04.09.19 08:41 Сейчас в теме
(7)да мне бы хотя бы узнать это решение вообще возможно ли?? ведь поле ввода ЧИСЛОВОЕ! не строковое.. и подсунуть туда даже если обработаем значение вообще получится??! ибо формат 12,3.. т.е. один фиг выводиться будут 000
11. catena 110 04.09.19 08:44 Сейчас в теме
(9)Ну, можно на форме поместить текстовое поле с маской ввода ###.###, к нему прикрутить обработку ввода текста и запись/отображение в нужный реквизит. Будет охрененно накрученный костыль.
13. user712426 04.09.19 08:51 Сейчас в теме
(11)доп поля нельзя.. не желательно. попробую щас через окончание ввода текста и СтандартнаяОбработка = ложь.. не знаю пока че получится. отпишусь
14. danjer74 4 04.09.19 08:58 Сейчас в теме
(1)
	СтрокаПроверки = "12000123000000";
	НомерПервойЦифры = СтрДлина(СтрокаПроверки);
		Для а = 1 По СтрДлина(СтрокаПроверки) Цикл
			КодСимвола = КодСимвола(Сред(СтрокаПроверки, НомерПервойЦифры, НомерПервойЦифры-1));
			Если КодСимвола = 48 Тогда
				СтрокаПроверки = ЛЕв(СтрокаПроверки, НомерПервойЦифры-1);
			Иначе 
				Прервать;
			КонецЕсли;
			НомерПервойЦифры = НомерПервойЦифры - 1;
		КонецЦикла;
		Сообщить(Строкапроверки);
Показать
Как вариант
16. user712426 04.09.19 09:08 Сейчас в теме
(14)ну так в числовое поле все равно запихнет число с форматом с 3мя знаками после запятой..
22. danjer74 4 04.09.19 09:42 Сейчас в теме
Ну да, потому что формат такой. Но отображается то оно без завершающих нулей, если формат не настраивать.
18. kot30688 3 04.09.19 09:14 Сейчас в теме
(1) Тебе что, нужно выводить числа в тысячах чего-то там? Если да, дели на 1000 и все
19. catena 110 04.09.19 09:31 Сейчас в теме
(18)смотри (10), не все так просто.
23. kot30688 3 04.09.19 09:46 Сейчас в теме
(19)АА, оо...уууу :) Не помню, хоть убей, есть у обычных форм условное оформление или нет. Если есть, можно попробовать через него замутить. Суть идеи в том, чтобы брать числа после запятой проверяем, умножаем на 1000, проверяем на равенство 0. Если число равно нулю. значит в условном оформлении ставим формат число 12,0. Если не равно нулю, делим на 10, проверяем, поделилось без остатка или нет, если нет, то формат ставим 12,3. Если остатка от деления нету, делим еще раз на 10, опять проверяем, есть ли остаток от деления. Если остатка нет, значит формат 12,1, если есть, формат 12,2. Ну и все это вешаем на процедуру приИзменении. Ну, я бы как-то так попробовал.
24. danjer74 4 04.09.19 09:47 Сейчас в теме
(1)А ты спроси директора - зачем это надо ему?
succub1_5; +1 Ответить
26. succub1_5 91 04.09.19 11:23 Сейчас в теме
(1)
Поле ввода число (длина-12, точность -3)

в любом случае Формат и Формат редактирования - надо убрать все флаги, тогда автоматом будет:
123,230 - 123,23
123,200 - 123,2
123,000 - 123

а если прям вот так надо длина 12 и точность 3 - то уже после ввода программно проверять корректность ;)
27. Denis_CFO 49 04.09.19 11:28 Сейчас в теме
(26) а это как? у реквизита же тип стоит "Число", длина - 12, точность - 3
30. succub1_5 91 06.09.19 16:09 Сейчас в теме
(27)конфа на поддержке? разблокировать нельзя?
2. vv2 04.09.19 08:34 Сейчас в теме
В формате убрать галочку "Выводить лидирующие нули" ?
3. Denis_CFO 49 04.09.19 08:35 Сейчас в теме
(2) ему справа надо убрать. Тут через формат не получится.

только строчку посимвольно обрабатывать.
5. user712426 04.09.19 08:36 Сейчас в теме
(3)это для строкового типа! для числового типа не прокатит. и мне надо чтобы наоборот не выводились!
4. danjer74 4 04.09.19 08:36 Сейчас в теме
Точно справа? Там вроде как нули нужны :)
6. user712426 04.09.19 08:37 Сейчас в теме
(4)да.. точно.. к сожалению.. дир хочет чтобы было не 1,500 а просто 1,5
8. vv2 04.09.19 08:40 Сейчас в теме
(6)Тогда в формате поставьте точность 1 ? или он хочет
1,500 -> 1,5
1,550 -> 1,55
10. user712426 04.09.19 08:41 Сейчас в теме
(8)да -да! именно это и хочет
1,500 -> 1,5
1,550 -> 1,55
при этом строковый тип делать не хочется!
12. nomad_irk 76 04.09.19 08:46 Сейчас в теме
(6)он не наркоман, часом?
Seaflame; succub1_5; +2 Ответить
15. danjer74 4 04.09.19 08:59 Сейчас в теме
(12)Начальник может быть не прав, но он всегда начальник :)

1. Директор всегда прав.
2. Если директор не прав, смотри 1 :)
32. пользователь 02.10.23 17:24
Сообщение было скрыто модератором.
...
17. Denis_CFO 49 04.09.19 09:13 Сейчас в теме
там только для этого поля поставить тип строка и программно формат для каждой ячейки устанавливать... но это костыль, никому не нужный.

похоже, кого-то из-за некорректной постановки задачи премии лишат... :)
20. catena 110 04.09.19 09:32 Сейчас в теме
(17)
похоже, кого-то из-за некорректной постановки задачи премии лишат
Нее, это саботаж внедрения. "Фигня ваша адинэс, даже ексель круче умеет"
Михаська; nomad_irk; +2 Ответить
21. Denis_CFO 49 04.09.19 09:34 Сейчас в теме
(20) кстати, да. Можно через activex вывести лист excel на форму и в нём данные колотить :)
25. nvilku 04.09.19 10:15 Сейчас в теме
Процедура ТестОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
	Если Окр(ЭлементыФормы.Тест.Значение) = ЭлементыФормы.Тест.Значение Тогда
		ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=0";
	ИначеЕсли Окр(ЭлементыФормы.Тест.Значение,1) = ЭлементыФормы.Тест.Значение  Тогда
		ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=1";
	ИначеЕсли Окр(ЭлементыФормы.Тест.Значение,2) = ЭлементыФормы.Тест.Значение  Тогда
		ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=2";
	КонецЕсли;
КонецПроцедуры

Процедура ТестАвтоПодборТекста(Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка)
	Если ЭлементыФормы.Тест.Формат <> "ЧЦ=12; ЧДЦ=3" Тогда
		ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=3";
	КонецЕсли;
КонецПроцедуры
Показать
Михаська; user712426; +2 Ответить
29. user712426 04.09.19 12:38 Сейчас в теме
(25)так и сделали. коллега подсказал! спасибо всем!
31. user596430_gleb21 3 06.09.19 21:11 Сейчас в теме
(25)Можно слегка изменить

Процедура ТестОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
Ч = 0;
Пока Окр(ЭлементыФормы.Тест.Значение, Ч) <> ЭлементыФормы.Тест.Значение Цикл
Ч = Ч + 1;
КонецЦикла;
ЭлементыФормы.Тест.Формат = "ЧЦ=12; ЧДЦ=" + Строка(Ч);
КонецПроцедуры
28. Denis_CFO 49 04.09.19 11:38 Сейчас в теме
Если Реквизит Формы, тогда можно использовать свойство "ФиксДробнаяЧасть" = Ложь.

а вот с реквизитом объекта это не работает.

Может только у меня?
Прикрепленные файлы:
КоличествоРазрядов.epf
33. Seaflame 02.10.23 18:24 Сейчас в теме
на управляемых формах проблему решил через формат используя ЧС.
Прикрепленные файлы:
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот