Имя: Пароль:
1C
1С v8
Какую маску задать, чтоб пробелы не вводить? Или есть другой способ?
0 Антиквар
 
08.02.12
12:22
Всем привет!
Пользователи копируют из одной программы коды и вставляют их в 1С в поле ввода. Но нужно, чтобы при этом пробелы из вставляемой строки удалялись.
ПриИзменении() не подходит, т.к. в этом случае пробелы удалятся только после ввода, а поскольку само поле ввода ограниченной фиксированной длины, то из-за пробелов вводимая строка обрезается.
Выход вижу в наложении маски. Если маску указать "9999", то при копировании например строки "123 45" пробел благополучно удаляется ещё до ввода в поле ввода и мы получаем "12345". Но в строке могут быть и буквы. И вот аткой маски не нашел. По описанию подходит маска "N", но почему то она позволяет ввести пробелы.
1 kosts
 
08.02.12
12:25
(0) Есть событие "окончание ввода текста", оно подойдет
2 Антиквар
 
08.02.12
12:31
(1) Могу конечно попробовать, но оно "Вызывается после ввода текста при сходе с элемента управления"
А при вводе последние символы уже обрежутся. Например поле ввода фиксированной длины 5 символов. Мы копируем в него строку "123 45", в итоге на выходе получаем "123 4", и там уже бестолку пробелы убирать
3 del123
 
08.02.12
12:36
Как вариант сохранять в поле с бОльшей длинной и при изменении записывать куда надо после удаления лишних пробелов
4 FIXXXL
 
08.02.12
12:38
Поле кода сделай недоступным, поле ввода - просто на форме, при изменении поля ввода пиши-формать в код как угодно
5 kosts
 
08.02.12
12:41
(2) Вариант - своя кнопка вставить, берешь из буфера и как нужно так и вставляешь...
6 kosts
 
08.02.12
12:43
+ к (5) Если вставляешь в табличную часть, то вообще замечательно можно вставить из Excel сразу много строк...
7 Stim
 
08.02.12
12:45
все просто - при вводе нового элемента вместо поля код - поле ввода. тип строка, длина 100. после изменения - обработка и перенос в реквизит КОД.

Но лучше все же автоматизировать процесс и выгружать из сторонней программы в автоматическом режиме.
8 Антиквар
 
08.02.12
13:03
(3) так наверное и придется делать. Потому как расширить поле ввода не могу, поскольку поле ввода - это реквизит регистра, который в нужном отборе прямо на форме для редактирования.
(4) как я написал уже выше, редактируется сам регистр, т.е. в таб.поле придется добавить колонку дял ввода.
(7) из сторонней программы будет выгружаться, но когда ещё... там нет выгрузок, свой формат данных, вобщем другая история :)
9 Антиквар
 
08.02.12
13:04
ну т.е. маски подходящей нет, так что ли ? :)
чтобы не только цифры, но и буквы можно было писать, но кроме пробелов
10 kosts
 
08.02.12
13:19
Сделай кнопку "вставить из буфера" рядом с реквизитом.

процедура Вставить()

Попытка
   ЭлементыФормы.Добавить(Тип("ПолеHTMLДокумента"), "ПолеHTMLДокумента", Ложь);
Исключение
КонецПопытки;
Окно = ЭлементыФормы.ПолеHTMLДокумента.Документ.parentWindow;
ТвоеЗначение = СтрЗаменить(Окно.clipboardData.getData("Text"), " ", "");

конецпроцедуры

и все...
11 Антиквар
 
08.02.12
13:32
(10) не понял, слишком умно :) Этот код для вставки из HTML-документа?
а если копирование будет из ворда, или в моем случае чаще всего из сторонней программы, то какой код писать... Для каждой программы, из которой копируем, свой код получается?
12 kosts
 
08.02.12
13:40
(11) Это типичная для 1С вставка из буфера обмена.
13 Антиквар
 
08.02.12
17:28
(12) никогда не делал такое.
Дак программный код зависит от того, откуда копируешь, или не важно, главное чтоб в буфере обмена что-то было?
Просто по Вашему коду вроде как привязка к источнику идет, откуда копируется.
14 kosts
 
08.02.12
18:47
(13) Это вставка из буфера обмена, того который в виндовс, тот в который попадает текст, если его скопировать в ворде или блокноте. Если в коде что-то не понятно, не думай, используй как есть, это рабочий код. Просто у 1С нет своего метода вставки из буфера, по этому такие хм извращения, через поле HTML...
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn