Имя: Пароль:
1C
1С v8
Символы с цифрами в числовое поле. Как предотвратить?
0 Flutt1
 
22.04.20
03:14
Здравствуйте. Наш кассир считал номер дисконтной карты (AD9281Z0282HKA999) в поле количество, это не заметил и пробил чек на миллион. Это из-за того, что, если вставить в числовое поле (можно даже из буфера обмена) строку, содержащую символы и цифры , то платформа отбросит символы, а цифры оставит. Подскажите, пожалуйста, можно как-нибудь перехватить это преобразование, чтоб сделать пользователю предупреждение? События "ПриНачалеРедактирования", "ПередНачаломИзменения" срабатывают уже после того, как произошло преобразование.
1 Flutt1
 
22.04.20
03:16
Единственное, что приходит на ум, - это просто проверять, не ввели ли число больше, скажем 1000, и тогда задавать вопрос. Но это не совсем корректно. Может, лучше решение кто знает?
2 Garykom
 
гуру
22.04.20
03:21
ТО (сканер ШК, ридер карт и т.д.) использовать через драйвер (и внешнее событие) а не как клавиатуру.
3 PR
 
22.04.20
03:24
(1) У тебя один вариант, сделать реквизит формы типа строка, а не число
Тогда если вводится "мама", то ты сможешь понять, что это не число
Но вообще задача такая себе, странная слегка
Вообще я считал, что считывание карты — это событие, а не по типу сканера ШК, когда по сути подключение в разрыв клавы
4 PR
 
22.04.20
03:31
(3) Хотя нет, подумал, что как-то же решается вариант со сканером ШК, есть адекватный вариант
Префикс и постфикс тебе помогут
Идея такая же как и со сканером ШК

У сканера ШК при сканировании программируется префикс (например F7) и постфикс (Enter)
В итоге когда тело на кассе что-то сканирует сканером, то это не просто нажатие на клаве символов ШК, а нажатие F7, потом символов ШК, потом Enter
В итоге на форме на F7 повешен обработчик открытия формы ввода ШК в виде простого ввода строки, которая закрывается при нажатии Enter

Делай также для ридера, если в нем возможно настроить префикс и постфикс и будет тебе счастье
5 PR
 
22.04.20
03:33
(2) Так-то это геморрой еще тот, клава гораздо проще, никаких дров не нужно
6 Flutt1
 
22.04.20
03:39
(3) Поменять тип реквизита Количества формы РМК кассира - это значит внести правки в десяток процедур и функций, где потом это количество используется. Обновляться будет потом очень больно:(
7 Flutt1
 
22.04.20
03:40
(4) Спасибо большое, попробую)
8 PR
 
22.04.20
03:43
(6) Не тип реквизита, а сделать элемент формы, который потом обрабатывать
Но вообще идея в любом случае дерьмовенькая, я бы так не стал делать конечно же
9 Garykom
 
гуру
22.04.20
07:59
(4)
>У сканера ШК при сканировании программируется префикс (например F7) и постфикс (Enter)
>на форме на F7 повешен обработчик открытия формы ввода ШК в виде простого ввода строки, которая закрывается при нажатии Enter

Проблема с этим с какой то версии платформы 1С.
Между F7 и ШК нет паузы. Форма ввода строки еще не открылась - шк попал не туд
10 strange2007
 
22.04.20
08:26
(0) Просто личный опыт, а вдруг пригодится:
Данные сканера ШК перенаправлялись драйвером в процедуру, а не в активное поле. С процедуры уже контролировал номерок и писал, куда надо. Да, драйвер периодически отваливался и данные писались в активное окно, но это уже мелочи.
В другой организации просто применили метод морковки. В зад. Как только не туда пикнула, сразу нависает морковка.
В третьей организации F7 заменил на супермегаформу, которая данные ШК колбасит как ненормальная и в конце уже переносит в основной документ, раскладывая всё по полочкам.
Все варианты живут прекрасно много лет.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс