Виртуальная (экранная) клавиатура для управляемых форм

14.12.18

Разработка - Инструментарий разработчика

Предлагаю свой вариант виртуальной клавиатуры для использования в разработках, предполагающих использование сенсорного ввода.

Скачать файлы

Наименование Файл Версия Размер
Виртуальная (экранная) клавиатура для управляемых форм.:
.rar 23,98Kb
143
.rar 1.0 23,98Kb 143 Скачать

Адаптируя РМК Розницы под "тачи" столкнулся с проблемой отсутствия нормальной символьно-цифровой экранной клавиатуры в конфигурации. В общем-то и не ожидал ее там найти. Попытался использовать Osk (стандартная клавиатура Windows), VK (бесплатная клавиатура). Можно использовать с большой натяжкой. Требуется указывать фокус на элемент ввода. И самое неприятное - их нельзя программно закрыть. По крайней мере ссылок на команды управления ими я не нашел.

Принял трудное решение написать свою "Экранку". Предлагаю вашему вниманию клавиатуру с открытым кодом для управляемых форм. 

Обработка может открываться как файл и может быть подключена как дополнительная.

В комплекте также представлена обработка с примером вызова клавиатуры с обработкой оповещения нажатия на клавиши.

Клавиатура возвращает события: "Enter" и "Текст".

Если событие "Текст", то в параметре обработки оповещения содержится весь текст, набираемый на клавиатуре (не отдельный символ, а именно весь текст). Это обусловлено тем, что мы не имеем доступа к редактируемому тексту со стороны клавиатуры, но хотим использовать спец символы табуляция и "забой", передача которых в основную форму вызовет необходимость писать дополнительную обработку этих действий, что нам не хочется делать, ибо лень. 

Событие "Enter" также вернет весь текст. По получению данного события можно программно закрыть клавиатуру (на усмотрение программиста) и выполнить требуемые действия с полученным текстом. По событию "Enter" буфер текста на стороне клавиатуры обнуляется.

Пример обработки оповещения:

//Оповещение срабатывает по нажатию клавиш во внешней обработке
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	Если Источник = "Виртуальная клавиатура" Тогда
	    Если ИмяСобытия = "Текст" Тогда
			ТекстоваяСтрока = Параметр.Текст;
		ИначеЕсли ИмяСобытия = "Enter" Тогда
			ТекстоваяСтрокаПриИзменении(Неопределено);
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Пример открытия клавиатуры:

//Вызов клавиатуры
&НаКлиенте
Процедура Клавиатура(Команда)
	Попытка
		//Если подключена как внешняя обработка
		ОткрытьФорму("ВнешняяОбработка.ВиртуальнаяКлавиатура.Форма.Форма");
	Исключение
		//Откроем как файл.
		//Помещаем обработку во временном хранилище
		АдресХранилища = "";
		Результат = ПоместитьФайл(АдресХранилища, ПутьКФайлуОбработки, , Ложь);
		ИмяОбработки = ПодключитьВнешнююОбработку(АдресХранилища);
		
		// Откроем форму подключенной внешней обработки
		ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма");
	КонецПопытки;
КонецПроцедуры

&НаСервере
Функция ПодключитьВнешнююОбработку(АдресХранилища)
    Возврат ВнешниеОбработки.Подключить(АдресХранилища);
КонецФункции   

Тестировалось на платформе 8.3.13. Работает на любых конфигурациях на управляемых формах.

Файлы в архиве:

ВиртуальнаяКлавиатура.epf   - основной файл. Обработка "Виртуальная клавиатура".

ВызовКлавиатуры.epf    - пример вызова виртуальной клавиатуры.

Обработка виртуальная клавиатура экранная клавиатура

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122091    670    389    

714

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7281    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3521    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177733    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99343    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18106    6    8    

