HotKeys на Python для 1С

26.01.24

Интеграция - Периферийные устройства

Недавно прочитал статью на Инфостарте о KeyPad и вначале захотел себе такой, но через какое-то время я понял, что дополнительная даже маленькая клавиатура занимает место, и нужно все время держать ее под рукой. Это все создает дополнительные неудобства.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
HotKeys exe
.zip 6,22Mb ver:1.0.1
93
93 Скачать бесплатно

Поэтому решил написать небольшое приложение на Python, чтобы максимально использовать основную клавиатуру.

 
Пример использования

 

Код на Python

 

 

import keyboard as k

def main():
    arr_config = read_config()
    if len(arr_config)==0:
        return 
    hot_keys_start(arr_config)

def read_config():   
    arr_config = []
    config = open('config.txt', encoding='utf-8')
    for row in config:
        # Разбиваем строку по разделителю
        split_result = row.split("<->")
        # Убираем лишние пробелы вокруг каждого элемента
        split_result = [item.strip() for item in split_result]
        if len(split_result)!=2:
            return []
        arr_config.append(split_result) 
    return arr_config     

def hot_keys_start(arr_config): 
    for row in arr_config:
        # Используем аргументы для передачи значений в лямбда-функцию
        hotkey_combination, write_value = row
        k.add_hotkey(hotkey_combination, lambda value=write_value: k.write(value))
    k.wait()

if __name__ == "__main__":
    main()

 

Для настройки комбинаций клавиш использую config.txt, который лежит в той же папке, что и файл запуска. Если вы его меняете, то нужно перезапустить приложение.

 

ctrl + 1 <-> ЕстьNull(  ,  )
ctrl + 2 <-> ВЫБОР КОГДА  ТОГДА  ИНАЧЕ  КОНЕЦ
ctrl + 3 <-> Значение(  )
ctrl + 4 <-> ВЫРАЗИТЬ(  КАК  )
ctrl + 5 <-> ДАТАВРЕМЯ(1,1,1)
ctrl + 6 <-> Значение(Справочник..ПУСТАЯССЫЛКА)
ctrl + 7 <-> НАЧАЛОПЕРИОДА(  , ДЕНЬ)
ctrl + 8 <-> ТИП(  )
ctrl + 9 <-> ТИПЗНАЧЕНИЯ(  )
ctrl + 0 <-> ЕСТЬ NULL
alt+\ <-> /
alt+1 <-> !
alt+2 <-> @
alt+3 <-> #
alt+4 <-> $
alt+5 <-> %
alt+6 <-> ^
alt+7 <-> &
alt+8 <-> *
alt+9 <-> (
alt+0 <-> )
alt+comma <-> ,
alt+dot <-> .
alt+; <-> ;
alt+/ <-> ?
alt+m <-> []
alt+n <-> {}
alt+b <-> <>

config.txt, чтобы alt временно переключал на английский

 

alt+q <-> q
alt+w <-> w
alt+e <-> e
alt+r <-> r
alt+t <-> t
alt+y <-> y
alt+u <-> u
alt+i <-> i
alt+o <-> o
alt+p <-> p
alt+a <-> a
alt+s <-> s
alt+d <-> d
alt+f <-> f
alt+g <-> g
alt+h <-> h
alt+j <-> j
alt+k <-> k
alt+l <-> l
alt+z <-> z
alt+x <-> x
alt+c <-> c
alt+v <-> v
alt+b <-> b
alt+n <-> n
alt+m <-> m

 

Тестировал: 

  • Платформа 1С:Предприятие 8.3 (8.3.22.1709).

hot keys горячие клавиши

См. также

Периферийные устройства Программист Платформа 1С v8.3 1С:Управление производственным предприятием Россия Абонемент ($m)

Обработка позволяет получить статус текущего принтера. Может быть полезна для разработчиков, например, когда необходимо получить принтеры и отправить документ на печать на активный принтер, или необходимо предупредить пользователя, что документ не может быть распечатан, так как текущий принтер не активный.

1 стартмани

31.12.2024    144    0    user821472    0    

0

Периферийные устройства Системный администратор Программист Платформа 1С v8.3 1С:Розница 2 Россия Абонемент ($m)

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

10 стартмани

14.11.2024    700    3    aximo    0    

3

Периферийные устройства Системный администратор Пользователь Платформа 1С v8.3 1С:Бухгалтерия 3.0 Абонемент ($m)

Простая в использовании обработка https://infostart.ru/1c/tools/1001819/ в целом решает поставленную задачу, но имеет явный недостаток - взаимодействует только с принтерами, подключенными к серверу. Доработанная версия позволяет работать как с принтерами на клиенте, так и на сервере

1 стартмани

30.08.2024    467    3    Sergey1CSpb    0    

4

Периферийные устройства Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Розничная и сетевая торговля (FMCG) Россия Абонемент ($m)

Расширение для вывода информации для покупателя из РМК на второй монитор. Также реализован вывод картинок из каталога в левую часть экрана покупателя. Разработано для УТ 11.5, УНФ 3.0.6 и 3.0.9.

1 стартмани

12.08.2024    1366    29    Rastopchinss    15    

3

Периферийные устройства Пользователь Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

Вывод для клиента на второй монитор (информационное табло) номера заказа в браузер (по умолчанию, например, Яндекс). Внешняя обработка может быть легко переделана под другие конфигурации (нужды) даже начинающим программистом.

1 стартмани

02.08.2024    784    0    AlOkt    0    

5

Периферийные устройства Программист Пользователь Платформа 1С v8.3 1С:Розница 3.0 Абонемент ($m)

Пример работы с эмулятором дисплея покупателя через библиотеку БПО.

6 стартмани

10.07.2024    824    6    aximo    0    

3

Периферийные устройства Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Речь пойдет не о сканерах штрихкодов 2D/3D/RF/распознавании лиц и прочего, а о старом добром аппарате, позволяющем считать страницу и отправить ее образ в ПК через COM/USB порт. Рассмотрим, как можно подключить и использовать сканер в типовых 1С-конфигурациях. И что делать, если никак не найти команду настройки сканера.

1 стартмани

28.05.2024    1191    Sergey1CSpb    2    

7
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Дмитрий74Чел 239 20.12.23 17:15 Сейчас в теме
Для читателей кто не в курсе: есть куча аналогов: https://chistov.pro/utilities/st83/, Снегопат, и прочие.
3. John_d 5906 20.12.23 17:37 Сейчас в теме
(1) конечно есть аналоги, но хотелось простую программку без кучи дополнительного функционала. В моей программе пользователь сам решает какие горячие клавиши у него будут.
Плюс привожу открытый код, который можно дописать под себя.
Olenevod; Crazy_Max; fancy; Automatik; +4 Ответить
8. unknown181538 159 20.12.23 21:24 Сейчас в теме
(1) Не все из них еще работают. Снегопат - громоздкая падучая, платная штука.
2. sergey279 178 20.12.23 17:33 Сейчас в теме
Евгений молодец, питона нам показал.

Недавно для английских закорючек, вспомнил про клавиатуру сансея
https://uc1.1c.ru/raskladka_chistova/

