СКД. Как ограничить ввод значения в параметр СКД?

1. buketov_av 24.10.23 16:53 Сейчас в теме
Добрый день, Уважаемые Форумчане!

Есть самописный отчет на СКД.
У данного отчета есть параметр "Процент".

Подскажите, пожалуйста, возможно ли каким-то образом ограничить ввод значений в это поле параметра отчета, чтобы пользователь не мог ввести значение больше 100?

Программно я эту ошибку обрабатываю ПриКомпановкеРезультата и, если значение превышает 100, то передаю 100.
Но как сделать ограничение по вводу значения не смог разобраться.
Думал в торону как поймать обработчик типа "ПриИзменении" параметра, но тоже не увенчалось успехом.

Заранее всех благодарю за помощь!
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DesertPunk 24.10.23 17:39 Сейчас в теме
(1) В ПриИзменении() нормально работает

&НаКлиенте
Процедура ПериодПриИзменении(Элемент)
	Если Отчет.Период.ДатаНачала < Начало Тогда
		Сообщить("Начальная дата периода не может быть меньше 01 июня 2022");
		Отчет.Период.ДатаНачала = Начало;
	КонецЕсли;

КонецПроцедуры
Показать
4. buketov_av 25.10.23 08:16 Сейчас в теме
(2) это сработает для реквизита формы, да, но у меня нет произвольной формы, да и создавать ее, как бы, не очень хотелось бы, думал, что есть способы для решения моей задачи
10. anton13m 4 25.10.23 10:12 Сейчас в теме
(4)
но у меня нет произвольной формы

В типовых конфигурациях используется форма отчета в которой есть ОбновитьЭлементыФормыНастроекНаСервере, где можно отловить добавление поля на форму и установить ограничения или событие изменения: Подключаемый_ЭлементНастройки_ПриИзменении
3. newlogin1 24.10.23 17:43 Сейчас в теме
(1)Добрый день.
Если отчет полностью типовой, то
ПриКомпановкеРезультата

правильно, не самый удобный, но все типовые так работают (в смысле при компоновке проверка). Можно накостылить на форму новый реквизит, и при изменении проверять.
А вообще действенный способ такой: при ошибке вызывать исключение с описание проблемы и тогда на 3й раз пользователи так делать больше не будут.
Можно конечно попробовать с ДоступныеЗначения поиграться. Или аналогичное, только для реквизита формы через события БСП, найти на форме реквизит запретить ввод своего значения оставить только выбор из списка, а список программно заполнить), звучит как, и таковым является, извращение
5. buketov_av 25.10.23 08:19 Сейчас в теме
(3) я и делаю при компоновке проверку и исправляю программно ошибку пользователя, если она есть.

Выбор из списка не вариант, бирать вариант от 1 до 100 ну такое себе.

Интерфейс должен быть дружелюбным.
6. newlogin1 25.10.23 09:21 Сейчас в теме
(5)Специфичная задача - отчеты не нужны для такого, только отборы - только хардкор. Так же если пользователь идиот, то вам никакая проверка не поможет. В целом такая задача типовыми способами решается только через костыли сначала в модуле отчета, потом в общей форме либо только в общей форме.
9. lmnlmn 69 25.10.23 10:10 Сейчас в теме
(5) Норм же со списком? Никто не заставляет именно выбирать. Пусть руками пишут, лишь бы то что в списке.
12. BeerWulf 25.10.23 10:43 Сейчас в теме
(9) Если 99,99 или 0,01 процент хочет поставить пользователь, будете вбивать в список доступных значений 10000 значений?) Если точность процентов захотят ставить 3 знака добивать до 100000 значений?
13. lmnlmn 69 25.10.23 10:48 Сейчас в теме
(12) Я точно вбивать не буду. Но автор хочет обойтись стандартным диалогом ввода параметров СКД без рисования доп. формы. Как там иначе сделать?
7. dandykry 12 25.10.23 09:37 Сейчас в теме
(1) Тип значения параметра Число(5,2) неотрицательное и выражение уже пробовали?
Прикрепленные файлы:
8. buketov_av 25.10.23 09:42 Сейчас в теме
(7) да., уже пробовал многое
но это не поможет ограничить ввод значения больше 100
15. BeerWulf 25.10.23 11:00 Сейчас в теме
(8) Ограничить именно поле ввода не поможет, но даст возможность не добавлять ничего в код. Если в выражении параметра прописать как указано выше, то на форме хоть 500 может быть, но восприниматься в запросе будет как 100. Вариант не идеальный но рабочий
19. dandykry 12 25.10.23 11:43 Сейчас в теме
(8) Тогда только через опу
Прикрепленные файлы:
ОграничениеПроцента.erf
Cartman; SlavaKron; +2 Ответить
21. dandykry 12 25.10.23 12:15 Сейчас в теме
(8) в 19 сообщении показал пример. промахнулся с ответом
22. buketov_av 25.10.23 12:20 Сейчас в теме
(21) а как это работает и где это писать? я не совсем понял )
Если делать аналогично как у Вас, в модуле отчета, то ничего не происходит.
23. buketov_av 25.10.23 12:33 Сейчас в теме
(21) это требует внесение изменений в общую форму?
24. dandykry 12 25.10.23 13:23 Сейчас в теме
(21) Отладкой добейте до приемлемого состояния. Должен заметить, я сделал поиск параметра и элемента формы очень топорно. В прод сделал бы иначе, для примера пойдет.

ОпределитьНастройкиФормы - указываете какие события формы ловите в модуле объекта.
ПередФормированиемОтчета - Проверить, что пользователь не установил параметр через расширенную настройку
ПриОпределенииПараметровВыбора - Найти в пользовательских настройках нужный параметр и сохранить в доп свойства компановщика
ПослеЗаполненияПанелиБыстрыхНастроек - последнее событие формы, после которого создаются элементы формы.
25. dandykry 12 25.10.23 13:24 Сейчас в теме
(23) нет, это же внешний отчет, все через БСП
11. glek 119 25.10.23 10:32 Сейчас в теме
(1) А какой тип параметра? Число? Так ограничьте длину.
14. BeerWulf 25.10.23 10:56 Сейчас в теме
(11) А как ограничить? Число(5,2) даст поставить и 100,00% и 999,99%.
16. glek 119 25.10.23 11:31 Сейчас в теме
18. buketov_av 25.10.23 11:40 Сейчас в теме
(16) ограничение длины и разрядности не даст требуемого решения
17. buketov_av 25.10.23 11:39 Сейчас в теме
(11)Тип число. Если ограничить длину до 3 символов. то можно ввести 999, а надо ограничить максимально вводимое значение не более 100.
20. Dr.HiHi 2 25.10.23 11:46 Сейчас в теме
доступные значения для параметра установите ;))
Оставьте свое сообщение

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