39

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28104    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23599    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. asdfgcom 415 17.12.18 17:54 Сейчас в теме
Добавил возможность скрывать/показывать дополнительную цифровую клавиатуру кнопкой NUM.
user1987511; +1 Ответить
17. nick_e 2 11.08.23 06:37 Сейчас в теме
(1)Что то корежит Вашу клавиатуру!
Прикрепленные файлы:
19. пользователь 09.09.23 12:48
Сообщение было скрыто модератором.
...
18. пользователь 09.09.23 12:47
Сообщение было скрыто модератором.
...
2. Kabz 77 19.12.18 11:38 Сейчас в теме
еще бы хорошо бы чтоб были только цифры или только нужная раскладка.
3. asdfgcom 415 19.12.18 12:28 Сейчас в теме
(2) Только цифровую - сделаю. Если Вы скачали, скину изменение на почту (сообщите в ЛС). Только нужная раскладка - не совсем понятно. Сделал все раскладки, даже реакцию на шифт и капс. Убирайте ненужные группы раскладок кнопок и все.
4. Kabz 77 19.12.18 16:31 Сейчас в теме
ну я имел ввиду при вызове указывать типа только цифры , только цифры и знаки , только русские , только латинские , можно еще комбинации :)
5. asdfgcom 415 19.12.18 16:40 Сейчас в теме
(4) Понял. Сделаю. Только если мы не будем вызывать отдельную форму клавиатуры, а наложим ее в свою форму, то клавиатура растянется и кнопки будут прямоугольные.
6. asdfgcom 415 19.12.18 16:41 Сейчас в теме
Всем скачивающим клавиатуру прошу скинуть в ЛС электронную почту, чтобы я смог отправлять обновления.
7. пользователь 22.01.19 14:28
Сообщение было скрыто модератором.
...
8. пользователь 22.01.19 14:35
Сообщение было скрыто модератором.
...
9. kabanoff 49 24.04.19 15:46 Сейчас в теме
Плохо, что ваша клавиатура не умеет работать с позицией курсора. Добавляет символ - только в конец строки. Удаляет - тоже только с конца.
10. asdfgcom 415 24.04.19 16:30 Сейчас в теме
(9) Это точно! Плохо.
Однако, клавиатура ни с чем не работает. Она всего лишь присылает в вашу форму нажатые клавиши. Далее программист сам должен организовать доставку символов в нужное поле.
При открытии обработки фокус переносится с активного элемента открывающей формы на открываемую. Открываемая не знает, где находился фокус. Даже если бы знала, она ничего не сможет сделать, к примеру, с полем табличной формы. И что с того, что она напишет в него букву А. Событие поиска не сработает, если программист не напишет свое событие обработки ввода символа с виртуальной клавиатуры.
ЗЫ. Думал, что Вы говорите про позицию курсора в вызывающей форме. Но это не меняет суть дела. Мы не можем отправить в форму клавиатуры позицию курсора в строке текста. Только, если организовать кэш ввода.
16. 7OH 69 10.09.20 17:08 Сейчас в теме
(10) почему не нести вместе с клавой поле ввода и возвращать по закрытии введенное ?
11. asdfgcom 415 24.04.19 16:31 Сейчас в теме
(9) Однако, можно пойти дальше. Можно воспользоваться скриптами, чтобы не присылать символы форме-владельцу, а имитировать нажатия на кнопки клавиатуры. Но, я не владею.
12. kabanoff 49 24.04.19 17:38 Сейчас в теме
(11) Отправлять нажатия клавиш не сложно. Главное - установить активность в нужном поле ввода.

ЭтаФорма.ТекущийЭлемент = Элементы.МоеПолеВвода;


Например, вот такая команда обрабатывает нажатие кнопки Backspace.
Wsh = Новый COMОбъект("WScript.Shell");
Wsh.SendKeys("{BS}");
user1987511; +1 Ответить
13. asdfgcom 415 24.04.19 17:45 Сейчас в теме
(12) Появится денек-другой, посмотрю, что еще можно сделать.
14. asdfgcom 415 24.04.19 19:06 Сейчас в теме
(12) Да, и еще. В момент нажатия на кнопку активна форма клавиатуры а не форма владелец. Вопрос. Как WScript-у дать понять в какую форму и в какой реквизит формы, и в какую часть текста этого реквизита надо кидать BS. Фокуса уже нет на этом реквизите! Кроме того, если клавиатура вызвана для редактирования строки ТЧ (например, ТЧ чека) Чтобы начать (начать, т.к. фокус пропал на строку) редактирование этой строки надо последовательно сделать 2х клик по строке (она станет выделена) щелкнуть по нужному месту строки (где до этого стоял курсор), и только после этого передавать данные с клавиатуры.
20. пользователь 09.09.23 12:49
Сообщение было скрыто модератором.
...
15. Aleskey_K 32 20.05.20 15:15 Сейчас в теме
насколько актуальная клавиатура с этой публикацией? https://infostart.ru/public/922160/
21. asdfgcom 415 11.01.24 11:09 Сейчас в теме
(15) Под нее и было написано.
Оставьте свое сообщение