Единственный замеченный минус, в win 11 иногда возвращает еще и стандартную RUS раскладку. приходится заходить убирать.
4. John_d 5906 20.12.23 17:41 Сейчас в теме
(2) только клавиатура Чистова не настраивается
5. Vasvas05 27 20.12.23 19:25 Сейчас в теме
а ведь гугл скоро удалить его почту и диск, если не заходить два года... вроде как политика сервиса сейчас такая(
6. Дмитрий74Чел 239 20.12.23 19:47 Сейчас в теме
7. bestuzhev 684 20.12.23 20:55 Сейчас в теме
Чем скомпилировал py файл в exe?
11. John_d 5906 20.12.23 22:40 Сейчас в теме
9. unknown181538 159 20.12.23 21:25 Сейчас в теме
Удивился, что "|" нету в настройках по умолчанию - в первую очередь его ожидал.
mulla1979; +1 Ответить
13. John_d 5906 20.12.23 22:47 Сейчас в теме
(9) наверное я ей редко пользуюсь, потому забыл про нее. Когда запрос делаешь конструктором в модуле палочки автоматически ставятся.
jan-pechka; +1 Ответить
10. cdb 26 20.12.23 22:31 Сейчас в теме
Windows defender ругается на exe файл Trojan:Win64/Malgent!MSR
Попытался самостоятельно скомпилировать py в exe с помощью pyinstaller - тоже ругается на вирус.
Может кто знает как победить? добавить в доверенные антивируса - не вариант
12. John_d 5906 20.12.23 22:42 Сейчас в теме
(10) у меня не ругается. Если компилировать с флагом --noconsol тогда ругается
14. Altez 258 21.12.23 17:22 Сейчас в теме
Найс. Ещё бы сдобрить проверкой на класс активного окна, чтобы в других приложениях не работало.
20. John_d 5906 25.12.23 20:26 Сейчас в теме
(14) по-моему удобно, что работает во всех приложениях. К примеру если я захочу поставить "&" в комментарии на Инфостарт, то я нажму alt+7
15. FreeArcher 162 22.12.23 12:49 Сейчас в теме
Автору спасибо, буду пробовать.

(14)

Можно вот через такую функцию

def get_window():
    import psutil
    import ctypes
    from ctypes import wintypes

    pid = wintypes.DWORD()
    active = ctypes.windll.user32.GetForegroundWindow()
    active_window = ctypes.windll.user32.GetWindowThreadProcessId(active, ctypes.byref(pid))

    pid = pid.value
    for item in psutil.process_iter():
        if pid == item.pid:
            #print(item.name())
            return item.name()

    return ''
Показать


Автор может доработать скрипт
16. FreeArcher 162 23.12.23 17:41 Сейчас в теме
(10) поставь расширение файла .pyw и будет запускаться с подавление окна консоли
18. John_d 5906 25.12.23 11:59 Сейчас в теме
(16) Если ставить pyw, то Windows defender ругается на вирус, так же как и если поставить флаг --noconsol при компиляции
17. FreeArcher 162 23.12.23 17:43 Сейчас в теме
(3) Хорошо бы выход реализовать. Но судя по всему из за lambda sys.exit() не работает. Есть идеи, как можно реализовать?
19. John_d 5906 25.12.23 12:03 Сейчас в теме
(17) Да, я вначале делал программу с выводом в трей с кнопкой выход. Но т.к. консоль не получилось убрать Windows defender ругается на вирус, то я отказался от этой идее. При закрытии консоли и программа перестает работать.
21. 7OH 70 26.12.23 09:21 Сейчас в теме
А как настроить, чтобы как у Чистова было ?
Многим привычнее вариант, когда альт был просто "переключателем" на английскую раскладку "временно".
Как в линуксе 3\5-й слой.
Учить новые кнопки - на любителя.
А вот чем-то ещё забиндить ввод на другом языке - идея более корректная.
Если ещё и на линукс портировать можно будет - мммммм - я бы даже оплатил тут.
22. John_d 5906 27.12.23 12:40 Сейчас в теме
(21) чтобы alt переключал на английскую раскладку нужно в config.txt прописать для всех клавиш alt+q <-> q, alt+w <-> w, alt+e <-> e, alt+r <-> r
Altez; 7OH; +2 Ответить
23. John_d 5906 27.12.23 12:46 Сейчас в теме
(21) Попробую запустить на Ubuntu после НГ
24. gaglo 27.12.23 14:16 Сейчас в теме
В той статье Keypad для 1С-ника (точнее, в комментах) автор явно определил:
В RDP/VNC - сеансах софт, установленный локально, работать не будет.

Это и к вашей программе относится?
25. John_d 5906 27.12.23 17:41 Сейчас в теме
(24) проверил работает по RDP, но ее нужно будет запустить там на удаленном рабочем столе
26. leosoft 166 16.04.24 10:29 Сейчас в теме
Добрый день!

Скачал, запустил под Windows7 - выдал

"Запуск программы невозможен тк на компе отсутсвует api-ms-win-core-path-l1-1-0.dll

Что можно сделать?
28. kuzyara 2102 30.10.24 14:15 Сейчас в теме
Раскладка Русская для 1С
https://devtool1c.ucoz.ru/load/prochie/raskladka_russkaja_dlja_1s/2-1-0-22

Активно использую следующие хоткеи в раскладке от Сергея Старых :
alt + x -> [
alt + ъ -> ]
alt + б -> >
alt + ю -> <
Оставьте свое сообщение